@Override
public void startup(final Display display, Map<String, String> properties) throws Exception {
final MenuButton button = new MenuButton();
button.setButtonData("Populate menu and open!");
Window window = new Window(button);
button.getListPopup().getWindowStateListeners().add(new WindowStateListener.Adapter() {
@Override
public Vote previewWindowOpen(Window windowArgument) {
Menu menu = new Menu();
Menu.Section section = new Menu.Section();
menu.getSections().add(section);
section.add(new Menu.Item("A dynamically added menu item"));
button.setMenu(menu);
menuPopulated = true;
return Vote.APPROVE;
}
@Override
public void windowOpened(Window windowArgument) {
if (!menuPopulated)
Alert.alert("Window was opened before the menu was populated." +
"Either previewWindowOpen threw an exception, or it wasn't called before the Window was opened.", windowArgument);
}
@Override
public void windowClosed(Window windowArgument, Display displayArgument, Window owner) {
// Remove menu for subsequent open attempt
button.setMenu(null);
menuPopulated = false;
}
});
window.open(display);
}