View Javadoc

1   // Copyright 2003, FreeHEP.
2   package org.freehep.graphicsio.exportchooser;
3   
4   import java.awt.Component;
5   import java.awt.event.ItemEvent;
6   import java.awt.event.ItemListener;
7   import java.util.Properties;
8   
9   import javax.swing.AbstractButton;
10  import javax.swing.JComboBox;
11  
12  /**
13   * 
14   * @author Mark Donszelmann
15   * @version $Id: OptionComboBox.java 8584 2006-08-10 23:06:37Z duns $
16   */
17  public class OptionComboBox extends JComboBox implements Options {
18      protected String initialSelectedItem;
19  
20      protected String key;
21  
22      public OptionComboBox(Properties options, String key, String[] values) {
23          super(values);
24          setSelectedItem(options.getProperty(key, values[0]));
25          setEnabled(values.length > 1);
26          this.key = key;
27          initialSelectedItem = (String) getSelectedItem();
28      }
29  
30      public boolean applyChangedOptions(Properties options) {
31          if (!getSelectedItem().equals(initialSelectedItem)) {
32              options.setProperty(key, (String) getSelectedItem());
33              return true;
34          }
35          return false;
36      }
37  
38      /**
39       * Enables (otherwise disables) the supplied component if this item is
40       * checked. Can be called for multiple components.
41       */
42      public void enables(final String item, final Component c) {
43          if (c.isEnabled()) {
44              c.setEnabled(getSelectedItem().equals(item));
45  
46              addItemListener(new ItemListener() {
47                  public void itemStateChanged(ItemEvent e) {
48                      c.setEnabled(getSelectedItem().equals(item));
49                  }
50              });
51          }
52      }
53  
54      /**
55       * Shows (otherwise hides) the supplied component if this item is selected.
56       * Can be called for multiple components.
57       */
58      public void shows(final String item, final Component c) {
59          c.setVisible(getSelectedItem().equals(item));
60  
61          addItemListener(new ItemListener() {
62              public void itemStateChanged(ItemEvent e) {
63                  c.setVisible(getSelectedItem().equals(item));
64              }
65          });
66      }
67  
68      /**
69       * Selects (or deselects) the supplied abstract button if this item is
70       * selected. Can be called for multiple components and items.
71       */
72      public void selects(final String item, final AbstractButton c) {
73          c.setSelected(getSelectedItem().equals(item));
74  
75          addItemListener(new ItemListener() {
76              public void itemStateChanged(ItemEvent e) {
77                  c.setSelected(getSelectedItem().equals(item));
78              }
79          });
80      }
81  }