KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > qa > form > visualDevelopment > FormGenerateCodeTest


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.qa.form.visualDevelopment;
21
22 import java.awt.Component JavaDoc;
23 import java.awt.event.KeyEvent JavaDoc;
24 import javax.swing.JPanel JavaDoc;
25 import org.netbeans.jellytools.modules.form.ComponentInspectorOperator;
26 import org.netbeans.jellytools.modules.form.ComponentPaletteOperator;
27 import org.netbeans.jellytools.modules.form.FormDesignerOperator;
28 import org.netbeans.jellytools.properties.Property;
29 import org.netbeans.jemmy.operators.JTextFieldOperator;
30 import org.netbeans.junit.NbTestSuite;
31 import java.util.*;
32 import javax.swing.JButton JavaDoc;
33 import javax.swing.JCheckBox JavaDoc;
34 import javax.swing.JLabel JavaDoc;
35 import javax.swing.JRadioButton JavaDoc;
36 import javax.swing.JTextArea JavaDoc;
37 import javax.swing.JToggleButton JavaDoc;
38 import org.netbeans.jellytools.actions.*;
39 import org.netbeans.jellytools.*;
40 import org.netbeans.jellytools.nodes.Node;
41 import org.netbeans.jemmy.operators.JListOperator;
42 import org.netbeans.jemmy.operators.Operator;
43 import org.netbeans.qa.form.BorderCustomEditorOperator;
44 import org.netbeans.qa.form.ExtJellyTestCase;
45
46 /**
47  * Tests from NetBeans 5.5.1 Form Test Specification
48  * from Visual Development Test Specification
49  * @see <a HREF="http://qa.netbeans.org/modules/form/promo-f/testspecs/visualDevelopment.html">Test specification</a>
50  *
51  * @author Jiri Vagner
52  */

