KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > terracotta > dso > editors > PersistencePanel


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;
5
6 import org.dijon.ContainerResource;
7 import org.dijon.Label;
8
9 import org.terracotta.dso.editors.xmlbeans.XmlObjectStructureChangeEvent;
10 import org.terracotta.dso.editors.xmlbeans.XmlObjectStructureListener;
11 import org.terracotta.dso.editors.xmlbeans.XmlStringEnumCombo;
12 import com.terracottatech.config.DsoServerData;
13 import com.terracottatech.config.Persistence;
14
15 import java.awt.event.ActionEvent JavaDoc;
16 import java.awt.event.ActionListener JavaDoc;
17 import java.awt.event.MouseAdapter JavaDoc;
18 import java.awt.event.MouseEvent JavaDoc;
19
20 import javax.swing.event.ChangeEvent JavaDoc;
21 import javax.swing.event.ChangeListener JavaDoc;
22
23 public class PersistencePanel extends ConfigurationEditorPanel
24   implements ActionListener JavaDoc,
25              ChangeListener JavaDoc,
26              XmlObjectStructureListener
27 {
28   private DsoServerData m_dsoServerData;
29   private Persistence m_persistence;
30   private XmlStringEnumCombo m_persistenceCombo;
31   private Label m_persistenceComboLabel;
32
33   public PersistencePanel() {
34     super();
35   }
36   
37   public void load(ContainerResource containerRes) {
38     super.load(containerRes);
39     
40     m_persistenceCombo = (XmlStringEnumCombo)findComponent("PersistenceCombo");
41     m_persistenceCombo.init(Persistence.class, "mode");
42     
43     m_persistenceComboLabel = (Label)findComponent("PersistenceComboLabel");
44     m_persistenceComboLabel.addMouseListener(new MouseAdapter JavaDoc() {
45       public void mouseClicked(MouseEvent JavaDoc me) {
46         if(me.getClickCount() == 1) {
47           m_persistenceCombo.unset();
48         }
49       }
50     });
51   }
52
53   public void ensureXmlObject() {
54     super.ensureXmlObject();
55
56     if(m_persistence == null) {
57       removeListeners();
58       m_persistence = m_dsoServerData.addNewPersistence();
59       updateChildren();
60       addListeners();
61     }
62   }
63   
64   public boolean hasAnySet() {
65     return m_persistence != null &&
66            m_persistence.isSetMode();
67   }
68
69   public void actionPerformed(ActionEvent JavaDoc ae) {
70     setDirty();
71   }
72   
73   public void stateChanged(ChangeEvent e) {
74     setDirty();
75   }
76   
77   public void structureChanged(XmlObjectStructureChangeEvent e) {
78     syncModel();
79   }
80   
81   private void syncModel() {
82     if(!hasAnySet() && m_dsoServerData.getPersistence() != null) {
83       m_dsoServerData.unsetPersistence();
84       m_persistence = null;
85       fireXmlObjectStructureChanged();
86       updateChildren();
87     }
88     else {
89       setDirty();
90     }
91   }
92
93   private void fireXmlObjectStructureChanged() {
94     fireXmlObjectStructureChanged(m_dsoServerData);
95   }
96   
97   private void addListeners() {
98     m_persistenceCombo.addActionListener(this);
99     m_persistenceCombo.addXmlObjectStructureListener(this);
100
101   }
102   
103   private void removeListeners() {
104     m_persistenceCombo.removeActionListener(this);
105     m_persistenceCombo.removeXmlObjectStructureListener(this);
106
107   }
108   
109   private void updateChildren() {
110     m_persistenceCombo.setup(m_persistence);
111   }
112
113   public void setup(DsoServerData dsoServerData) {
114     setEnabled(true);
115     removeListeners();
116
117     m_dsoServerData = dsoServerData;
118     m_persistence = m_dsoServerData != null ?
119                       m_dsoServerData.getPersistence() : null;
120     
121     updateChildren();
122     addListeners();
123   }
124   
125   public void tearDown() {
126     removeListeners();
127
128     m_dsoServerData = null;
129     m_persistence = null;
130     
131     m_persistenceCombo.tearDown();
132
133     setEnabled(false);
134   }
135 }
136
Popular Tags