KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > terracotta > dso > editors > xmlbeans > XmlIntegerSpinner


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package org.terracotta.dso.editors.xmlbeans;
5
6 import org.apache.xmlbeans.XmlObject;
7
8 import com.tc.admin.common.XAbstractAction;
9 import com.tc.admin.common.XSpinner;
10 import org.terracotta.dso.editors.ConfigurationEditorPanel;
11
12 import java.awt.event.ActionEvent JavaDoc;
13
14 import javax.swing.JFormattedTextField JavaDoc;
15 import javax.swing.SpinnerNumberModel JavaDoc;
16
17 public class XmlIntegerSpinner extends XSpinner
18   implements XmlObjectHolder
19 {
20   private XmlObjectHolderHelper m_helper;
21   private boolean m_listening;
22
23   public XmlIntegerSpinner() {
24     super();
25     m_helper = new XmlObjectHolderHelper();
26     
27     getActionMap().put(RESET, new ResetAction());
28     getInputMap(WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(RESET_STROKE, RESET);
29   }
30
31   private JFormattedTextField JavaDoc getTextField() {
32     return ((DefaultEditor)getEditor()).getTextField();
33   }
34   
35   protected void ensureXmlObject() {
36     ConfigurationEditorPanel parent = (ConfigurationEditorPanel)
37       getAncestorOfClass(ConfigurationEditorPanel.class, this);
38     
39     if(parent != null) {
40       parent.ensureXmlObject();
41     }
42   }
43   
44   private SpinnerNumberModel JavaDoc getSpinnerNumberModel() {
45     return (SpinnerNumberModel JavaDoc)getModel();
46   }
47   
48   private void setSpinnerValue(Number JavaDoc value) {
49     getSpinnerNumberModel().setValue(value);
50   }
51   
52   public Number JavaDoc getNumber() {
53     return getSpinnerNumberModel().getNumber();
54   }
55   
56   public void setup(XmlObject parent) {
57     m_listening = false;
58     m_helper.setup(parent);
59     setSpinnerValue(integerValue());
60     if(isSet()) {
61       m_helper.validateXmlObject(this);
62     }
63     m_listening = true;
64   }
65
66   public void init(Class JavaDoc parentClass, String JavaDoc elementName) {
67     m_helper.init(parentClass, elementName);
68     setModel(new SpinnerNumberModel JavaDoc(m_helper.defaultIntegerValue(),
69                                     m_helper.minInclusive(),
70                                     m_helper.maxInclusive(),
71                                     new Integer JavaDoc(1)));
72   }
73
74   protected void fireStateChanged() {
75     if(m_listening) {
76       set();
77     }
78     super.fireStateChanged();
79   }
80   
81   public void tearDown() {
82     m_helper.tearDown();
83     m_listening = false;
84     setSpinnerValue(m_helper.defaultIntegerValue());
85   }
86   
87   public Integer JavaDoc integerValue() {
88     return isSet() ? m_helper.getIntegerValue() : m_helper.defaultIntegerValue();
89   }
90   
91   public boolean isRequired() {
92     return m_helper.isRequired();
93   }
94   
95   public boolean isSet() {
96     return m_helper.isSet();
97   }
98   
99   public void set() {
100     int iVal = getNumber().intValue();
101     
102     ensureXmlObject();
103     m_helper.set(Integer.toString(iVal));
104     setSpinnerValue(new Integer JavaDoc(iVal));
105     m_helper.validateXmlObject(this);
106   }
107   
108   public void unset() {
109     if(!isRequired()) {
110       m_listening = false;
111       m_helper.unset();
112       Integer JavaDoc iVal = m_helper.defaultIntegerValue();
113       setSpinnerValue(iVal);
114       getTextField().setValue(iVal);
115       m_listening = true;
116     }
117   }
118   
119   public synchronized void addXmlObjectStructureListener(XmlObjectStructureListener listener) {
120     m_helper.addXmlObjectStructureListener(listener);
121   }
122
123   public synchronized void removeXmlObjectStructureListener(XmlObjectStructureListener listener) {
124     m_helper.removeXmlObjectStructureListener(listener);
125   }
126
127   class ResetAction extends XAbstractAction {
128     ResetAction() {
129       super("Reset");
130       setShortDescription("Reset to default value");
131     }
132     
133     public void actionPerformed(ActionEvent JavaDoc ae) {
134       unset();
135     }
136   }
137 }
138
Popular Tags