1 4 package org.terracotta.dso.editors; 5 6 import org.dijon.ContainerResource; 7 8 import org.terracotta.dso.editors.xmlbeans.XmlObjectStructureChangeEvent; 9 import org.terracotta.dso.editors.xmlbeans.XmlObjectStructureListener; 10 import com.terracottatech.config.DsoServerData; 11 import com.terracottatech.config.Server; 12 13 import javax.swing.event.ChangeEvent ; 14 import javax.swing.event.ChangeListener ; 15 16 public class DsoServerDataPanel extends ConfigurationEditorPanel 17 implements ChangeListener , 18 XmlObjectStructureListener 19 { 20 private Server m_server; 21 private DsoServerData m_dsoServerData; 22 private GarbageCollectionPanel m_garbageCollectionPanel; 23 private PersistencePanel m_persistencePanel; 24 25 public DsoServerDataPanel() { 26 super(); 27 } 28 29 public void load(ContainerResource containerRes) { 30 super.load(containerRes); 31 32 m_garbageCollectionPanel = 33 (GarbageCollectionPanel)findComponent("GarbageCollectionPanel"); 34 m_persistencePanel = 35 (PersistencePanel)findComponent("PersistencePanel"); 36 } 37 38 public void ensureXmlObject() { 39 super.ensureXmlObject(); 40 41 if(m_dsoServerData == null) { 42 removeListeners(); 43 m_dsoServerData = m_server.addNewDso(); 44 updateChildren(); 45 addListeners(); 46 } 47 } 48 49 public boolean hasAnySet() { 50 return m_dsoServerData != null && 51 (m_dsoServerData.isSetGarbageCollection() || 52 m_dsoServerData.isSetPersistence()); 53 } 54 55 public void stateChanged(ChangeEvent e) { 56 setDirty(); 57 } 58 59 public void structureChanged(XmlObjectStructureChangeEvent e) { 60 syncModel(); 61 } 62 63 private void syncModel() { 64 if(!hasAnySet() && m_server.getDso() != null) { 65 m_server.unsetDso(); 66 m_dsoServerData = null; 67 fireXmlObjectStructureChanged(); 68 updateChildren(); 69 } 70 else { 71 setDirty(); 72 } 73 } 74 75 private void fireXmlObjectStructureChanged() { 76 fireXmlObjectStructureChanged(m_server); 77 } 78 79 private void addListeners() { 80 m_garbageCollectionPanel.addXmlObjectStructureListener(this); 81 m_persistencePanel.addXmlObjectStructureListener(this); 82 } 83 84 private void removeListeners() { 85 m_garbageCollectionPanel.removeXmlObjectStructureListener(this); 86 m_persistencePanel.removeXmlObjectStructureListener(this); 87 } 88 89 private void updateChildren() { 90 m_garbageCollectionPanel.setup(m_dsoServerData); 91 m_persistencePanel.setup(m_dsoServerData); 92 } 93 94 public void setup(Server server) { 95 setEnabled(true); 96 removeListeners(); 97 98 m_server = server; 99 m_dsoServerData = m_server != null ? m_server.getDso() : null; 100 101 updateChildren(); 102 addListeners(); 103 } 104 105 public void tearDown() { 106 removeListeners(); 107 108 m_server = null; 109 m_dsoServerData = null; 110 111 m_garbageCollectionPanel.tearDown(); 112 m_persistencePanel.tearDown(); 113 114 setEnabled(false); 115 } 116 } 117 | Popular Tags |