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

Reply via email to