KickJava   Java API By Example, From Geeks To Geeks.

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


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.StringEnumAbstractBase;
7 import org.apache.xmlbeans.XmlObject;
8
9 import com.tc.admin.common.XAbstractAction;
10 import com.tc.admin.common.XComboBox;
11 import org.terracotta.dso.editors.ConfigurationEditorPanel;
12
13 import java.awt.event.ActionEvent JavaDoc;
14
15 import javax.swing.DefaultComboBoxModel JavaDoc;
16
17 public class XmlStringEnumCombo extends XComboBox
18   implements XmlObjectHolder
19 {
20   private XmlObjectHolderHelper m_helper;
21   private boolean m_listening;
22   
23   public XmlStringEnumCombo() {
24     super();
25     m_helper = new XmlObjectHolderHelper();
26     getActionMap().put(RESET, new ResetAction());
27     getInputMap().put(RESET_STROKE, RESET);
28   }
29   
30   protected void ensureXmlObject() {
31     ConfigurationEditorPanel parent = (ConfigurationEditorPanel)
32       getAncestorOfClass(ConfigurationEditorPanel.class, this);
33     
34     if(parent != null) {
35       parent.ensureXmlObject();
36     }
37   }
38   
39   public void init(Class JavaDoc parentType, String JavaDoc elementName) {
40     m_helper.init(parentType, elementName);
41     setModel(new DefaultComboBoxModel JavaDoc(m_helper.getEnumValues()));
42   }
43
44   public void setup(XmlObject parent) {
45     m_listening = false;
46     m_helper.setup(parent);
47     setSelectedItem(enumValue());
48     if(isSet()) {
49       m_helper.validateXmlObject(this);
50     }
51     m_listening = true;
52   }
53
54   public void tearDown() {
55     m_helper.tearDown();
56     m_listening = false;
57   }
58   
59   protected void fireActionEvent() {
60     if(m_listening) {
61       set();
62     }
63     super.fireActionEvent();
64   }
65   
66   public String JavaDoc getSelectedEnumString() {
67     return getSelectedItem().toString();
68   }
69   
70   public int getSelectedEnumInt() {
71     return ((StringEnumAbstractBase)getSelectedItem()).intValue();
72   }
73   
74   public StringEnumAbstractBase enumValue() {
75     return isSet() ? m_helper.getEnumValue() : m_helper.defaultEnumValue();
76   }
77   
78   public boolean isRequired() {
79     return m_helper.isRequired();
80   }
81   
82   public boolean isSet() {
83     return m_helper.isSet();
84   }
85   
86   public void set() {
87     Object JavaDoc item = getSelectedItem();
88     String JavaDoc s = item.toString();
89     
90     ensureXmlObject();
91     m_helper.set(s);
92     setSelectedItem(item);
93     m_helper.validateXmlObject(this);
94   }
95   
96   public void unset() {
97     if(!isRequired()) {
98       m_listening = false;
99       m_helper.unset();
100       setSelectedItem(m_helper.defaultEnumValue());
101       m_listening = true;
102     }
103   }
104   
105   public synchronized void addXmlObjectStructureListener(XmlObjectStructureListener listener) {
106     m_helper.addXmlObjectStructureListener(listener);
107   }
108
109   public synchronized void removeXmlObjectStructureListener(XmlObjectStructureListener listener) {
110     m_helper.removeXmlObjectStructureListener(listener);
111   }
112
113   class ResetAction extends XAbstractAction {
114     ResetAction() {
115       super("Reset");
116       setShortDescription("Reset to default value");
117     }
118     
119     public void actionPerformed(ActionEvent JavaDoc ae) {
120       unset();
121     }
122   }
123 }
124
Popular Tags