53 public class FormGenerateCodeTest extends ExtJellyTestCase {
54     
55     /** Constructor required by JUnit */
56     public FormGenerateCodeTest(String JavaDoc testName) {
57         super(testName);
58     }
59     
60     /* Method allowing to execute test directly from IDE. */
61     public static void main(java.lang.String JavaDoc[] args) {
62         junit.textui.TestRunner.run(suite());
63     }
64     
65     /** Creates suite from particular test cases. */
66     public static NbTestSuite suite() {
67         NbTestSuite suite = new NbTestSuite();
68         
69         suite.addTest(new FormGenerateCodeTest("testAWTAndSwingComponentsTogether"));
70         suite.addTest(new FormGenerateCodeTest("testAddComponentsIntoContainersSwing"));
71         suite.addTest(new FormGenerateCodeTest("testAddComponentsIntoContainersAwt"));
72         suite.addTest(new FormGenerateCodeTest("testInPlaceEditing"));
73         suite.addTest(new FormGenerateCodeTest("testMenuAndPopUpMenuCreation"));
74         suite.addTest(new FormGenerateCodeTest("testSimpleComponentInsertingIntoForm"));
75         suite.addTest(new FormGenerateCodeTest("testLayouts"));
76         suite.addTest(new FormGenerateCodeTest("testBorderSettings"));
77
78         return suite;
79     }
80     
81     public void testSimpleComponentInsertingIntoForm() {
82         p("testSimpleComponentInsertingIntoForm - start"); // NOI18N
83
String JavaDoc frameName = createJFrameFile();
84         FormDesignerOperator designer = new FormDesignerOperator(frameName);
85         ComponentPaletteOperator palette = new ComponentPaletteOperator();
86         ComponentInspectorOperator inspector = new ComponentInspectorOperator();
87         
88         palette.expandSwingContainers();
89         palette.selectComponent("Panel"); // NOI18N
90
designer.clickOnComponent(designer.fakePane().getSource());
91         
92         inspector.selectComponent("[JFrame]|jPanel1 [JPanel]"); // NOI18N
93
new Property(inspector.properties(), "background").setValue("[0,255,0]"); // NOI18N
94

95         Component JavaDoc firstPanel = designer.findComponent(JPanel JavaDoc.class);
96         palette.expandSwingControls();
97         palette.selectComponent("Label"); // NOI18N
98
designer.clickOnComponent(firstPanel);
99         
100         findInCode("jPanel1.setBackground(new java.awt.Color(0, 255, 0));", designer); // NOI18N
101
findInCode("jLabel1 = new javax.swing.JLabel();", designer); // NOI18N
102

103         removeFile(frameName);
104     }
105     
106     public void testLayouts() {
107         p("testLayouts - start"); // NOI18N
108
String JavaDoc nodeName = "JFrame"; // NOI18N
109
String JavaDoc name = createJFrameFile();
110         
111         FormDesignerOperator designer = new FormDesignerOperator(name);
112         ComponentPaletteOperator palette = new ComponentPaletteOperator();
113         ComponentInspectorOperator inspector = new ComponentInspectorOperator();
114         Node frameNode = new Node(inspector.treeComponents(), nodeName);
115         
116         HashMap<String JavaDoc,String JavaDoc> task = new HashMap<String JavaDoc,String JavaDoc>();
117         task.put("Set Layout|AbsoluteLayout","setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());"); // NOI18N
118
task.put("Set Layout|BoxLayout","setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.LINE_AXIS));"); // NOI18N
119
task.put("Set Layout|CardLayout","setLayout(new java.awt.CardLayout());"); // NOI18N
120
task.put("Set Layout|FlowLayout","setLayout(new java.awt.FlowLayout());"); // NOI18N
121
task.put("Set Layout|GridBagLayout","setLayout(new java.awt.GridBagLayout());"); // NOI18N
122
task.put("Set Layout|GridLayout","setLayout(new java.awt.GridLayout());"); // NOI18N
123
task.put("Set Layout|Null Layout","setLayout(null);"); // NOI18N
124
task.put("Set Layout|Free Design",".GroupLayout(getContentPane());"); // NOI18N
125
task.put("Set Layout|BorderLayout", "setLayout("); //setLayout("); // NOI18N
126

127         for (Map.Entry<String JavaDoc,String JavaDoc> entry : task.entrySet()) {
128             String JavaDoc layoutCmd = entry.getKey();
129             runPopupOverNode(layoutCmd, frameNode);
130             
131             if (layoutCmd != "Set Layout|BorderLayout") // NOI18N
132
findInCode(entry.getValue(), designer);
133             else
134                 missInCode(entry.getValue(), designer);
135         }
136         removeFile(name);
137     }
138     
139     public void testAWTAndSwingComponentsTogether() {
140         p("testAWTAndSwingComponentsTogether - start"); // NOI18N
141
String JavaDoc nodeName = "JFrame"; // NOI18N
142
String JavaDoc name = createJFrameFile();
143         
144         ArrayList<String JavaDoc> cmds = new ArrayList<String JavaDoc>();
145         cmds.add("Add From Palette|Swing Controls|Label"); // NOI18N
146
cmds.add("Add From Palette|AWT|Label"); // NOI18N
147

148         FormDesignerOperator designer = new FormDesignerOperator(name);
149         ComponentInspectorOperator inspector = new ComponentInspectorOperator();
150         Node node = new Node(inspector.treeComponents(), nodeName);
151         
152         runPopupOverNode(cmds, node);
153         
154         findInCode("jLabel1 = new javax.swing.JLabel();", designer); // NOI18N
155
findInCode("label1 = new java.awt.Label()", designer); // NOI18N
156

157         removeFile(name);
158     }
159     
160     public void testAddComponentsIntoContainersSwing() {
161         p("testAddComponentsIntoContainersSwing - start"); // NOI18N
162
String JavaDoc frameName = createJFrameFile();
163         FormDesignerOperator designer = new FormDesignerOperator(frameName);
164         ComponentInspectorOperator inspector = new ComponentInspectorOperator();
165         Node frameNode = new Node(inspector.treeComponents(), "JFrame"); // NOI18N
166

167         ArrayList<String JavaDoc> containers = new ArrayList<String JavaDoc>();
168         containers.add("Add From Palette|Swing Containers|Panel"); // NOI18N
169
containers.add("Add From Palette|Swing Containers|Tabbed Pane"); // NOI18N
170
containers.add("Add From Palette|Swing Containers|Scroll Pane"); // NOI18N
171
containers.add("Add From Palette|Swing Containers|Split Pane"); // NOI18N
172
containers.add("Add From Palette|Swing Containers|Tool Bar"); // NOI18N
173
containers.add("Add From Palette|Swing Containers|Internal Frame"); // NOI18N
174
containers.add("Add From Palette|Swing Containers|Desktop Pane"); // NOI18N
175
runPopupOverNode(containers, frameNode);
176         
177         ArrayList<String JavaDoc> lines = new ArrayList<String JavaDoc>();
178         lines.add("jPanel1 = new javax.swing.JPanel();"); // NOI18N
179
lines.add("jTabbedPane1 = new javax.swing.JTabbedPane();"); // NOI18N
180
lines.add("jScrollPane1 = new javax.swing.JScrollPane();"); // NOI18N
181
lines.add("jSplitPane1 = new javax.swing.JSplitPane();"); // NOI18N
182
lines.add("jToolBar1 = new javax.swing.JToolBar();"); // NOI18N
183
lines.add("jInternalFrame1 = new javax.swing.JInternalFrame();"); // NOI18N
184
lines.add("jDesktopPane1 = new javax.swing.JDesktopPane();"); // NOI18N
185
findInCode(lines, designer);
186         
187         Node node = new Node(inspector.treeComponents(), "[JFrame]|jPanel1 [JPanel]"); // NOI18N
188
runPopupOverNode("Add From Palette|Swing Controls|Text Area", node); // NOI18N
189
findInCode("jScrollPane2.setViewportView(jTextArea1);", designer); // NOI18N
190

191         node = new Node(inspector.treeComponents(), "[JFrame]|jTabbedPane1 [JTabbedPane]"); // NOI18N
192
runPopupOverNode("Add From Palette|Swing Containers|Panel", node); // NOI18N
193
findInCode("jTabbedPane1.addTab(\"tab1\", jPanel2);", designer); // NOI18N
194

195         node = new Node(inspector.treeComponents(), "[JFrame]|jScrollPane1 [JScrollPane]"); // NOI18N
196
runPopupOverNode("Add From Palette|Swing Controls|Table", node); // NOI18N
197
findInCode("jScrollPane1.setViewportView(jTable1);", designer); // NOI18N
198

199         node = new Node(inspector.treeComponents(), "[JFrame]|jSplitPane1 [JSplitPane]"); // NOI18N
200
runPopupOverNode("Add From Palette|Swing Controls|Button", node); // NOI18N
201
runPopupOverNode("Add From Palette|Swing Containers|Panel", node); // NOI18N
202
findInCode("jSplitPane1.setRightComponent(jPanel3);", designer); // NOI18N
203
findInCode("jSplitPane1.setLeftComponent(jButton1);", designer); // NOI18N
204

205         node = new Node(inspector.treeComponents(), "[JFrame]|jToolBar1 [JToolBar]"); // NOI18N
206
runPopupOverNode("Add From Palette|Swing Controls|Toggle Button", node); // NOI18N
207
findInCode("jToolBar1.add(jToggleButton1);", designer); // NOI18N
208

209         node = new Node(inspector.treeComponents(), "[JFrame]|jInternalFrame1 [JInternalFrame]"); // NOI18N
210
runPopupOverNode("Add From Palette|Swing Controls|Tree", node); // NOI18N
211
findInCode("jScrollPane3.setViewportView(jTree1);", designer); // NOI18N
212

213         node = new Node(inspector.treeComponents(), "[JFrame]|jDesktopPane1 [JDesktopPane]"); // NOI18N
214
runPopupOverNode("Add From Palette|Swing Containers|Internal Frame", node); // NOI18N
215
findInCode("jDesktopPane1.add(jInternalFrame2, javax.swing.JLayeredPane.DEFAULT_LAYER);", designer); // NOI18N
216

217         removeFile(frameName);
218     }
219     
220     public void testAddComponentsIntoContainersAwt() {
221         p("testAddComponentsIntoContainersAwt - start"); // NOI18N
222
String JavaDoc frameName = createFrameFile();
223         FormDesignerOperator designer = new FormDesignerOperator(frameName);
224         ComponentInspectorOperator inspector = new ComponentInspectorOperator();
225         Node frameNode = new Node(inspector.treeComponents(), "Frame"); // NOI18N
226

227         ArrayList<String JavaDoc> containers = new ArrayList<String JavaDoc>();
228         containers.add("Add From Palette|AWT|Panel"); // NOI18N
229
containers.add("Add From Palette|AWT|Scroll Pane"); // NOI18N
230
runPopupOverNode(containers, frameNode);
231         
232         findInCode("scrollPane1 = new java.awt.ScrollPane();", designer); // NOI18N
233
findInCode("panel1 = new java.awt.Panel();", designer); // NOI18N
234

235         Node node = new Node(inspector.treeComponents(), "[Frame]|scrollPane1 [ScrollPane]"); // NOI18N
236
runPopupOverNode("Add From Palette|AWT|Text Area", node); // NOI18N
237
findInCode("scrollPane1.add(textArea1);", designer); // NOI18N
238

239         node = new Node(inspector.treeComponents(), "[Frame]|panel1 [Panel]"); // NOI18N
240
runPopupOverNode("Add From Palette|AWT|Canvas", node); // NOI18N
241
findInCode("panel1.add(canvas1);", designer); // NOI18N
242

243         removeFile(frameName);
244     }
245     
246     
247     public void testMenuAndPopUpMenuCreation() {
248         p("testMenuAndPopUpMenuCreation - start"); // NOI18N
249
String JavaDoc frameName = createJFrameFile();
250         ComponentInspectorOperator inspector = new ComponentInspectorOperator();
251         FormDesignerOperator designer = new FormDesignerOperator(frameName);
252         
253         Node node = new Node(inspector.treeComponents(), "JFrame"); // NOI18N
254

255         new Action(null, "Add From Palette|Swing Menus|Menu Bar").perform(node); // NOI18N
256
new Action(null, "Add From Palette|Swing Menus|Popup Menu").perform(node); // NOI18N
257
findInCode("jMenuBar1 = new javax.swing.JMenuBar();", designer); // NOI18N
258
findInCode("jPopupMenu1 = new javax.swing.JPopupMenu();", designer); // NOI18N
259

260         ArrayList<String JavaDoc> items = new ArrayList<String JavaDoc>();
261         items.add("Add|JMenuItem"); // NOI18N
262
items.add("Add|JCheckBoxMenuItem"); // NOI18N
263
items.add("Add|JRadioButtonMenuItem"); // NOI18N
264
items.add("Add|JSeparator"); // NOI18N
265
items.add("Add|JMenu"); // NOI18N
266

267         Operator.DefaultStringComparator comparator = new Operator.DefaultStringComparator(true, false);
268         node = new Node(inspector.treeComponents(), "Other Components|jPopupMenu1 [JPopupMenu]"); // NOI18N
269
runPopupOverNode(items, node, comparator);
270         
271         node = new Node(inspector.treeComponents(), "[JFrame]|jMenuBar1 [JMenuBar]|jMenu1 [JMenu]"); // NOI18N
272
runPopupOverNode(items, node, comparator);
273         
274         node = new Node(inspector.treeComponents(), "[JFrame]|jMenuBar1 [JMenuBar]|jMenu1 [JMenu]|jMenu3 [JMenu]"); // NOI18N
275
runPopupOverNode(items, node, comparator);
276         
277         ArrayList<String JavaDoc> lines = new ArrayList<String JavaDoc>();
278         lines.add("jMenu3.add(jMenu4);"); // NOI18N
279
lines.add("jMenu1.add(jMenu3);"); // NOI18N
280
lines.add("jMenuBar1.add(jMenu1);"); // NOI18N
281
lines.add("setJMenuBar(jMenuBar1);"); // NOI18N
282
findInCode(lines, designer);
283         
284         removeFile(frameName);
285     }
286     
287     public void testInPlaceEditing() {
288         p("testInPlaceEditing - start"); // NOI18N
289
String JavaDoc testText = "xyz"; // NOI18N
290
String JavaDoc dialogName = createJDialogFile();
291         
292         HashMap<String JavaDoc,Class JavaDoc> components = new HashMap<String JavaDoc,Class JavaDoc>();
293         // TODO: strange, findComponent is not able to find JToggleButton.class
294
//components.put("Toggle Button", JToggleButton.class);
295
components.put("Label", JLabel JavaDoc.class); // NOI18N
296
components.put("Button", JButton JavaDoc.class); // NOI18N
297
components.put("Check Box", JCheckBox JavaDoc.class); // NOI18N
298
components.put("Radio Button", JRadioButton JavaDoc.class); // NOI18N
299

300         FormDesignerOperator designer = new FormDesignerOperator(dialogName);
301         ComponentPaletteOperator palette = new ComponentPaletteOperator();
302         ComponentInspectorOperator inspector = new ComponentInspectorOperator();
303         
304         palette.expandSwingControls();
305         
306         for (Map.Entry<String JavaDoc,Class JavaDoc> entry : components.entrySet()) {
307             palette.selectComponent(entry.getKey());
308             designer.clickOnComponent(designer.fakePane().getSource());
309             
310             Class JavaDoc componentClass = entry.getValue();
311             java.awt.Component JavaDoc component = designer.findComponent(componentClass);
312
313             designer.clickOnComponent(component);
314             waitNoEvent(300);
315             designer.handleLayer().pushKey(KeyEvent.VK_SPACE);
316             waitNoEvent(300);
317             new JTextFieldOperator(designer).typeText(testText);
318             waitNoEvent(300);
319             designer.handleLayer().pushKey(KeyEvent.VK_ENTER);
320             waitNoEvent(300);
321             designer.handleLayer().pushKey(KeyEvent.VK_ESCAPE);
322         }
323         
324         String JavaDoc baseName = "[JDialog]"; // NOI18N
325
Node dialogNode = new Node(inspector.treeComponents(), baseName);
326         String JavaDoc[] names = dialogNode.getChildren();
327         
328         for (String JavaDoc name : names) {
329             inspector.selectComponent(baseName + "|" + name);
330             Property prop = new Property(inspector.properties(), "text"); // NOI18N
331
assertEquals("Text property of component " + name + " was not set correctly.", prop.getValue(), testText); // NOI18N
332
}
333         removeFile(dialogName);
334     }
335     
336     public void testBorderSettings() {
337         p("testBorderSettings - start"); // NOI18N
338
String JavaDoc dialogName = createJFrameFile();
339         
340         HashMap<String JavaDoc,Class JavaDoc> components = new HashMap<String JavaDoc,Class JavaDoc>();
341         components.put("Button", JButton JavaDoc.class); // NOI18N
342
components.put("Label", JLabel JavaDoc.class); // NOI18N
343
components.put("Radio Button", JRadioButton JavaDoc.class); // NOI18N
344
components.put("Toggle Button", JToggleButton JavaDoc.class); // NOI18N
345
components.put("Text Area", JTextArea JavaDoc.class); // NOI18N
346

347         FormDesignerOperator designer = new FormDesignerOperator(dialogName);
348         ComponentPaletteOperator palette = new ComponentPaletteOperator();
349         ComponentInspectorOperator inspector = new ComponentInspectorOperator();
350         
351         palette.expandSwingControls();
352         
353         for (Map.Entry<String JavaDoc,Class JavaDoc> entry : components.entrySet()) {
354             String JavaDoc componentName = entry.getKey();
355             palette.selectComponent(componentName);
356             designer.clickOnComponent(designer.fakePane().getSource());
357         }
358         
359         String JavaDoc baseName = "[JFrame]"; // NOI18N
360
Node dialogNode = new Node(inspector.treeComponents(), baseName);
361         String JavaDoc[] names = dialogNode.getChildren();
362         
363         int counter = 0;
364         for (String JavaDoc name : names) {
365             String JavaDoc path = baseName + "|" + name;
366             inspector.selectComponent(path);
367             
368             Property prop = new Property(inspector.properties(), "border"); // NOI18N
369
prop.openEditor();
370             
371             BorderCustomEditorOperator editor = new BorderCustomEditorOperator(name);
372             JListOperator lstOp = editor.lstAvailableBorders();
373             lstOp.clickOnItem(++counter,1);
374             editor.ok();
375         }
376         
377         ArrayList<String JavaDoc> lines = new ArrayList<String JavaDoc>();
378         lines.add("jToggleButton1.setBorder(javax.swing.BorderFactory.");
379         lines.add("jLabel1.setBorder(javax.swing.BorderFactory.");
380         lines.add("jButton1.setBorder(javax.swing.BorderFactory.");
381         findInCode(lines, designer);
382         
383         removeFile(dialogName);
384     }
385   }
386
Popular Tags