Save This Page
Home » hibernate-search-src-20081106 » example » [javadoc | source]
    1   package example;
    2   
    3   import java.awt;
    4   import java.awt.event;
    5   import java.beans;
    6   
    7   import javax.swing;
    8   import javax.swing.border.EmptyBorder;
    9   
   10   /**
   11    * Select a font
   12    */
   13   
   14   public class FontChooser extends JPanel 
   15       implements PropertyChangeListener, ItemListener {
   16       protected Font specifiedFont = new Font ("Serif", Font.PLAIN, 10);
   17       protected JComboBox name;
   18       protected JCheckBox bold, italic;
   19       protected NumberChooser size;
   20       protected static String[] availableFonts = null;
   21     
   22       public FontChooser () {
   23           setLayout (new GridLayout (2, 2));
   24           if (availableFonts == null){
   25               GraphicsEnvironment ge = 
   26                   GraphicsEnvironment.getLocalGraphicsEnvironment();
   27               availableFonts = ge.getAvailableFontFamilyNames();
   28           }
   29           name = new JComboBox (availableFonts);
   30           name.setSelectedItem (specifiedFont.getName ());
   31           name.addItemListener (this);
   32           add(name);
   33           size = new NumberChooser(1, 128, specifiedFont.getSize());
   34           add (size);
   35           size.setColumns (3);
   36           size.addPropertyChangeListener (this);
   37           add (bold = new JCheckBox ("bold"));
   38           bold.setSelected (specifiedFont.isBold ());
   39           bold.addItemListener (this);
   40           add (italic = new JCheckBox ("italic"));
   41           italic.setSelected (specifiedFont.isItalic ());
   42           italic.addItemListener (this);
   43       }
   44   
   45       public void setSpecifiedFont(Font f) {
   46           name.setSelectedItem (f.getName ());
   47           bold.setSelected (f.isBold ());
   48           italic.setSelected (f.isItalic ());
   49           size.setValue (f.getSize ());
   50           fireStateChange ();
   51       }
   52   
   53       public Font getSpecifiedFont () {
   54           return new Font ((String)name.getSelectedItem (), 
   55                            (bold.isSelected() ? Font.BOLD: 0) |
   56                            (italic.isSelected() ? Font.ITALIC: 0),
   57                            size.getValue());
   58       }
   59     
   60       public void itemStateChanged (ItemEvent e) {
   61           fireStateChange();
   62       }
   63   
   64       public void propertyChange (PropertyChangeEvent e) {
   65           fireStateChange();
   66       }
   67   
   68       protected PropertyChangeSupport listeners =
   69           new PropertyChangeSupport (this);
   70   
   71       public void addPropertyChangeListener(PropertyChangeListener l) {
   72           listeners.addPropertyChangeListener (l);
   73       }
   74   
   75       public void removePropertyChangeListener(PropertyChangeListener l) {
   76           listeners.removePropertyChangeListener (l);
   77       }
   78   
   79       /** update our internal font, then tell everyone about it */
   80       protected void fireStateChange() {
   81           Font oldFont = specifiedFont;
   82           specifiedFont = getSpecifiedFont();
   83           listeners.firePropertyChange ("style", oldFont, specifiedFont);
   84       }
   85   
   86       /** Put up a frame containing a font chooser to make it easy for a script
   87        * to play with.
   88        */
   89       public static void main(String[] args) {
   90           final JFrame frame = new JFrame("Font Chooser unit test");
   91           frame.addWindowListener(new WindowAdapter() {
   92               public void windowClosing(WindowEvent e) {
   93                   frame.dispose();
   94               }
   95           });
   96           final JPanel panel = new JPanel(new BorderLayout());
   97           //panel.setBorder(new EmptyBorder(10, 10, 10, 10));
   98           String text = "The quick brown fox jumped over the lazy dog";
   99           FontChooser chooser = new FontChooser();
  100           panel.add(chooser, BorderLayout.NORTH);
  101           final JLabel label = new JLabel(text);
  102           panel.add(label, BorderLayout.CENTER);
  103           label.setFont(chooser.getSpecifiedFont());
  104           frame.getContentPane().add(panel);
  105           ((JPanel)frame.getContentPane()).setBorder(new EmptyBorder(4,4,4,4));
  106           
  107           // Position the frame away from the screen edge to avoid stupid
  108           // toolbars and such
  109           frame.setLocation(new Point(50, 50));
  110           frame.setSize(400, 300);
  111           frame.pack();
  112   
  113           Dimension s1 = panel.getPreferredSize();
  114           Dimension s2 = frame.getPreferredSize();
  115           final int hoff = s2.height - s1.height;
  116           final int width = s2.width;
  117           chooser.addPropertyChangeListener(new PropertyChangeListener() {
  118               public void propertyChange(PropertyChangeEvent ev) {
  119                   label.setFont((Font)ev.getNewValue());
  120                   if (frame != null) {
  121                       Dimension size = panel.getPreferredSize();
  122                       size.height += hoff;
  123                       size.width = width;
  124                       frame.setSize(size);
  125                   }
  126               }
  127           });
  128           frame.setVisible(true);
  129       }
  130   }
  131   

Save This Page
Home » hibernate-search-src-20081106 » example » [javadoc | source]