/** * Handles an action for the given target. The handler method may just discard the action if it's * not suitable. * * @param action the action to be handled. * @param sender the sender of the action. This is most often the action container. * @param target the target of the action. For item containers this is the item id. */ @Override @SuppressWarnings("unchecked") public void handleAction(Action action, Object sender, Object target) { if (target != null) { IntID itemId = (IntID) target; Item item = this.menuTree.getItem(itemId); MenuItemData itemData = this.menuTree.getItemData(itemId); if (item != null) { Map<Action, MenuActionProvider> actionComponentHandlerMap = itemData.getActionComponentHandlers(); if (actionComponentHandlerMap != null) { MenuActionProvider menuActionProvider = actionComponentHandlerMap.get(action); if (menuActionProvider != null) { if (menuActionProvider instanceof ComponentHandler) { this.layout.setCenter(((ComponentHandler) menuActionProvider).getComponent()); this.layout.doLayout(); } if (menuActionProvider instanceof MenuActionExecutor) { ((MenuActionExecutor) menuActionProvider).executeMenuAction(); } } } } } }
/** * Private handler of ValueChangedListener for MenuTree. * * @param itemId The item to handle. */ private void menuTreeItemHandler(IntID itemId) { if (itemId != null) { MenuItemData itemData = this.menuTree.getItemData(itemId); ComponentHandler guiHandler = itemData.getSelectComponentHandler(); if (guiHandler != null) { if (this.layout.getCenter() == null) { this.layout.setCenter(guiHandler.getComponent()); } else { if (this.layout.getCenter().equals(guiHandler.getComponent())) { this.layout.setCenter(null); } else { this.layout.setCenter(guiHandler.getComponent()); } } } else { this.layout.setCenter(null); } } else { this.layout.setCenter(null); } this.layout.doLayout(); }