class WorkbenchMegaMenuPresenter extends WorkbenchBaseMenuPresenter {

    public void addMenuItem(final String id,
                            final String label,
                            final String parentId,
                            final Command command,
                            final MenuPosition position) {
        final ChildMenuItemPresenter childMenuItemPresenter = childMenuItemPresenters.get();
        childMenuItemPresenter.setup(label,
                                     command);
        selectableMenuItemByIdentifier.put(id, childMenuItemPresenter);
        canBeDisabledMenuItemByIdentifier.put(id, childMenuItemPresenter);
        canHideMenuItemByIdentifier.put(id, childMenuItemPresenter);

        if (parentId == null || parentId.isEmpty()) {
            if (MenuPosition.RIGHT.equals(position)) {
                view.addMenuItemOnRight(childMenuItemPresenter);
            } else {
                view.addMenuItemOnLeft(childMenuItemPresenter);
            }
        } else {
            view.addMenuItemOnParent(childMenuItemPresenter,
                                     hasChildrenMenuItemByIdentifier.get(parentId));
        }
    }

    public  WorkbenchMegaMenuPresenter(final AuthorizationManager authzManager,
                                      final PerspectiveManager perspectiveManager,
                                      final ActivityManager activityManager,
                                      final User identity,
                                      final View view,
                                      final ManagedInstance<MegaMenuBrand> megaMenuBrands,
                                      final PlaceManager placeManager,
                                      final AuthorizationManager authorizationManager,
                                      final SessionInfo sessionInfo,
                                      final ManagedInstance<ChildMenuItemPresenter> childMenuItemPresenters,
                                      final ManagedInstance<GroupMenuItemPresenter> groupMenuItemPresenters,
                                      final ManagedInstance<ChildContextMenuItemPresenter> childContextMenuItemPresenters,
                                      final ManagedInstance<GroupContextMenuItemPresenter> groupContextMenuItemPresenters,
                                      final Workbench workbench,
                                      final ExperimentalActivitiesAuthorizationManager experimentalActivitiesAuthorizationManager);

}