01: package org.uispec4j;
02:
03: import junit.framework.AssertionFailedError;
04: import org.uispec4j.utils.AssertionFailureNotDetectedError;
05: import org.uispec4j.utils.UIComponentFactory;
06: import org.uispec4j.xml.EventLogger;
07:
08: import javax.swing.*;
09: import java.awt.event.ActionEvent;
10:
11: public class MenuItemForJPopupMenuTest extends MenuItemTestCase {
12: public void testFactory() throws Exception {
13: checkFactory(new JPopupMenu(), MenuItem.class);
14: }
15:
16: public void testClickFailsIfTheMenuItemIsNotEnabled()
17: throws Exception {
18: JPopupMenu menu = new JPopupMenu();
19: menu.add("a");
20: menu.add("b");
21: menu.add("c");
22: MenuItem item = createMenuItem(menu);
23: try {
24: item.click();
25: throw new AssertionFailureNotDetectedError();
26: } catch (AssertionFailedError e) {
27: assertEquals(
28: "This operation is not supported. You must first select a sub menu among: [a,b,c]",
29: e.getMessage());
30: }
31: }
32:
33: protected MenuItem createLoggingMenuItem(
34: final EventLogger eventLogger) {
35: final Action action = new AbstractAction("item") {
36: public void actionPerformed(ActionEvent e) {
37: eventLogger.log("action");
38: }
39: };
40: JPopupMenu menu = new JPopupMenu();
41: menu.add(action);
42: return createMenuItem(menu);
43: }
44:
45: static private MenuItem createMenuItem(JPopupMenu menu) {
46: return (MenuItem) UIComponentFactory.createUIComponent(menu);
47: }
48:
49: public static class JPopupMenuBuilder implements MenuBuilder {
50: private JPopupMenu jPopupMenu;
51:
52: public JPopupMenuBuilder(String text) {
53: this (new JPopupMenu(text));
54: }
55:
56: public JPopupMenuBuilder(JPopupMenu menu) {
57: this .jPopupMenu = menu;
58: }
59:
60: public MenuBuilder setName(String name) {
61: jPopupMenu.setName(name);
62: return this ;
63: }
64:
65: public MenuBuilder add(String item) {
66: jPopupMenu.add(new JMenuItem(item));
67: return this ;
68: }
69:
70: public MenuBuilder add(Action action) {
71: jPopupMenu.add(new JMenuItem(action));
72: return this ;
73: }
74:
75: public MenuBuilder addSeparator() {
76: jPopupMenu.addSeparator();
77: return this ;
78: }
79:
80: public MenuBuilder setEnabled(boolean enabled) {
81: jPopupMenu.setEnabled(enabled);
82: return this ;
83: }
84:
85: public MenuBuilder startSubMenu(String item) {
86: JMenu sub = new JMenu(item);
87: jPopupMenu.add(sub);
88: return new MenuItemForJMenuTest.JMenuBuilder(sub);
89: }
90:
91: public MenuItem getMenuItem() {
92: return new MenuItem(jPopupMenu);
93: }
94: }
95:
96: public MenuItemTestCase.MenuBuilder getBuilder(String text) {
97: return new JPopupMenuBuilder(text);
98: }
99: }
|