1   /*
2    *  Copyright (c) 1998-2001, The University of Sheffield.
3    *
4    *  This file is part of GATE (see http://gate.ac.uk/), and is free
5    *  software, licenced under the GNU Library General Public License,
6    *  Version 2, June 1991 (in the distribution as file licence.html,
7    *  and also available at http://gate.ac.uk/gate/licence.html).
8    *
9    *  Valentin Tablan 06/03/2001
10   *
11   *  $Id: XJTextPane.java,v 1.3 2001/11/16 15:15:29 valyt Exp $
12   *
13   */
14  
15  package gate.swing;
16  
17  import javax.swing.*;
18  import javax.swing.text.*;
19  import java.beans.*;
20  import java.awt.*;
21  
22  /**
23   * A custom JTextPane that reinitialises the default font style when th UI
24   * changes. This is needed by applications that want to be able to change the
25   * font in the entire application by changing the UI defaults table.
26   */
27  public class XJTextPane extends JTextPane {
28  
29    public XJTextPane() {
30      super();
31      initListeners();
32      updateStyle();
33    }
34  
35    public XJTextPane(StyledDocument doc) {
36      super(doc);
37      initListeners();
38      updateStyle();
39    }
40  
41    protected void initListeners(){
42      addPropertyChangeListener(new PropertyChangeListener() {
43        public void propertyChange(PropertyChangeEvent e) {
44          if(e.getPropertyName().equals("UI")){
45            updateStyle();
46          }else if(e.getPropertyName().equals("document")){
47            updateStyle();
48          }
49        }
50      });
51    }
52  
53    protected void updateStyle(){
54      Font newFont = UIManager.getFont("TextPane.font");
55      Style defaultStyle = getStyle("default");
56      StyleConstants.setFontFamily(defaultStyle, newFont.getFamily());
57      StyleConstants.setFontSize(defaultStyle, newFont.getSize());
58      StyleConstants.setItalic(defaultStyle, newFont.isItalic());
59      StyleConstants.setBold(defaultStyle, newFont.isBold());
60      repaint();
61    }
62  }