Revision: 8660
Author: [email protected]
Date: Fri Aug 27 06:46:03 2010
Log: Modified the MenuBar class to change the Close() method from private
to public.
Review at http://gwt-code-reviews.appspot.com/798801
Review by: [email protected]
http://code.google.com/p/google-web-toolkit/source/detail?r=8660
Modified:
/trunk/user/src/com/google/gwt/user/client/ui/MenuBar.java
/trunk/user/test/com/google/gwt/user/client/ui/MenuBarTest.java
=======================================
--- /trunk/user/src/com/google/gwt/user/client/ui/MenuBar.java Mon Jun 7
12:20:31 2010
+++ /trunk/user/src/com/google/gwt/user/client/ui/MenuBar.java Fri Aug 27
06:46:03 2010
@@ -369,6 +369,28 @@
items.clear();
allItems.clear();
}
+
+ /**
+ * Closes this menu and all child menu popups.
+ *
+ * @param focus true to move focus to the parent
+ */
+ public void closeAllChildren(boolean focus) {
+ if (shownChildMenu != null) {
+ // Hide any open submenus of this item
+ shownChildMenu.onHide(focus);
+ shownChildMenu = null;
+ selectItem(null);
+ }
+ // Close the current popup
+ if (popup != null) {
+ popup.hide();
+ }
+ // If focus is true, set focus to parentMenu
+ if (focus && parentMenu != null) {
+ parentMenu.focus();
+ }
+ }
/**
* Give this MenuBar focus.
=======================================
--- /trunk/user/test/com/google/gwt/user/client/ui/MenuBarTest.java Tue Aug
10 10:18:55 2010
+++ /trunk/user/test/com/google/gwt/user/client/ui/MenuBarTest.java Fri Aug
27 06:46:03 2010
@@ -1,12 +1,12 @@
/*
* Copyright 2008 Google Inc.
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License"); you may
not
* use this file except in compliance with the License. You may obtain a
copy of
* the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -126,6 +126,22 @@
assertNull(l0.getPopup());
assertNull(l0.getSelectedItem());
assertNull(l1.getPopup());
+
+ // Open l2.
+ l0.itemOver(item0, true);
+ l1.itemOver(item1, true);
+ l2.itemOver(item2, true);
+ assertTrue(l0.getPopup().isShowing());
+ assertEquals(item0, l0.getSelectedItem());
+ assertTrue(l1.getPopup().isShowing());
+ assertEquals(item1, l1.getSelectedItem());
+
+ // Close child menus below l1.
+ l1.closeAllChildren(true);
+ assertTrue(l0.getPopup().isShowing());
+ assertEquals(item0, l0.getSelectedItem());
+ assertNull(l1.getPopup());
+ assertNull(l2.getPopup());
}
@DoNotRunWith({Platform.HtmlUnitBug})
@@ -145,6 +161,44 @@
menu.getElement().dispatchEvent(event);
assertNull(menu.getSelectedItem());
}
+
+ public void testDebugId() {
+ // Create a sub menu
+ MenuBar subMenu = new MenuBar(true);
+ subMenu.addItem("sub0", BLANK_COMMAND);
+ subMenu.addItem("sub1", BLANK_COMMAND);
+ subMenu.addItem("sub2", BLANK_COMMAND);
+
+ // Create a menu bar
+ MenuBar bar = new MenuBar(false);
+ bar.setAnimationEnabled(false);
+ bar.setAutoOpen(true);
+ bar.addItem("top0", BLANK_COMMAND);
+ bar.addItem("top1", BLANK_COMMAND);
+ MenuItem top2 = bar.addItem("top2", subMenu);
+ RootPanel.get().add(bar);
+
+ // Open the item with a submenu
+ bar.itemOver(top2, true);
+
+ // Set the Debug Id
+ bar.ensureDebugId("myMenu");
+ UIObjectTest.assertDebugId("myMenu", bar.getElement());
+
+ delayTestFinish(250);
+ DeferredCommand.addCommand(new Command() {
+ public void execute() {
+ UIObjectTest.assertDebugIdContents("myMenu-item0", "top0");
+ UIObjectTest.assertDebugIdContents("myMenu-item1", "top1");
+ UIObjectTest.assertDebugIdContents("myMenu-item2", "top2");
+
+ UIObjectTest.assertDebugIdContents("myMenu-item2-item0", "sub0");
+ UIObjectTest.assertDebugIdContents("myMenu-item2-item1", "sub1");
+ UIObjectTest.assertDebugIdContents("myMenu-item2-item2", "sub2");
+ finishTest();
+ }
+ });
+ }
public void testEscapeKey() {
// Create a menu bar with children.
@@ -169,8 +223,8 @@
assertEquals(item1, l1.getSelectedItem());
// Escape from the menu.
- NativeEvent event = Document.get().createKeyDownEvent(false, false,
false,
- false, KeyCodes.KEY_ESCAPE, KeyCodes.KEY_ESCAPE);
+ NativeEvent event = Document.get().createKeyDownEvent(
+ false, false, false, false, KeyCodes.KEY_ESCAPE,
KeyCodes.KEY_ESCAPE);
l1.getElement().dispatchEvent(event);
assertNull(l0.getPopup());
assertNull(l0.getSelectedItem());
@@ -254,62 +308,6 @@
// Expected exception
}
}
-
- public void testSelectItem() {
- MenuBar bar = new MenuBar(false);
- MenuItem item1 = new MenuItem("item1", BLANK_COMMAND);
- MenuItem item2 = new MenuItem("item2", BLANK_COMMAND);
- MenuItem item3 = new MenuItem("item3", BLANK_COMMAND);
- bar.addItem(item1);
- bar.addItem(item2);
- bar.addItem(item3);
- RootPanel.get().add(bar);
-
- bar.selectItem(item1);
- assertEquals(item1, bar.getSelectedItem());
- bar.selectItem(item3);
- assertEquals(item3, bar.getSelectedItem());
- bar.selectItem(null);
- assertNull(bar.getSelectedItem());
- }
-
- public void testDebugId() {
- // Create a sub menu
- MenuBar subMenu = new MenuBar(true);
- subMenu.addItem("sub0", BLANK_COMMAND);
- subMenu.addItem("sub1", BLANK_COMMAND);
- subMenu.addItem("sub2", BLANK_COMMAND);
-
- // Create a menu bar
- MenuBar bar = new MenuBar(false);
- bar.setAnimationEnabled(false);
- bar.setAutoOpen(true);
- bar.addItem("top0", BLANK_COMMAND);
- bar.addItem("top1", BLANK_COMMAND);
- MenuItem top2 = bar.addItem("top2", subMenu);
- RootPanel.get().add(bar);
-
- // Open the item with a submenu
- bar.itemOver(top2, true);
-
- // Set the Debug Id
- bar.ensureDebugId("myMenu");
- UIObjectTest.assertDebugId("myMenu", bar.getElement());
-
- delayTestFinish(250);
- DeferredCommand.addCommand(new Command() {
- public void execute() {
- UIObjectTest.assertDebugIdContents("myMenu-item0", "top0");
- UIObjectTest.assertDebugIdContents("myMenu-item1", "top1");
- UIObjectTest.assertDebugIdContents("myMenu-item2", "top2");
-
- UIObjectTest.assertDebugIdContents("myMenu-item2-item0", "sub0");
- UIObjectTest.assertDebugIdContents("myMenu-item2-item1", "sub1");
- UIObjectTest.assertDebugIdContents("myMenu-item2-item2", "sub2");
- finishTest();
- }
- });
- }
/**
* Test that the selected item points to the correct item.
@@ -342,6 +340,24 @@
bar.clearItems();
assertNull(bar.getSelectedItem());
}
+
+ public void testSelectItem() {
+ MenuBar bar = new MenuBar(false);
+ MenuItem item1 = new MenuItem("item1", BLANK_COMMAND);
+ MenuItem item2 = new MenuItem("item2", BLANK_COMMAND);
+ MenuItem item3 = new MenuItem("item3", BLANK_COMMAND);
+ bar.addItem(item1);
+ bar.addItem(item2);
+ bar.addItem(item3);
+ RootPanel.get().add(bar);
+
+ bar.selectItem(item1);
+ assertEquals(item1, bar.getSelectedItem());
+ bar.selectItem(item3);
+ assertEquals(item3, bar.getSelectedItem());
+ bar.selectItem(null);
+ assertNull(bar.getSelectedItem());
+ }
public void testTabKey() {
// Create a menu bar with children.
@@ -366,8 +382,8 @@
assertEquals(item1, l1.getSelectedItem());
// Tab away from the menu.
- NativeEvent event = Document.get().createKeyDownEvent(false, false,
false,
- false, KeyCodes.KEY_TAB, KeyCodes.KEY_TAB);
+ NativeEvent event = Document.get().createKeyDownEvent(
+ false, false, false, false, KeyCodes.KEY_TAB, KeyCodes.KEY_TAB);
l1.getElement().dispatchEvent(event);
assertNull(l0.getPopup());
assertNull(l0.getSelectedItem());
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors