KickJava   Java API By Example, From Geeks To Geeks.

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


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.eclipse.core.resources.IProject;
7
8 import org.dijon.Button;
9 import org.dijon.ContainerResource;
10
11 import org.terracotta.dso.editors.chooser.ClassChooser;
12 import com.terracottatech.config.DsoApplication;
13 import com.terracottatech.config.InstrumentedClasses;
14
15 import java.awt.Frame JavaDoc;
16 import java.awt.event.ActionEvent JavaDoc;
17 import java.awt.event.ActionListener JavaDoc;
18
19 import javax.swing.event.ListSelectionEvent JavaDoc;
20 import javax.swing.event.ListSelectionListener JavaDoc;
21 import javax.swing.event.TableModelEvent JavaDoc;
22 import javax.swing.event.TableModelListener JavaDoc;
23
24 public class InstrumentedClassesPanel extends ConfigurationEditorPanel
25   implements TableModelListener JavaDoc
26 {
27   private IProject m_project;
28   private DsoApplication m_dsoApp;
29   private InstrumentedClasses m_instrumentedClasses;
30   private RuleTable m_ruleTable;
31   private RuleModel m_ruleModel;
32   private Button m_addRuleButton;
33   private ActionListener JavaDoc m_addRuleListener;
34   private Button m_removeRuleButton;
35   private ActionListener JavaDoc m_removeRuleListener;
36   private Button m_moveUpButton;
37   private ActionListener JavaDoc m_moveUpListener;
38   private Button m_moveDownButton;
39   private ActionListener JavaDoc m_moveDownListener;
40   private ListSelectionListener JavaDoc m_rulesListener;
41   private ClassChooser m_classChooser;
42   private ActionListener JavaDoc m_instrumentedClassChooserListener;
43   
44   public InstrumentedClassesPanel() {
45     super();
46   }
47   
48   public void load(ContainerResource containerRes) {
49     super.load(containerRes);
50
51     m_ruleTable = (RuleTable)findComponent("RuleTable");
52     m_ruleTable.setModel(m_ruleModel = new RuleModel());
53     m_rulesListener = new ListSelectionListener JavaDoc() {
54       public void valueChanged(ListSelectionEvent JavaDoc lse) {
55         if(!lse.getValueIsAdjusting()) {
56           int sel = m_ruleTable.getSelectedRow();
57           int rowCount = m_ruleModel.size();
58           
59           m_removeRuleButton.setEnabled(sel != -1);
60           m_moveUpButton.setEnabled(rowCount > 1 && sel > 0);
61           m_moveDownButton.setEnabled(rowCount > 1 && sel < rowCount-1);
62         }
63       }
64     };
65     
66     m_addRuleButton = (Button)findComponent("AddRuleButton");
67     m_addRuleListener = new ActionListener JavaDoc() {
68       public void actionPerformed(ActionEvent JavaDoc ae) {
69         ClassChooser chsr = getInstrumentedClassChooser();
70         
71         chsr.setup(m_project);
72         chsr.center(InstrumentedClassesPanel.this.getAncestorOfClass(Frame JavaDoc.class));
73         chsr.setVisible(true);
74       }
75     };
76
77     m_removeRuleButton = (Button)findComponent("RemoveRuleButton");
78     m_removeRuleListener = new ActionListener JavaDoc() {
79       public void actionPerformed(ActionEvent JavaDoc ae) {
80         int row = m_ruleTable.getSelectedRow();
81         
82         m_ruleModel.removeRuleAt(row);
83         if(m_ruleModel.getRowCount() == 0) {
84           m_dsoApp.unsetInstrumentedClasses();
85         }
86         m_ruleModel.fireTableDataChanged();
87       }
88     };
89     
90     m_moveUpButton = (Button)findComponent("MoveUpButton");
91     m_moveUpListener = new ActionListener JavaDoc() {
92       public void actionPerformed(ActionEvent JavaDoc ae) {
93         m_ruleTable.moveUp();
94       }
95     };
96
97     m_moveDownButton = (Button)findComponent("MoveDownButton");
98     m_moveDownListener = new ActionListener JavaDoc() {
99       public void actionPerformed(ActionEvent JavaDoc ae) {
100         m_ruleTable.moveDown();
101       }
102     };
103   }
104   
105   private ActionListener JavaDoc getInstrumentedClassChooserListener() {
106     if(m_instrumentedClassChooserListener == null) {
107       m_instrumentedClassChooserListener = new InstrumentedClassChooserListener();
108     }
109     
110     return m_instrumentedClassChooserListener;
111   }
112   
113   private ClassChooser getInstrumentedClassChooser() {
114     if(m_classChooser == null) {
115       m_classChooser = new ClassChooser((Frame JavaDoc)getAncestorOfClass(Frame JavaDoc.class));
116     }
117     m_classChooser.setListener(getInstrumentedClassChooserListener());
118     
119     return m_classChooser;
120   }
121
122   class InstrumentedClassChooserListener implements ActionListener JavaDoc {
123     public void actionPerformed(ActionEvent JavaDoc ae) {
124       String JavaDoc[] classExprs = m_classChooser.getClassnames();
125       String JavaDoc classExpr;
126       
127       for(int i = 0; i < classExprs.length; i++) {
128         classExpr = classExprs[i];
129         
130         if(classExpr != null &&
131            (classExpr = classExpr.trim()) != null &&
132             classExpr.length() > 0)
133         {
134           internalAddInclude(classExpr);
135         }
136       }
137     }
138   }
139
140   public boolean hasAnySet() {
141     return m_instrumentedClasses != null &&
142           (m_instrumentedClasses.sizeOfExcludeArray() > 0 ||
143            m_instrumentedClasses.sizeOfIncludeArray() > 0);
144   }
145  
146   public void ensureXmlObject() {
147     super.ensureXmlObject();
148     
149     if(m_instrumentedClasses == null) {
150       removeListeners();
151       m_instrumentedClasses = m_dsoApp.addNewInstrumentedClasses();
152       updateChildren();
153       addListeners();
154     }
155   }
156   
157   private void syncModel() {
158     setDirty();
159   }
160   
161   private void addListeners() {
162     m_ruleModel.addTableModelListener(this);
163     m_ruleTable.getSelectionModel().addListSelectionListener(m_rulesListener);
164     m_addRuleButton.addActionListener(m_addRuleListener);
165     m_removeRuleButton.addActionListener(m_removeRuleListener);
166     m_moveUpButton.addActionListener(m_moveUpListener);
167     m_moveDownButton.addActionListener(m_moveDownListener);
168   }
169   
170   private void removeListeners() {
171     m_ruleModel.removeTableModelListener(this);
172     m_ruleTable.getSelectionModel().removeListSelectionListener(m_rulesListener);
173     m_addRuleButton.removeActionListener(m_addRuleListener);
174     m_removeRuleButton.removeActionListener(m_removeRuleListener);
175     m_moveUpButton.removeActionListener(m_moveUpListener);
176     m_moveDownButton.removeActionListener(m_moveDownListener);
177   }
178   
179   public void updateChildren() {
180     m_ruleModel.setInstrumentedClasses(m_instrumentedClasses);
181   }
182   
183   public void updateModel() {
184     removeListeners();
185     updateChildren();
186     addListeners();
187   }
188   
189   public void setup(IProject project, DsoApplication dsoApp) {
190     setEnabled(true);
191     removeListeners();
192
193     m_project = project;
194     m_dsoApp = dsoApp;
195     m_instrumentedClasses = m_dsoApp != null ?
196                             m_dsoApp.getInstrumentedClasses() :
197                             null;
198
199     updateChildren();
200     addListeners();
201   }
202   
203   public void tearDown() {
204     removeListeners();
205     
206     m_dsoApp = null;
207     m_instrumentedClasses = null;
208     
209     m_ruleModel.clear();
210     
211     setEnabled(false);
212   }
213   
214   private void internalAddInclude(String JavaDoc classExpr) {
215     ensureXmlObject();
216     int row = m_ruleModel.getRowCount();
217     m_ruleModel.addInclude(classExpr);
218     m_ruleModel.fireTableRowsInserted(row, row);
219   }
220   
221   public void tableChanged(TableModelEvent JavaDoc e) {
222     syncModel();
223   }
224 }
225
Popular Tags