package au.com.vaadinutils.menu; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.vaadin.shared.ui.BorderStyle; import com.vaadin.ui.MenuBar; import com.vaadin.ui.MenuBar.MenuItem; import com.vaadin.ui.UI; public enum ActionType { NAVIGATE { @Override public void createLeafItem(MenuWrapper menubar, Menu menu, String displayName, final ViewMapping viewmap, boolean addAtTop) { menubar.addItem(displayName, addAtTop, new MenuBar.Command() { private static final long serialVersionUID = 1L; public void menuSelected(MenuItem selectedItem) { UI.getCurrent().getNavigator().navigateTo(viewmap.getViewName()); } }); } }, URL { @Override public void createLeafItem(MenuWrapper menubar, final Menu menu, String displayName, ViewMapping viewmap, boolean addAtTop) { menubar.addItem(displayName, addAtTop, new MenuBar.Command() { private static final long serialVersionUID = 1L; public void menuSelected(MenuItem selectedItem) { UI.getCurrent().getPage().open(menu.url(), ""); } }); } }, URL_NEW_WINDOW { @Override public void createLeafItem(MenuWrapper menubar, final Menu menu, String displayName, ViewMapping viewmap, boolean addAtTop) { menubar.addItem(displayName, addAtTop, new MenuBar.Command() { private static final long serialVersionUID = 1L; public void menuSelected(MenuItem selectedItem) { if (menu.windowSizer() != WindowSizerNull.class) { // dynamically sized window! try { WindowSizer sizer = menu.windowSizer().newInstance(); UI.getCurrent() .getPage() .open(menu.url(), menu.windowName(), sizer.width(), sizer.height(), BorderStyle.DEFAULT); } catch (InstantiationException | IllegalAccessException e) { logger.error(e, e); } } else if (menu.width() > 0 && menu.height() > 0) { UI.getCurrent().getPage() .open(menu.url(), menu.windowName(), menu.width(), menu.height(), BorderStyle.DEFAULT); } else { UI.getCurrent().getPage().open(menu.url(), menu.windowName()); } } }); } }; Logger logger = LogManager.getLogger(); abstract public void createLeafItem(MenuWrapper menuItem, Menu menu, final String displayName, final ViewMapping viewmap, boolean addAtTop); }