Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (C) 2014 Philip Helger (www.helger.com) philip[at]helger[dot]com Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
 
 package com.helger.appbasics.app.menu;
 
 import java.util.List;
 
 
 
Represents a single menu tree

Author(s):
Philip Helger
 
 public class MenuTree extends DefaultTreeWithGlobalUniqueID <StringIMenuObjectimplements IMenuTree
 {
   private static final Logger s_aLogger = LoggerFactory.getLogger (MenuTree.class);
 
   private List <Stringm_aDefaultMenuItemIDs;
 
   public MenuTree ()
   {}
 
   @Nonnull
   private static <T extends IMenuObject> T _createChildItem (@Nonnull final DefaultTreeItemWithID <StringIMenuObjectaParentItem,
                                                              @Nonnull final T aMenuObject)
   {
     if (aParentItem.createChildItem (aMenuObject.getID (), aMenuObjectfalse) == null)
       throw new IllegalArgumentException ("Failed to add the menu object " +
                                           aMenuObject +
                                           " probably the ID is already contained!");
     return aMenuObject;
   }
 
   @Nonnull
   {
     return _createChildItem (getRootItem (), new MenuSeparator ());
   }
 
   @Nonnull
   public IMenuSeparator createSeparator (@Nonnull final String sParentID)
   {
     final DefaultTreeItemWithID <StringIMenuObjectaParentItem = getItemWithID (sParentID);
     if (aParentItem == null)
       throw new IllegalArgumentException ("No such parent menu item '" + sParentID + "'");
     return _createChildItem (aParentItemnew MenuSeparator ());
   }
 
   @Nonnull
   public IMenuSeparator createSeparator (@Nonnull final IMenuItem aParent)
   {
     ValueEnforcer.notNull (aParent"Parent");
 
     return createSeparator (aParent.getID ());
   }
 
   @Nonnull
   public IMenuItemPage createRootItem (@Nonnull final String sItemID, @Nonnull final IPage aPage)
   {
     return _createChildItem (getRootItem (), new MenuItemPage (sItemIDaPage));
   }
 
   @Nonnull
  public IMenuItemPage createRootItem (@Nonnull final IPage aPage)
  {
    ValueEnforcer.notNull (aPage"Page");
    return createRootItem (aPage.getID (), aPage);
  }
  public IMenuItemPage createItem (@Nonnull final String sParentID,
                                   @Nonnull final String sItemID,
                                   @Nonnull final IPage aPage)
  {
    final DefaultTreeItemWithID <StringIMenuObjectaParentItem = getItemWithID (sParentID);
    if (aParentItem == null)
      throw new IllegalArgumentException ("No such parent menu item '" + sParentID + "'");
    return _createChildItem (aParentItemnew MenuItemPage (sItemIDaPage));
  }
  public IMenuItemPage createItem (@Nonnull final String sParentID, @Nonnull final IPage aPage)
  {
    ValueEnforcer.notNull (aPage"Page");
    return createItem (sParentIDaPage.getID (), aPage);
  }
  public IMenuItemPage createItem (@Nonnull final IMenuItem aParent, @Nonnull final IPage aPage)
  {
    ValueEnforcer.notNull (aParent"Parent");
    return createItem (aParent.getID (), aPage);
  }
  public IMenuItemExternal createRootItem (@Nonnull final String sItemID,
                                           @Nonnull final ISimpleURL aURL,
                                           @Nonnull final IHasDisplayText aName)
  {
    return _createChildItem (getRootItem (), new MenuItemExternal (sItemIDaURLaName));
  }
  public IMenuItemExternal createItem (@Nonnull final IMenuItem aParent,
                                       @Nonnull final String sItemID,
                                       @Nonnull final ISimpleURL aURL,
                                       @Nonnull final IHasDisplayText aName)
  {
    ValueEnforcer.notNull (aParent"Parent");
    return createItem (aParent.getID (), sItemIDaURLaName);
  }
  public IMenuItemExternal createItem (@Nonnull final String sParentID,
                                       @Nonnull final String sItemID,
                                       @Nonnull final ISimpleURL aURL,
                                       @Nonnull final IHasDisplayText aName)
  {
    final DefaultTreeItemWithID <StringIMenuObjectaParentItem = getItemWithID (sParentID);
    if (aParentItem == null)
      throw new IllegalArgumentException ("No such parent menu item '" + sParentID + "'");
    return _createChildItem (aParentItemnew MenuItemExternal (sItemIDaURLaName));
  }
  public void setDefaultMenuItemID (@Nullable final String sDefaultMenuItemID)
  {
     = sDefaultMenuItemID == null ? null : ContainerHelper.newList (sDefaultMenuItemID);
  }
  public void setDefaultMenuItemIDs (@Nullable final String... aDefaultMenuItemIDs)
  {
     = ArrayHelper.isEmpty (aDefaultMenuItemIDs) ? null
                                                                     : ContainerHelper.newList (aDefaultMenuItemIDs);
  }
  public void setDefaultMenuItemIDs (@Nullable final List <StringaDefaultMenuItemIDs)
  {
     = ContainerHelper.isEmpty (aDefaultMenuItemIDs) ? null
                                                                         : ContainerHelper.newList (aDefaultMenuItemIDs);
  }
  {
    return ContainerHelper.getFirstElement ();
  }
  {
    return ContainerHelper.newList ();
  }
  private IMenuItemPage _getDefaultMenuItem (@Nullable final String sMenuItemID)
  {
    if (sMenuItemID != null)
    {
      // Resolve default menu item ID
      final DefaultTreeItemWithID <StringIMenuObjectaTreeItem = getItemWithID (sMenuItemID);
      if (aTreeItem != null)
      {
        final IMenuObject aMenuItem = aTreeItem.getData ();
        if (aMenuItem instanceof IMenuItemPage)
          return (IMenuItemPageaMenuItem;
        .warn ("The default menu object ID '" +
                        sMenuItemID +
                        "' does not resolve to an IMenuItemPage but to " +
                        CGStringHelper.getSafeClassName (aMenuItem));
      }
      else
        .warn ("Failed to resolve the default menu item ID '" + sMenuItemID + "'");
    }
    return null;
  }
  {
  }
  {
    final List <IMenuItemPageret = new ArrayList <IMenuItemPage> ();
    if ( != null)
      for (final String sDefaultMenuItemID : )
      {
        final IMenuItemPage aDefaultMenuItem = _getDefaultMenuItem (sDefaultMenuItemID);
        if (aDefaultMenuItem != null)
          ret.add (aDefaultMenuItem);
      }
    return ret;
  }
  public IMenuObject getMenuObjectOfID (@Nullable final String sID)
  {
    return getItemDataWithID (sID);
  }
  {
    ValueEnforcer.notNull (aCallback"Callback");
    {
      @Override
      public final void onItemBeforeChildren (@Nonnull final DefaultTreeItemWithID <StringIMenuObjectaItem)
      {
        aCallback.run (aItem.getData ());
      }
    });
  }
  public IMenuItemPage replaceMenuItem (@Nonnull final IPage aNewPage)
  {
    ValueEnforcer.notNull (aNewPage"NewPage");
    final String sID = aNewPage.getID ();
    final DefaultTreeItemWithID <StringIMenuObjectaItem = getItemWithID (sID);
    if (aItem == null)
      return null;
    final IMenuItemPage ret = new MenuItemPage (sIDaNewPage);
    aItem.setData (ret);
    return ret;
  }
  {
    // Resolve tree item
    final DefaultTreeItemWithID <StringIMenuObjectaItem = getItemWithID (sMenuItemID);
    if (aItem == null || aItem.isRootItem ())
      return null;
    // Find root item of selected item
    DefaultTreeItemWithID <StringIMenuObjectaCurRootItem = aItem;
    while (!aCurRootItem.getParent ().isRootItem ())
      aCurRootItem = aCurRootItem.getParent ();
    return aCurRootItem;
  }
  public IMenuObject getRootItemDataOfItemWithID (@Nullable final String sMenuItemID)
  {
    final DefaultTreeItemWithID <StringIMenuObjectaTreeItem = getRootItemOfItemWithID (sMenuItemID);
    return aTreeItem == null ? null : aTreeItem.getData ();
  }
  public boolean equals (final Object o)
  {
    if (o == this)
      return true;
    if (!super.equals (o))
      return false;
    final MenuTree rhs = (MenuTreeo;
    return EqualsUtils.equals (rhs.m_aDefaultMenuItemIDs);
  }
  public int hashCode ()
  {
    return HashCodeGenerator.getDerived (super.hashCode ()).append ().getHashCode ();
  }
  public String toString ()
  {
    return ToStringGenerator.getDerived (super.toString ())
                            .appendIfNotNull ("defaultMenuItemIDs")
                            .toString ();
  }
New to GrepCode? Check out our FAQ X