1 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.XCheckBox; 10 import org.terracotta.dso.editors.ConfigurationEditorPanel; 11 12 import java.awt.event.ActionEvent ; 13 14 public class XmlBooleanToggle extends XCheckBox 15 implements XmlObjectHolder 16 { 17 private XmlObjectHolderHelper m_helper; 18 private boolean m_listening; 19 20 public XmlBooleanToggle() { 21 super(); 22 m_helper = new XmlObjectHolderHelper(); 23 getActionMap().put(RESET, new ResetAction()); 24 getInputMap().put(RESET_STROKE, RESET); 25 } 26 27 protected void ensureXmlObject() { 28 ConfigurationEditorPanel parent = (ConfigurationEditorPanel) 29 getAncestorOfClass(ConfigurationEditorPanel.class, this); 30 31 if(parent != null) { 32 parent.ensureXmlObject(); 33 } 34 } 35 36 public void init(Class parentClass, String elementName) { 37 m_helper.init(parentClass, elementName); 38 } 39 40 public void setup(XmlObject parent) { 41 m_listening = false; 42 m_helper.setup(parent); 43 setSelected(booleanValue()); 44 if(isSet()) { 45 m_helper.validateXmlObject(this); 46 } 47 m_listening = true; 48 } 49 50 protected void fireActionPerformed(ActionEvent ae) { 51 if(m_listening) { 52 set(); 53 } 54 super.fireActionPerformed(ae); 55 } 56 57 public void tearDown() { 58 m_helper.tearDown(); 59 m_listening = false; 60 setSelected(false); 61 } 62 63 public boolean booleanValue() { 64 return isSet() ? m_helper.getBoolean() : m_helper.defaultBoolean(); 65 } 66 67 public boolean isRequired() { 68 return m_helper.isRequired(); 69 } 70 71 public boolean isSet() { 72 return m_helper.isSet(); 73 } 74 75 public void set() { 76 boolean isSelected = isSelected(); 77 String s = Boolean.toString(isSelected); 78 79 ensureXmlObject(); 80 m_helper.set(s); 81 setSelected(isSelected); 82 m_helper.validateXmlObject(this); 83 } 84 85 public void unset() { 86 if(!isRequired()) { 87 m_listening = false; 88 m_helper.unset(); 89 setSelected(m_helper.defaultBoolean()); 90 m_listening = true; 91 } 92 } 93 94 public synchronized void addXmlObjectStructureListener(XmlObjectStructureListener listener) { 95 m_helper.addXmlObjectStructureListener(listener); 96 } 97 98 public synchronized void removeXmlObjectStructureListener(XmlObjectStructureListener listener) { 99 m_helper.removeXmlObjectStructureListener(listener); 100 } 101 102 class ResetAction extends XAbstractAction { 103 ResetAction() { 104 super("Reset"); 105 setShortDescription("Reset to default value"); 106 } 107 108 public void actionPerformed(ActionEvent ae) { 109 unset(); 110 } 111 } 112 } 113 | Popular Tags |