1 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 ; 14 15 import javax.swing.DefaultComboBoxModel ; 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 parentType, String elementName) { 40 m_helper.init(parentType, elementName); 41 setModel(new DefaultComboBoxModel (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 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 item = getSelectedItem(); 88 String 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 ae) { 120 unset(); 121 } 122 } 123 } 124 | Popular Tags |