Package net.sf.logsaw.rcp

Source Code of net.sf.logsaw.rcp.ApplicationActionBarAdvisor

/*******************************************************************************
* Copyright (c) 2010, 2011 LogSaw project and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*    LogSaw project committers - initial API and implementation
*******************************************************************************/
package net.sf.logsaw.rcp;

import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.GroupMarker;
import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.action.IContributionManagerOverrides;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.util.Util;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
import org.eclipse.ui.actions.ContributionItemFactory;
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;
import org.eclipse.ui.menus.CommandContributionItem;

/**
* An action bar advisor is responsible for creating, adding, and disposing of
* the actions added to a workbench window. Each window will be populated with
* new actions.
*/
public class ApplicationActionBarAdvisor extends ActionBarAdvisor {

  // Actions - important to allocate these only in makeActions, and then use
  // them
  // in the fill methods. This ensures that the actions aren't recreated
  // when fillActionBars is called with FILL_PROXY.
  private IWorkbenchAction quitAction;
  private IContributionItem showViewItem;
  private IWorkbenchAction newEditorAction;
  private IWorkbenchAction resetPerspectiveAction;
  private IWorkbenchAction openPreferencesAction;
  private IWorkbenchAction showHelpAction;
  private IWorkbenchAction searchHelpAction;
  private IWorkbenchAction dynamicHelpAction;
  private IWorkbenchAction aboutAction;

  /**
   * Constructor.
   * @param configurer
   */
  public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {
    super(configurer);
  }

  @Override
  protected void makeActions(final IWorkbenchWindow window) {
    // Creates the actions and registers them.
    // Registering is needed to ensure that key bindings work.
    // The corresponding commands keybindings are defined in the plugin.xml
    // file.
    // Registering also provides automatic disposal of the actions when
    // the window is closed.

    quitAction = ActionFactory.QUIT.create(window);
    register(quitAction);
   
    showViewItem = ContributionItemFactory.VIEWS_SHORTLIST.create(window);
   
    newEditorAction = ActionFactory.NEW_EDITOR.create(window);
    register(newEditorAction);
   
    resetPerspectiveAction = ActionFactory.RESET_PERSPECTIVE.create(window);
    register(resetPerspectiveAction);
   
    openPreferencesAction = ActionFactory.PREFERENCES.create(window);
    register(openPreferencesAction);
   
    showHelpAction = ActionFactory.HELP_CONTENTS.create(window);
    register(showHelpAction);
   
    searchHelpAction = ActionFactory.HELP_SEARCH.create(window);
    register(searchHelpAction);
   
    dynamicHelpAction = ActionFactory.DYNAMIC_HELP.create(window);
    register(dynamicHelpAction);
   
    aboutAction = ActionFactory.ABOUT.create(window);
    register(aboutAction);
  }

  @Override
  protected void fillMenuBar(IMenuManager menuBar) {
    MenuManager fileMenu = new MenuManager(Messages.ApplicationActionBarAdvisor_menu_file,
        IWorkbenchActionConstants.M_FILE);
    menuBar.add(fileMenu);
    {
      fileMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
      fileMenu.add(new Separator());
          // If we're on OS X we shouldn't show this command in the File menu. It
      // should be invisible to the user. However, we should not remove it -
      // the carbon UI code will do a search through our menu structure
      // looking for it when Cmd-Q is invoked (or Quit is chosen from the
      // application menu.
          ActionContributionItem quitItem = new ActionContributionItem(quitAction);
          quitItem.setVisible(!Util.isMac());
      fileMenu.add(quitItem);
    }
   
    MenuManager windowMenu = new MenuManager(Messages.ApplicationActionBarAdvisor_menu_window,
        IWorkbenchActionConstants.M_WINDOW);
    menuBar.add(windowMenu);
    {
      MenuManager openViewMenu = new MenuManager(Messages.ApplicationActionBarAdvisor_menu_showView, "showView"); //$NON-NLS-1$
      openViewMenu.add(showViewItem);
      windowMenu.add(newEditorAction);
          windowMenu.add(new Separator());
      windowMenu.add(openViewMenu);
          windowMenu.add(new Separator());
          windowMenu.add(resetPerspectiveAction);
          Separator sep = new Separator(IWorkbenchActionConstants.MB_ADDITIONS);
      sep.setVisible(!Util.isMac());
      windowMenu.add(sep);
      // See comment above at quitAction
          ActionContributionItem openPreferencesItem = new ActionContributionItem(openPreferencesAction);
          openPreferencesItem.setVisible(!Util.isMac());
          windowMenu.add(openPreferencesItem);
    }
   
    MenuManager helpMenu = new MenuManager(Messages.ApplicationActionBarAdvisor_menu_help,
        IWorkbenchActionConstants.M_HELP);
    helpMenu.setOverrides(new IContributionManagerOverrides() {
      /* (non-Javadoc)
       * @see org.eclipse.jface.action.IContributionManagerOverrides#getVisible(org.eclipse.jface.action.IContributionItem)
       */
      @Override
      public Boolean getVisible(IContributionItem item) {
        if ((item instanceof CommandContributionItem) &&
            ((CommandContributionItem) item).getId().equals("org.eclipse.equinox.p2.ui.sdk.install")) {
          // Hide the 'Install New Software' action
          return Boolean.FALSE;
        }
        return null;
      }
     
      /* (non-Javadoc)
       * @see org.eclipse.jface.action.IContributionManagerOverrides#getText(org.eclipse.jface.action.IContributionItem)
       */
      @Override
      public String getText(IContributionItem item) {
        return null;
      }
     
      /* (non-Javadoc)
       * @see org.eclipse.jface.action.IContributionManagerOverrides#getEnabled(org.eclipse.jface.action.IContributionItem)
       */
      @Override
      public Boolean getEnabled(IContributionItem item) {
        return null;
      }
     
      /* (non-Javadoc)
       * @see org.eclipse.jface.action.IContributionManagerOverrides#getAcceleratorText(org.eclipse.jface.action.IContributionItem)
       */
      @Override
      public String getAcceleratorText(IContributionItem item) {
        return null;
      }
     
      /* (non-Javadoc)
       * @see org.eclipse.jface.action.IContributionManagerOverrides#getAccelerator(org.eclipse.jface.action.IContributionItem)
       */
      @Override
      public Integer getAccelerator(IContributionItem item) {
        return null;
      }
    });
    menuBar.add(helpMenu);
    {
      helpMenu.add(showHelpAction);
      helpMenu.add(searchHelpAction);
      helpMenu.add(dynamicHelpAction);
      helpMenu.add(new Separator());
      helpMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
      helpMenu.add(new Separator());
      helpMenu.add(aboutAction);
    }
  }
}
TOP

Related Classes of net.sf.logsaw.rcp.ApplicationActionBarAdvisor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.