KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > jmeter > control > gui > ModuleControllerGui


1 // $Header: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/control/gui/ModuleControllerGui.java,v 1.16.2.1 2005/01/05 22:32:38 jsalvata Exp $
2
/*
3  * Copyright 2003-2004 The Apache Software Foundation.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17 */

18
19 package org.apache.jmeter.control.gui;
20
21 import java.awt.FlowLayout JavaDoc;
22
23 import javax.swing.DefaultComboBoxModel JavaDoc;
24 import javax.swing.JComboBox JavaDoc;
25 import javax.swing.JLabel JavaDoc;
26 import javax.swing.JMenu JavaDoc;
27 import javax.swing.JPanel JavaDoc;
28 import javax.swing.JPopupMenu JavaDoc;
29
30 import org.apache.jmeter.control.Controller;
31 import org.apache.jmeter.control.ModuleController;
32 import org.apache.jmeter.gui.GuiPackage;
33 import org.apache.jmeter.gui.tree.JMeterTreeNode;
34 import org.apache.jmeter.gui.util.MenuFactory;
35 import org.apache.jmeter.testelement.TestElement;
36 import org.apache.jmeter.testelement.TestPlan;
37 import org.apache.jmeter.testelement.WorkBench;
38 import org.apache.jmeter.threads.ThreadGroup;
39 import org.apache.jmeter.util.JMeterUtils;
40 import org.apache.jorphan.gui.layout.VerticalLayout;
41
42 /**
43  * ModuleController Gui.
44  *
45  * @version $Revision: 1.16.2.1 $ on $Date: 2005/01/05 22:32:38 $
46  */

