1
14
15 package gate.swing;
16
17 import java.awt.Font;
18 import java.beans.PropertyChangeEvent;
19 import java.beans.PropertyChangeListener;
20
21 import javax.swing.JTextPane;
22 import javax.swing.UIManager;
23 import javax.swing.text.*;
24
25
30 public class XJTextPane extends JTextPane {
31
32 public XJTextPane() {
33 super();
34 initListeners();
35 updateStyle();
36 }
37
38 public XJTextPane(StyledDocument doc) {
39 super(doc);
40 initListeners();
41 updateStyle();
42 }
43
44 protected void initListeners(){
45 addPropertyChangeListener(new PropertyChangeListener() {
46 public void propertyChange(PropertyChangeEvent e) {
47 if(e.getPropertyName().equals("UI")){
48 updateStyle();
49 }else if(e.getPropertyName().equals("document")){
50 updateStyle();
51 }
52 }
53 });
54 }
55
56 protected void updateStyle(){
57 Font newFont = UIManager.getFont("TextPane.font");
58 Style defaultStyle = getStyle("default");
59 StyleConstants.setFontFamily(defaultStyle, newFont.getFamily());
60 StyleConstants.setFontSize(defaultStyle, newFont.getSize());
61 StyleConstants.setItalic(defaultStyle, newFont.isItalic());
62 StyleConstants.setBold(defaultStyle, newFont.isBold());
63 repaint();
64 }
65 }