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.beans.PropertyChangeEvent;
8   import java.beans.PropertyChangeListener;
9   import java.util.Properties;
10  
11  import javax.swing.JCheckBox;
12  
13  /**
14   * 
15   * @author Mark Donszelmann
16   * @version $Id: OptionCheckBox.java 8584 2006-08-10 23:06:37Z duns $
17   */
18  public class OptionCheckBox extends JCheckBox implements Options {
19      protected boolean initialState;
20  
21      protected String key;
22  
23      public OptionCheckBox(Properties options, String key, String text) {
24          super(text, new Boolean(options.getProperty(key, "false"))
25                  .booleanValue());
26          this.key = key;
27          initialState = isSelected();
28      }
29  
30      public boolean applyChangedOptions(Properties options) {
31          if (isSelected() != initialState) {
32              options.setProperty(key, Boolean.toString(isSelected()));
33              return true;
34          }
35          return false;
36      }
37  
38      /**
39       * Enables (otherwise disables) the supplied component if this checkbox is
40       * checked. Can be called for multiple components.
41       */
42      public void enables(final Component c) {
43          if (c.isEnabled()) {
44              c.setEnabled(isSelected());
45  
46              // selecting
47              addItemListener(new ItemListener() {
48                  public void itemStateChanged(ItemEvent e) {
49                      c.setEnabled(isSelected());
50                  }
51              });
52  
53              // disabling
54              addPropertyChangeListener("enabled", new PropertyChangeListener() {
55                  public void propertyChange(PropertyChangeEvent e) {
56                      if (e.getNewValue().equals(Boolean.TRUE)) {
57                          c.setEnabled(isSelected());
58                      } else {
59                          c.setEnabled(false);
60                      }
61                  }
62              });
63          }
64      }
65  
66      /**
67       * Disabled (otherwise enables) the supplied component if this checkbox is
68       * checked. Can be called for multiple components.
69       */
70      public void disables(final Component c) {
71          if (c.isEnabled()) {
72              c.setEnabled(!isSelected());
73  
74              // selecting
75              addItemListener(new ItemListener() {
76                  public void itemStateChanged(ItemEvent e) {
77                      c.setEnabled(!isSelected());
78                  }
79              });
80  
81              // disabling
82              addPropertyChangeListener("enabled", new PropertyChangeListener() {
83                  public void propertyChange(PropertyChangeEvent e) {
84                      if (e.getNewValue().equals(Boolean.TRUE)) {
85                          c.setEnabled(!isSelected());
86                      } else {
87                          c.setEnabled(false);
88                      }
89                  }
90              });
91          }
92      }
93  
94      /**
95       * Shows (otherwise hides) the supplied component if this checkbox is
96       * checked. Can be called for multiple components.
97       */
98      public void shows(final Component c) {
99          c.setVisible(isSelected());
100 
101         addItemListener(new ItemListener() {
102             public void itemStateChanged(ItemEvent e) {
103                 c.setVisible(isSelected());
104             }
105         });
106     }
107 
108     /**
109      * Hides (otherwise shows) the supplied component if this checkbox is
110      * checked. Can be called for multiple components.
111      */
112     public void hides(final Component c) {
113         c.setVisible(!isSelected());
114 
115         addItemListener(new ItemListener() {
116             public void itemStateChanged(ItemEvent e) {
117                 c.setVisible(!isSelected());
118             }
119         });
120     }
121 }