47 public class ModuleControllerGui
48     extends AbstractControllerGui /*implements UnsharedComponent*/
49 {
50
51     private JMeterTreeNode selected = null;
52
53     private JComboBox JavaDoc nodes;
54     private DefaultComboBoxModel JavaDoc nodesModel;
55
56     public static final String JavaDoc CONTROLLER = "Module To Run";
57     //TODO should be a resource, and probably ought to be resolved at run-time (to allow language change)
58

59     /**
60      * Initializes the gui panel for the ModuleController instance.
61      */

62     public ModuleControllerGui()
63     {
64         init();
65     }
66
67     public String JavaDoc getLabelResource()
68     {
69         return "module_controller_title";
70     }
71
72     /* (non-Javadoc)
73      * @see org.apache.jmeter.gui.JMeterGUIComponent#configure(TestElement)
74      */

75     public void configure(TestElement el)
76     {
77         super.configure(el);
78         this.selected = ((ModuleController) el).getSelectedNode();
79         reinitialize();
80     }
81
82     /* (non-Javadoc)
83      * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement()
84      */

85     public TestElement createTestElement()
86     {
87         ModuleController mc = new ModuleController();
88         configureTestElement(mc);
89         if (selected != null)
90         {
91             mc.setSelectedNode(selected);
92         }
93         return mc;
94     }
95
96     /* (non-Javadoc)
97      * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement)
98      */

99     public void modifyTestElement(TestElement element)
100     {
101         configureTestElement(element);
102         TreeNodeWrapper tnw = (TreeNodeWrapper) nodesModel.getSelectedItem();
103         if (tnw != null)
104         {
105             selected = tnw.getTreeNode();
106             if (selected != null)
107             {
108                 ((ModuleController) element).setSelectedNode(selected);
109             }
110         }
111     }
112
113     public JPopupMenu JavaDoc createPopupMenu()
114     {
115         JPopupMenu JavaDoc menu = new JPopupMenu JavaDoc();
116         JMenu JavaDoc addMenu =
117             MenuFactory.makeMenus(
118                 new String JavaDoc[] {
119                     MenuFactory.CONFIG_ELEMENTS,
120                     MenuFactory.ASSERTIONS,
121                     MenuFactory.TIMERS,
122                     MenuFactory.LISTENERS,
123                     },
124                 JMeterUtils.getResString("Add"),
125                 "Add");
126         menu.add(addMenu);
127         MenuFactory.addEditMenu(menu, true);
128         MenuFactory.addFileMenu(menu);
129         return menu;
130     }
131
132     private void init()
133     {
134         setLayout(
135             new VerticalLayout(5, VerticalLayout.LEFT, VerticalLayout.TOP));
136         setBorder(makeBorder());
137         add(makeTitlePanel());
138
139         // DROP-DOWN MENU
140
JPanel JavaDoc modulesPanel = new JPanel JavaDoc(new FlowLayout JavaDoc(FlowLayout.LEFT));
141         modulesPanel.add(new JLabel JavaDoc(CONTROLLER));
142         nodesModel = new DefaultComboBoxModel JavaDoc();
143         nodes = new JComboBox JavaDoc(nodesModel);
144         reinitialize();
145         modulesPanel.add(nodes);
146         add(modulesPanel);
147     }
148
149     private void reinitialize()
150     {
151         TreeNodeWrapper current;
152         nodesModel.removeAllElements();
153         GuiPackage gp = GuiPackage.getInstance();
154         JMeterTreeNode root;
155         if (gp != null)
156         {
157             root =
158                 (JMeterTreeNode) GuiPackage
159                     .getInstance()
160                     .getTreeModel()
161                     .getRoot();
162             buildNodesModel(root, "", 0);
163         }
164         if (selected != null)
165         {
166             for (int i = 0; i < nodesModel.getSize(); i++)
167             {
168                 current = (TreeNodeWrapper) nodesModel.getElementAt(i);
169                 if (current.getTreeNode().equals(selected))
170                 {
171                     nodesModel.setSelectedItem(current);
172                     break;
173                 }
174             }
175         }
176     }
177
178     private void buildNodesModel(
179         JMeterTreeNode node,
180         String JavaDoc parent_name,
181         int level)
182     {
183         String JavaDoc seperator = " > ";
184         if (node != null)
185         {
186             for (int i = 0; i < node.getChildCount(); i++)
187             {
188                 StringBuffer JavaDoc name = new StringBuffer JavaDoc();
189                 JMeterTreeNode cur = (JMeterTreeNode) node.getChildAt(i);
190                 TestElement te = cur.getTestElement();
191                 if (te instanceof ThreadGroup JavaDoc)
192                 {
193                     name.append(parent_name);
194                     name.append(cur.getName());
195                     name.append(seperator);
196                     buildNodesModel(cur, name.toString(), level);
197                 }
198                 else if (
199                     te instanceof Controller
200                         && !(te instanceof ModuleController))
201                 {
202                     name.append(spaces(level));
203                     name.append(parent_name);
204                     name.append(cur.getName());
205                     TreeNodeWrapper tnw =
206                         new TreeNodeWrapper(cur, name.toString());
207                     nodesModel.addElement(tnw);
208                     name = new StringBuffer JavaDoc();
209                     name.append(cur.getName());
210                     name.append(seperator);
211                     buildNodesModel(cur, name.toString(), level + 1);
212                 }
213                 else if (te instanceof TestPlan || te instanceof WorkBench)
214                 {
215                     name.append(cur.getName());
216                     name.append(seperator);
217                     buildNodesModel(cur, name.toString(), 0);
218                 }
219             }
220         }
221     }
222
223     private String JavaDoc spaces(int level)
224     {
225         int multi = 4;
226         StringBuffer JavaDoc spaces = new StringBuffer JavaDoc(level * multi);
227         for (int i = 0; i < level * multi; i++)
228         {
229             spaces.append(" ");
230         }
231         return spaces.toString();
232     }
233 }
234
235 class TreeNodeWrapper
236 {
237
238     private JMeterTreeNode tn;
239     private String JavaDoc label;
240
241     private TreeNodeWrapper()
242     {
243     };
244
245     public TreeNodeWrapper(JMeterTreeNode tn, String JavaDoc label)
246     {
247         this.tn = tn;
248         this.label = label;
249     }
250
251     public JMeterTreeNode getTreeNode()
252     {
253         return tn;
254     }
255
256     public String JavaDoc toString()
257     {
258         return label;
259     }
260
261 }
262
Popular Tags