modules/controls/src/test/java/test/javafx/scene/control/MenuBarTest.java

Print this page


   1 /*
   2  * Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package test.javafx.scene.control;
  27 

  28 import static org.junit.Assert.assertEquals;
  29 import static org.junit.Assert.assertFalse;
  30 import static org.junit.Assert.assertTrue;
  31 
  32 import javafx.scene.Node;
  33 import javafx.scene.Parent;
  34 import javafx.scene.Scene;
  35 import javafx.scene.control.skin.MenuBarSkinShim;
  36 import javafx.scene.input.KeyCode;
  37 import javafx.scene.input.MouseEvent;
  38 import javafx.scene.layout.AnchorPane;
  39 import javafx.scene.layout.VBox;
  40 import javafx.stage.Stage;
  41 
  42 import org.junit.Before;
  43 import org.junit.Test;
  44 
  45 import test.com.sun.javafx.pgstub.StubToolkit;
  46 import test.com.sun.javafx.scene.control.infrastructure.KeyEventFirer;
  47 import test.com.sun.javafx.scene.control.infrastructure.MouseEventGenerator;


 117     @Test public void testMenuShowHideWithMenuBarWithXYTranslation() {
 118         final MouseEventGenerator generator = new MouseEventGenerator();
 119         AnchorPane root = new AnchorPane();
 120         Menu menu = new Menu("Menu");
 121         menu.getItems().add(new MenuItem("MenuItem"));
 122         menuBar.getMenus().add(menu);
 123         menuBar.setLayoutX(100);
 124         menuBar.setLayoutY(100);
 125         root.getChildren().add(menuBar);
 126         startApp(root);
 127         tk.firePulse();
 128 
 129         MenuBarSkin skin = (MenuBarSkin)menuBar.getSkin();
 130         assertTrue(skin != null);
 131 
 132         double xval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinX();
 133         double yval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinY();
 134 
 135         MenuButton mb = MenuBarSkinShim.getNodeForMenu(skin, 0);
 136         mb.getScene().getWindow().requestFocus();
 137         scene.impl_processMouseEvent(
 138             generator.generateMouseEvent(MouseEvent.MOUSE_PRESSED, xval+20, yval+20));
 139         scene.impl_processMouseEvent(
 140             generator.generateMouseEvent(MouseEvent.MOUSE_RELEASED, xval+20, yval+20));
 141         assertTrue(menu.isShowing());
 142 
 143     }
 144 
 145     @Test public void testSubMenuDismissalWithKeyNavigation() {
 146         final MouseEventGenerator generator = new MouseEventGenerator();
 147         AnchorPane root = new AnchorPane();
 148         Menu menu = new Menu("Menu");
 149         Menu menu1 = new Menu("Menu With SubMenu");
 150         menu.getItems().add(menu1);
 151 
 152         MenuItem menuItem1 = new MenuItem("MenuItem1");
 153         MenuItem menuItem2 = new MenuItem("MenuItem2");
 154         menu1.getItems().addAll(menuItem1, menuItem2);
 155 
 156         menuBar.getMenus().add(menu);
 157         menuBar.setLayoutX(100);
 158         menuBar.setLayoutY(100);
 159 
 160         root.getChildren().add(menuBar);
 161         startApp(root);
 162         tk.firePulse();
 163 
 164         MenuBarSkin skin = (MenuBarSkin)menuBar.getSkin();
 165         assertTrue(skin != null);
 166 
 167         double xval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinX();
 168         double yval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinY();
 169 
 170         MenuButton mb = MenuBarSkinShim.getNodeForMenu(skin, 0);
 171         mb.getScene().getWindow().requestFocus();
 172         scene.impl_processMouseEvent(
 173             generator.generateMouseEvent(MouseEvent.MOUSE_PRESSED, xval+20, yval+20));
 174         scene.impl_processMouseEvent(
 175             generator.generateMouseEvent(MouseEvent.MOUSE_RELEASED, xval+20, yval+20));
 176         assertTrue(menu.isShowing());
 177          /* ------------------------------------------------------------------ */
 178 
 179         // Show subMenu
 180         ContextMenuContent menuContent = MenuBarSkinShim.getMenuContent(mb); // ContextMenuContent
 181         Node displayNode = MenuBarMenuButtonShim.getDisplayNodeForMenuItem(menuContent, 0); // MenuItemContainer
 182 
 183         displayNode.getScene().getWindow().requestFocus();
 184         assertTrue(displayNode.getScene().getWindow().isFocused());
 185 
 186         displayNode.requestFocus(); // requestFocus on 1st Menu
 187         assertTrue(displayNode.isFocused());
 188         // update currentFocusedIndex
 189         MenuBarMenuButtonShim.setCurrentFocusedIndex(menuContent, 0);
 190 
 191         // fire KeyEvent (Enter) on menu1 to show submenu
 192         KeyEventFirer keyboard = new KeyEventFirer(menuContent);
 193         keyboard.doKeyPress(KeyCode.ENTER);
 194         tk.firePulse();


 222         MenuItem menuItem = new MenuItem("MenuItem");
 223         menu.getItems().add(menuItem);
 224 
 225         menuBar.getMenus().add(menu);
 226         menuBar.setLayoutX(100);
 227         menuBar.setLayoutY(100);
 228 
 229         root.getChildren().addAll(menuBar);
 230 
 231         startApp(root);
 232         tk.firePulse();
 233 
 234         MenuBarSkin skin = (MenuBarSkin)menuBar.getSkin();
 235         assertTrue(skin != null);
 236         MenuButton mb = MenuBarSkinShim.getNodeForMenu(skin, 0);
 237         mb.getScene().getWindow().requestFocus();
 238 
 239         double xval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinX();
 240         double yval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinY();
 241 
 242         scene.impl_processMouseEvent(
 243             generator.generateMouseEvent(MouseEvent.MOUSE_PRESSED, xval+20, yval+20));
 244         scene.impl_processMouseEvent(
 245             generator.generateMouseEvent(MouseEvent.MOUSE_RELEASED, xval+20, yval+20));
 246         assertTrue(menu.isShowing());
 247          /* ------------------------------------------------------------------ */
 248 
 249         // Show Menu
 250         ContextMenuContent menuContent = MenuBarSkinShim.getMenuContent(mb); // ContextMenuContent
 251         Node displayNode = MenuBarMenuButtonShim.getDisplayNodeForMenuItem(menuContent, 0); // MenuItemContainer
 252 
 253         displayNode.getScene().getWindow().requestFocus();
 254         assertTrue(displayNode.getScene().getWindow().isFocused());
 255 
 256         displayNode.requestFocus(); // requestFocus on 1st Menu
 257         assertTrue(displayNode.isFocused());
 258 
 259         // fire KeyEvent (Enter) on menuitem
 260         KeyEventFirer keyboard = new KeyEventFirer(menuContent);
 261         keyboard.doKeyPress(KeyCode.ENTER);
 262         tk.firePulse();
 263 
 264         // confirm menu is closed.


 322 
 323         menu1.getItems().add(menuItem1);
 324         menu2.getItems().add(menuItem2);
 325         menu3.getItems().add(menuItem3);
 326 
 327         menuBar.getMenus().addAll(menu1, menu2, menu3);
 328         menu2.setDisable(true);
 329 
 330         root.getChildren().addAll(menuBar);
 331         startApp(root);
 332         tk.firePulse();
 333 
 334         MenuBarSkin skin = (MenuBarSkin)menuBar.getSkin();
 335         assertTrue(skin != null);
 336 
 337         double xval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinX();
 338         double yval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinY();
 339 
 340         MenuButton mb = MenuBarSkinShim.getNodeForMenu(skin, 0);
 341         mb.getScene().getWindow().requestFocus();
 342         scene.impl_processMouseEvent(
 343             MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_PRESSED, xval+20, yval+20));
 344         scene.impl_processMouseEvent(
 345             MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_RELEASED, xval+20, yval+20));
 346         assertTrue(menu1.isShowing());
 347 
 348         KeyEventFirer keyboard = new KeyEventFirer(mb.getScene());
 349         keyboard.doKeyPress(KeyCode.RIGHT);
 350         tk.firePulse();
 351         assertTrue(menu3.isShowing());
 352     }
 353 
 354 
 355      @Test public void testMenuOnShowingEventFiringWithMenuHideOperation() {
 356         VBox root = new VBox();
 357         Menu menu = new Menu("Menu");
 358 
 359         MenuItem menuItem1 = new MenuItem("MenuItem1");
 360         menu.getItems().addAll(menuItem1);
 361 
 362         menuBar.getMenus().add(menu);
 363         menuBar.setLayoutX(100);
 364         menuBar.setLayoutY(100);


 368         tk.firePulse();
 369 
 370         MenuBarSkin skin = (MenuBarSkin)menuBar.getSkin();
 371         assertTrue(skin != null);
 372         double xval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinX();
 373         double yval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinY();
 374 
 375         boolean click = true;
 376         final Boolean firstClick = new Boolean(click);
 377 
 378         menu.setOnShowing(t -> {
 379             // we should not get here when the menu is hidden
 380             assertEquals(firstClick.booleanValue(), true);
 381         });
 382 
 383         MenuButton mb = MenuBarSkinShim.getNodeForMenu(skin, 0);
 384         mb.getScene().getWindow().requestFocus();
 385         mb.requestFocus();
 386         assertTrue(mb.isFocused());
 387         // click on menu to show
 388         scene.impl_processMouseEvent(
 389             MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_PRESSED, xval+20, yval+20));
 390         scene.impl_processMouseEvent(
 391             MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_RELEASED, xval+20, yval+20));
 392         tk.firePulse();
 393         assertEquals(menu.showingProperty().get(), true);
 394         click = false;
 395         // click on menu to hide
 396         scene.impl_processMouseEvent(
 397             MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_PRESSED, xval+20, yval+20));
 398         scene.impl_processMouseEvent(
 399             MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_RELEASED, xval+20, yval+20));
 400         tk.firePulse();
 401         assertEquals(menu.showingProperty().get(), false);
 402     }
 403 
 404     @Test public void testRemovingMenuItemFromMenuNotInScene() {
 405         VBox root = new VBox();
 406         Menu menu = new Menu("Menu");
 407 
 408         MenuItem menuItem1 = new MenuItem("MenuItem1");
 409         menu.getItems().addAll(menuItem1);
 410 
 411         menuBar.getMenus().add(menu);
 412         root.getChildren().addAll(menuBar);
 413         startApp(root);
 414         tk.firePulse();
 415 
 416         // remove menu from menubar
 417         menuBar.getMenus().remove(menu);
 418         //remove menuitem from menu that was just removed itself.
   1 /*
   2  * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package test.javafx.scene.control;
  27 
  28 import com.sun.javafx.scene.SceneHelper;
  29 import static org.junit.Assert.assertEquals;
  30 import static org.junit.Assert.assertFalse;
  31 import static org.junit.Assert.assertTrue;
  32 
  33 import javafx.scene.Node;
  34 import javafx.scene.Parent;
  35 import javafx.scene.Scene;
  36 import javafx.scene.control.skin.MenuBarSkinShim;
  37 import javafx.scene.input.KeyCode;
  38 import javafx.scene.input.MouseEvent;
  39 import javafx.scene.layout.AnchorPane;
  40 import javafx.scene.layout.VBox;
  41 import javafx.stage.Stage;
  42 
  43 import org.junit.Before;
  44 import org.junit.Test;
  45 
  46 import test.com.sun.javafx.pgstub.StubToolkit;
  47 import test.com.sun.javafx.scene.control.infrastructure.KeyEventFirer;
  48 import test.com.sun.javafx.scene.control.infrastructure.MouseEventGenerator;


 118     @Test public void testMenuShowHideWithMenuBarWithXYTranslation() {
 119         final MouseEventGenerator generator = new MouseEventGenerator();
 120         AnchorPane root = new AnchorPane();
 121         Menu menu = new Menu("Menu");
 122         menu.getItems().add(new MenuItem("MenuItem"));
 123         menuBar.getMenus().add(menu);
 124         menuBar.setLayoutX(100);
 125         menuBar.setLayoutY(100);
 126         root.getChildren().add(menuBar);
 127         startApp(root);
 128         tk.firePulse();
 129 
 130         MenuBarSkin skin = (MenuBarSkin)menuBar.getSkin();
 131         assertTrue(skin != null);
 132 
 133         double xval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinX();
 134         double yval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinY();
 135 
 136         MenuButton mb = MenuBarSkinShim.getNodeForMenu(skin, 0);
 137         mb.getScene().getWindow().requestFocus();
 138         SceneHelper.processMouseEvent(scene,
 139             generator.generateMouseEvent(MouseEvent.MOUSE_PRESSED, xval+20, yval+20));
 140         SceneHelper.processMouseEvent(scene,
 141             generator.generateMouseEvent(MouseEvent.MOUSE_RELEASED, xval+20, yval+20));
 142         assertTrue(menu.isShowing());
 143 
 144     }
 145 
 146     @Test public void testSubMenuDismissalWithKeyNavigation() {
 147         final MouseEventGenerator generator = new MouseEventGenerator();
 148         AnchorPane root = new AnchorPane();
 149         Menu menu = new Menu("Menu");
 150         Menu menu1 = new Menu("Menu With SubMenu");
 151         menu.getItems().add(menu1);
 152 
 153         MenuItem menuItem1 = new MenuItem("MenuItem1");
 154         MenuItem menuItem2 = new MenuItem("MenuItem2");
 155         menu1.getItems().addAll(menuItem1, menuItem2);
 156 
 157         menuBar.getMenus().add(menu);
 158         menuBar.setLayoutX(100);
 159         menuBar.setLayoutY(100);
 160 
 161         root.getChildren().add(menuBar);
 162         startApp(root);
 163         tk.firePulse();
 164 
 165         MenuBarSkin skin = (MenuBarSkin)menuBar.getSkin();
 166         assertTrue(skin != null);
 167 
 168         double xval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinX();
 169         double yval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinY();
 170 
 171         MenuButton mb = MenuBarSkinShim.getNodeForMenu(skin, 0);
 172         mb.getScene().getWindow().requestFocus();
 173         SceneHelper.processMouseEvent(scene,
 174             generator.generateMouseEvent(MouseEvent.MOUSE_PRESSED, xval+20, yval+20));
 175         SceneHelper.processMouseEvent(scene,
 176             generator.generateMouseEvent(MouseEvent.MOUSE_RELEASED, xval+20, yval+20));
 177         assertTrue(menu.isShowing());
 178          /* ------------------------------------------------------------------ */
 179 
 180         // Show subMenu
 181         ContextMenuContent menuContent = MenuBarSkinShim.getMenuContent(mb); // ContextMenuContent
 182         Node displayNode = MenuBarMenuButtonShim.getDisplayNodeForMenuItem(menuContent, 0); // MenuItemContainer
 183 
 184         displayNode.getScene().getWindow().requestFocus();
 185         assertTrue(displayNode.getScene().getWindow().isFocused());
 186 
 187         displayNode.requestFocus(); // requestFocus on 1st Menu
 188         assertTrue(displayNode.isFocused());
 189         // update currentFocusedIndex
 190         MenuBarMenuButtonShim.setCurrentFocusedIndex(menuContent, 0);
 191 
 192         // fire KeyEvent (Enter) on menu1 to show submenu
 193         KeyEventFirer keyboard = new KeyEventFirer(menuContent);
 194         keyboard.doKeyPress(KeyCode.ENTER);
 195         tk.firePulse();


 223         MenuItem menuItem = new MenuItem("MenuItem");
 224         menu.getItems().add(menuItem);
 225 
 226         menuBar.getMenus().add(menu);
 227         menuBar.setLayoutX(100);
 228         menuBar.setLayoutY(100);
 229 
 230         root.getChildren().addAll(menuBar);
 231 
 232         startApp(root);
 233         tk.firePulse();
 234 
 235         MenuBarSkin skin = (MenuBarSkin)menuBar.getSkin();
 236         assertTrue(skin != null);
 237         MenuButton mb = MenuBarSkinShim.getNodeForMenu(skin, 0);
 238         mb.getScene().getWindow().requestFocus();
 239 
 240         double xval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinX();
 241         double yval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinY();
 242 
 243         SceneHelper.processMouseEvent(scene,
 244             generator.generateMouseEvent(MouseEvent.MOUSE_PRESSED, xval+20, yval+20));
 245         SceneHelper.processMouseEvent(scene,
 246             generator.generateMouseEvent(MouseEvent.MOUSE_RELEASED, xval+20, yval+20));
 247         assertTrue(menu.isShowing());
 248          /* ------------------------------------------------------------------ */
 249 
 250         // Show Menu
 251         ContextMenuContent menuContent = MenuBarSkinShim.getMenuContent(mb); // ContextMenuContent
 252         Node displayNode = MenuBarMenuButtonShim.getDisplayNodeForMenuItem(menuContent, 0); // MenuItemContainer
 253 
 254         displayNode.getScene().getWindow().requestFocus();
 255         assertTrue(displayNode.getScene().getWindow().isFocused());
 256 
 257         displayNode.requestFocus(); // requestFocus on 1st Menu
 258         assertTrue(displayNode.isFocused());
 259 
 260         // fire KeyEvent (Enter) on menuitem
 261         KeyEventFirer keyboard = new KeyEventFirer(menuContent);
 262         keyboard.doKeyPress(KeyCode.ENTER);
 263         tk.firePulse();
 264 
 265         // confirm menu is closed.


 323 
 324         menu1.getItems().add(menuItem1);
 325         menu2.getItems().add(menuItem2);
 326         menu3.getItems().add(menuItem3);
 327 
 328         menuBar.getMenus().addAll(menu1, menu2, menu3);
 329         menu2.setDisable(true);
 330 
 331         root.getChildren().addAll(menuBar);
 332         startApp(root);
 333         tk.firePulse();
 334 
 335         MenuBarSkin skin = (MenuBarSkin)menuBar.getSkin();
 336         assertTrue(skin != null);
 337 
 338         double xval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinX();
 339         double yval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinY();
 340 
 341         MenuButton mb = MenuBarSkinShim.getNodeForMenu(skin, 0);
 342         mb.getScene().getWindow().requestFocus();
 343         SceneHelper.processMouseEvent(scene,
 344             MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_PRESSED, xval+20, yval+20));
 345         SceneHelper.processMouseEvent(scene,
 346             MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_RELEASED, xval+20, yval+20));
 347         assertTrue(menu1.isShowing());
 348 
 349         KeyEventFirer keyboard = new KeyEventFirer(mb.getScene());
 350         keyboard.doKeyPress(KeyCode.RIGHT);
 351         tk.firePulse();
 352         assertTrue(menu3.isShowing());
 353     }
 354 
 355 
 356      @Test public void testMenuOnShowingEventFiringWithMenuHideOperation() {
 357         VBox root = new VBox();
 358         Menu menu = new Menu("Menu");
 359 
 360         MenuItem menuItem1 = new MenuItem("MenuItem1");
 361         menu.getItems().addAll(menuItem1);
 362 
 363         menuBar.getMenus().add(menu);
 364         menuBar.setLayoutX(100);
 365         menuBar.setLayoutY(100);


 369         tk.firePulse();
 370 
 371         MenuBarSkin skin = (MenuBarSkin)menuBar.getSkin();
 372         assertTrue(skin != null);
 373         double xval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinX();
 374         double yval = (menuBar.localToScene(menuBar.getLayoutBounds())).getMinY();
 375 
 376         boolean click = true;
 377         final Boolean firstClick = new Boolean(click);
 378 
 379         menu.setOnShowing(t -> {
 380             // we should not get here when the menu is hidden
 381             assertEquals(firstClick.booleanValue(), true);
 382         });
 383 
 384         MenuButton mb = MenuBarSkinShim.getNodeForMenu(skin, 0);
 385         mb.getScene().getWindow().requestFocus();
 386         mb.requestFocus();
 387         assertTrue(mb.isFocused());
 388         // click on menu to show
 389         SceneHelper.processMouseEvent(scene,
 390             MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_PRESSED, xval+20, yval+20));
 391         SceneHelper.processMouseEvent(scene,
 392             MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_RELEASED, xval+20, yval+20));
 393         tk.firePulse();
 394         assertEquals(menu.showingProperty().get(), true);
 395         click = false;
 396         // click on menu to hide
 397         SceneHelper.processMouseEvent(scene,
 398             MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_PRESSED, xval+20, yval+20));
 399         SceneHelper.processMouseEvent(scene,
 400             MouseEventGenerator.generateMouseEvent(MouseEvent.MOUSE_RELEASED, xval+20, yval+20));
 401         tk.firePulse();
 402         assertEquals(menu.showingProperty().get(), false);
 403     }
 404 
 405     @Test public void testRemovingMenuItemFromMenuNotInScene() {
 406         VBox root = new VBox();
 407         Menu menu = new Menu("Menu");
 408 
 409         MenuItem menuItem1 = new MenuItem("MenuItem1");
 410         menu.getItems().addAll(menuItem1);
 411 
 412         menuBar.getMenus().add(menu);
 413         root.getChildren().addAll(menuBar);
 414         startApp(root);
 415         tk.firePulse();
 416 
 417         // remove menu from menubar
 418         menuBar.getMenus().remove(menu);
 419         //remove menuitem from menu that was just removed itself.