@Nullable public IMenuItemPage getDefaultMenuItem () { return _getDefaultMenuItem (getDefaultMenuItemID ()); }
@Nullable public IMenuObject getMenuObjectOfID (@Nullable final String sID) { return getItemDataWithID (sID); }
@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 IMenuItemPage createRootItem (@Nonnull final String sItemID, @Nonnull final IPage aPage) { return internalCreateChildItem (getRootItem (), new MenuItemPage (sItemID, aPage)); }
@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; }
@Override protected void initMenu () { // Determine backend // Required before menu! SMPMetaManager.initBackendFromConfiguration (); // Create all menu items { final MenuTree aMenuTree = new MenuTree (); MenuPublic.init (aMenuTree); PhotonGlobalState.state (CApplicationID.APP_ID_PUBLIC).setMenuTree (aMenuTree); } { final MenuTree aMenuTree = new MenuTree (); MenuSecure.init (aMenuTree); PhotonGlobalState.state (CApplicationID.APP_ID_SECURE).setMenuTree (aMenuTree); } }
@Nullable public IMenuObject getRootItemDataOfItemWithID (@Nullable final String sMenuItemID) { final DefaultTreeItemWithID <String, IMenuObject> aTreeItem = getRootItemOfItemWithID (sMenuItemID); return aTreeItem == null ? null : aTreeItem.getData (); }
@Nonnull @ReturnsMutableCopy public ICommonsList <IMenuItemPage> getAllDefaultMenuItems () { final ICommonsList <IMenuItemPage> ret = new CommonsArrayList <> (); if (m_aDefaultMenuItemIDs != null) for (final String sDefaultMenuItemID : m_aDefaultMenuItemIDs) { final IMenuItemPage aDefaultMenuItem = _getDefaultMenuItem (sDefaultMenuItemID); if (aDefaultMenuItem != null) ret.add (aDefaultMenuItem); } return ret; }
@Nonnull public IMenuItemExternal createRootItem (@Nonnull final String sItemID, @Nonnull final IHasSimpleURL aURL, @Nonnull final IHasDisplayText aName) { return internalCreateChildItem (getRootItem (), new MenuItemExternal (sItemID, aURL, aName)); }
@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; }
@Override protected void initMenu () { // Determine backend // Required before menu! SMPMetaManager.initBackendFromConfiguration (); // Create all menu items { final MenuTree aMenuTree = new MenuTree (); MenuPublic.init (aMenuTree); PhotonGlobalState.state (CApplicationID.APP_ID_PUBLIC).setMenuTree (aMenuTree); } { final MenuTree aMenuTree = new MenuTree (); MenuSecure.init (aMenuTree); PhotonGlobalState.state (CApplicationID.APP_ID_SECURE).setMenuTree (aMenuTree); } }
@Nonnull public IMenuSeparator createRootSeparator (@Nonnull @Nonempty final String sID) { return internalCreateChildItem (getRootItem (), new MenuSeparator (sID)); }
@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)); }
@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; }
@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)); }