KickJava   Java API By Example, From Geeks To Geeks.

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


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.XmlBooleanToggle;
10 import org.terracotta.dso.editors.xmlbeans.XmlIntegerSpinner;
11 import org.terracotta.dso.editors.xmlbeans.XmlObjectStructureChangeEvent;
12 import org.terracotta.dso.editors.xmlbeans.XmlObjectStructureListener;
13 import com.terracottatech.config.DsoServerData;
14 import com.terracottatech.config.GarbageCollection;
15
16 import java.awt.event.ActionEvent JavaDoc;
17 import java.awt.event.ActionListener JavaDoc;
18 import java.awt.event.MouseAdapter JavaDoc;
19 import java.awt.event.MouseEvent JavaDoc;
20
21 import javax.swing.event.ChangeEvent JavaDoc;
22 import javax.swing.event.ChangeListener JavaDoc;
23
24 public class GarbageCollectionPanel extends ConfigurationEditorPanel
25   implements ActionListener JavaDoc,
26              ChangeListener JavaDoc,
27              XmlObjectStructureListener
28 {
29   private DsoServerData m_dsoServerData;
30   private GarbageCollection m_garbageCollection;
31   private XmlBooleanToggle m_isGcEnabled;
32   private XmlBooleanToggle m_isVerboseGc;
33   private XmlIntegerSpinner m_gcInterval;
34   private Label m_gcIntervalLabel;
35
36   public GarbageCollectionPanel() {
37     super();
38   }
39   
40   public void load(ContainerResource containerRes) {
41     super.load(containerRes);
42     
43
44     m_isGcEnabled = (XmlBooleanToggle)findComponent("IsGCEnabled");
45     m_isGcEnabled.init(GarbageCollection.class, "enabled");
46
47     m_isVerboseGc = (XmlBooleanToggle)findComponent("IsVerboseGC");
48     m_isVerboseGc.init(GarbageCollection.class, "verbose");
49
50     m_gcInterval = (XmlIntegerSpinner)findComponent("GCInterval");
51     m_gcInterval.init(GarbageCollection.class, "interval");
52     
53     m_gcIntervalLabel = (Label)findComponent("GCIntervalLabel");
54     m_gcIntervalLabel.addMouseListener(new MouseAdapter JavaDoc() {
55       public void mouseClicked(MouseEvent JavaDoc me) {
56         if(me.getClickCount() == 1) {
57           m_gcInterval.unset();
58         }
59       }
60     });
61   }
62
63   public void ensureXmlObject() {
64     super.ensureXmlObject();
65
66     if(m_garbageCollection == null) {
67       removeListeners();
68       m_garbageCollection = m_dsoServerData.addNewGarbageCollection();
69       updateChildren();
70       addListeners();
71     }
72   }
73   
74   public boolean hasAnySet() {
75     return m_garbageCollection != null &&
76           (m_garbageCollection.isSetEnabled() ||
77            m_garbageCollection.isSetVerbose() ||
78            m_garbageCollection.isSetInterval());
79   }
80   
81   public void actionPerformed(ActionEvent JavaDoc ae) {
82     setDirty();
83   }
84   
85   public void stateChanged(ChangeEvent e) {
86     setDirty();
87   }
88   
89   public void structureChanged(XmlObjectStructureChangeEvent e) {
90     syncModel();
91   }
92   
93   private void syncModel() {
94     if(!hasAnySet() && m_dsoServerData.getGarbageCollection() != null) {
95       m_dsoServerData.unsetGarbageCollection();
96       m_garbageCollection = null;
97       fireXmlObjectStructureChanged();
98       updateChildren();
99     }
100     else {
101       setDirty();
102     }
103   }
104
105   private void fireXmlObjectStructureChanged() {
106     fireXmlObjectStructureChanged(m_dsoServerData);
107   }
108   
109   private void addListeners() {
110     m_isGcEnabled.addActionListener(this);
111     m_isGcEnabled.addXmlObjectStructureListener(this);
112
113     m_isVerboseGc.addActionListener(this);
114     m_isVerboseGc.addXmlObjectStructureListener(this);
115
116     m_gcInterval.addChangeListener(this);
117     m_gcInterval.addXmlObjectStructureListener(this);
118   }
119   
120   private void removeListeners() {
121     m_isGcEnabled.removeActionListener(this);
122     m_isGcEnabled.removeXmlObjectStructureListener(this);
123
124     m_isVerboseGc.removeActionListener(this);
125     m_isVerboseGc.removeXmlObjectStructureListener(this);
126
127     m_gcInterval.removeChangeListener(this);
128     m_gcInterval.removeXmlObjectStructureListener(this);
129   }
130   
131
132   private void updateChildren() {
133     m_isGcEnabled.setup(m_garbageCollection);
134     m_isVerboseGc.setup(m_garbageCollection);
135     m_gcInterval.setup(m_garbageCollection);
136   }
137
138   public void setup(DsoServerData dsoServerData) {
139     setEnabled(true);
140     removeListeners();
141
142     m_dsoServerData = dsoServerData;
143     m_garbageCollection = m_dsoServerData != null ?
144                           m_dsoServerData.getGarbageCollection() :
145                           null;
146     
147     updateChildren();
148     addListeners();
149   }
150   
151   public void tearDown() {
152     removeListeners();
153
154     m_dsoServerData = null;
155     m_garbageCollection = null;
156     
157     m_isGcEnabled.tearDown();
158     m_isVerboseGc.tearDown();
159     m_gcInterval.tearDown();
160     
161     setEnabled(false);
162   }
163 }
164
Popular Tags