@Nonnull public IMenuItemPage createItem (@Nonnull final String sParentID, @Nonnull final String sItemID, @Nonnull final IPage aPage) { final DefaultTreeItemWithID <String, IMenuObject> aParentItem = getItemWithID (sParentID); if (aParentItem == null) throw new IllegalArgumentException ("No such parent menu item '" + sParentID + "'"); return internalCreateChildItem (aParentItem, new MenuItemPage (sItemID, aPage)); }
@Nonnull public IMenuItemExternal createItem (@Nonnull final String sParentID, @Nonnull final String sItemID, @Nonnull final IHasSimpleURL aURL, @Nonnull final IHasDisplayText aName) { final DefaultTreeItemWithID <String, IMenuObject> aParentItem = getItemWithID (sParentID); if (aParentItem == null) throw new IllegalArgumentException ("No such parent menu item '" + sParentID + "'"); return internalCreateChildItem (aParentItem, new MenuItemExternal (sItemID, aURL, aName)); }
@Nonnull public IMenuSeparator createSeparator (@Nonnull final String sParentID, @Nonnull @Nonempty final String sID) { final DefaultTreeItemWithID <String, IMenuObject> aParentItem = getItemWithID (sParentID); if (aParentItem == null) throw new IllegalArgumentException ("No such parent menu item '" + sParentID + "'"); return internalCreateChildItem (aParentItem, new MenuSeparator (sID)); }
@Nullable private IMenuItemPage _getDefaultMenuItem (@Nullable final String sMenuItemID) { if (sMenuItemID != null) { // Resolve default menu item ID final DefaultTreeItemWithID <String, IMenuObject> aTreeItem = getItemWithID (sMenuItemID); if (aTreeItem != null) { final IMenuObject aMenuItem = aTreeItem.getData (); if (aMenuItem instanceof IMenuItemPage) return (IMenuItemPage) aMenuItem; LOGGER.warn ("The default menu object ID '" + sMenuItemID + "' does not resolve to an IMenuItemPage but to " + ClassHelper.getSafeClassName (aMenuItem)); } else LOGGER.warn ("Failed to resolve the default menu item ID '" + sMenuItemID + "'"); } return null; }
@Nullable public IMenuItemPage replaceMenuItem (@Nonnull final IPage aNewPage) { ValueEnforcer.notNull (aNewPage, "NewPage"); final String sID = aNewPage.getID (); final DefaultTreeItemWithID <String, IMenuObject> aItem = getItemWithID (sID); if (aItem == null) return null; final IMenuItemPage ret = new MenuItemPage (sID, aNewPage); aItem.setData (ret); return ret; }
@Nullable public DefaultTreeItemWithID <String, IMenuObject> getRootItemOfItemWithID (@Nullable final String sMenuItemID) { // Resolve tree item final DefaultTreeItemWithID <String, IMenuObject> aItem = getItemWithID (sMenuItemID); if (aItem == null || aItem.isRootItem ()) return null; // Find root item of selected item DefaultTreeItemWithID <String, IMenuObject> aCurRootItem = aItem; while (!aCurRootItem.getParent ().isRootItem ()) aCurRootItem = aCurRootItem.getParent (); return aCurRootItem; }