--- /dev/null 2015-09-03 15:16:45.000000000 -0700 +++ new/modules/controls/src/main/java/com/sun/javafx/scene/control/MenuBarButton.java 2015-09-03 15:16:43.736405000 -0700 @@ -0,0 +1,73 @@ +package com.sun.javafx.scene.control; + +import javafx.beans.value.ChangeListener; +import javafx.collections.ListChangeListener; +import javafx.scene.AccessibleAttribute; +import javafx.scene.AccessibleRole; +import javafx.scene.control.Menu; +import javafx.scene.control.MenuButton; +import javafx.scene.control.MenuItem; +import javafx.scene.control.skin.MenuBarSkin; + +public class MenuBarButton extends MenuButton { + public ChangeListener menuListener; + public MenuBarSkin menuBarSkin; + public Menu menu; + + private final ListChangeListener itemsListener; + private final ListChangeListener styleClassListener; + + public MenuBarButton(MenuBarSkin menuBarSkin, Menu menu) { + super(menu.getText(), menu.getGraphic()); + this.menuBarSkin = menuBarSkin; + setAccessibleRole(AccessibleRole.MENU); + + // listen to changes in menu items & update menuButton items + menu.getItems().addListener(itemsListener = c -> { + while (c.next()) { + getItems().removeAll(c.getRemoved()); + getItems().addAll(c.getFrom(), c.getAddedSubList()); + } + }); + menu.getStyleClass().addListener(styleClassListener = c -> { + while(c.next()) { + for(int i=c.getFrom(); i