Package org.locationtech.udig.project.ui.internal

Source Code of org.locationtech.udig.project.ui.internal.MapEditorActionBarContributor

/**
*
*/
package org.locationtech.udig.project.ui.internal;

import org.locationtech.udig.project.ui.ApplicationGIS;
import org.locationtech.udig.project.ui.internal.tool.display.PlaceholderToolbarContributionItem;
import org.locationtech.udig.project.ui.tool.IToolManager;
import org.locationtech.udig.project.ui.tool.ToolConstants;

import org.eclipse.gef.ui.parts.GraphicalEditorWithFlyoutPalette;
import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.action.ICoolBarManager;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.SubCoolBarManager;
import org.eclipse.jface.action.ToolBarContributionItem;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.swt.SWT;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.part.EditorActionBarContributor;

/**
* Adds {@link org.locationtech.udig.project.ui.tool.Tool}s to the actions bars.
* <p>
* You can configure the MapEditorActionBarContributor to only add Action Tools
* (in order to make use of the GEF palette.
*
* @author jeichar
* @version 2.3
*/
public class MapEditorActionBarContributor extends EditorActionBarContributor {
  /** SubCoolBarManager used to wrap normal coolBarManager and watch the add/remove of items */
  private SubCoolBarManager subManager;
 
    @Override
    public void init( IActionBars bars, IWorkbenchPage page ) {
        super.init(bars, page);
    }
   
   
  @Override
  public void contributeToCoolBar(ICoolBarManager coolBarManager) {
    if (coolBarManager instanceof SubCoolBarManager) {
      subManager = (SubCoolBarManager) coolBarManager;
    } else {
      subManager = new SubCoolBarManager(coolBarManager);
    }
      /*
      * Vitalus:
      * For correct toolbar management by Eclipse platform we MUST
      * provide an ID for the toolbar contribution item. It causes saving/restoring
      * workbench configuration by Eclipse with already created toolbar contribution
      * items right after starting, so the solution is just to create fresh set of contribution items when
      * the toolbar is created - placeholders are needed for correct toolbars management by the Eclipse
      * with the same IDs.
      *
      * If not to do these steps it causes problems during resetting perspective because
      * of some "features" of Eclispe JFace implementation.
      */
        subManager.setVisible(true);
       
        /*
         * Contribute action tools to the toolbar.
         */
        ToolBarManager actionToolBarManager = new ToolBarManager(SWT.FLAT);
       
        ApplicationGIS.getToolManager().contributeActionTools(actionToolBarManager, getActionBars());
        if ( actionToolBarManager.getItems().length > 0){
            IContributionItem item = subManager.find(ToolConstants.ACTION_TOOLBAR_ID);
            if(item != null){
                subManager.remove(ToolConstants.ACTION_TOOLBAR_ID);
            }
            ToolBarContributionItem toolBarContributionItem = new ToolBarContributionItem(actionToolBarManager, ToolConstants.ACTION_TOOLBAR_ID);
            subManager.add(toolBarContributionItem);
        }
       
//        ToolBarManager modalToolBarManager = new ToolBarManager(SWT.FLAT);
//        ApplicationGIS.getToolManager().contributeModalTools(modalToolBarManager, getActionBars());
//        if ( modalToolBarManager.getItems().length > 0){
//            IContributionItem item = subManager.find(ToolConstants.MODAL_TOOLBAR_ID);
//            if(item != null){
//                subManager.remove(ToolConstants.MODAL_TOOLBAR_ID);
//            }
//            ToolBarContributionItem toolBarContributionItem = new ToolBarContributionItem(modalToolBarManager, ToolConstants.MODAL_TOOLBAR_ID);
//            subManager.add(toolBarContributionItem);
//        }

    super.contributeToCoolBar(coolBarManager);
  }

  @Override
  public void contributeToMenu(IMenuManager menuManager) {
      ApplicationGIS.getToolManager().contributeToMenu(menuManager);
    super.contributeToMenu(menuManager);
  }
 
  @Override
  public void dispose() {
      subManager.setVisible(false);

      PlaceholderToolbarContributionItem actionToolbarPlaceholder = new PlaceholderToolbarContributionItem(ToolConstants.ACTION_TOOLBAR_ID);
      subManager.add(actionToolbarPlaceholder);
      PlaceholderToolbarContributionItem modalToolbarPlaceholder = new PlaceholderToolbarContributionItem(ToolConstants.MODAL_TOOLBAR_ID);
      subManager.add(modalToolbarPlaceholder);

      getActionBars().updateActionBars();
      super.dispose();
  }

  @Override
  public void setActiveEditor(IEditorPart targetEditor) {
      super.setActiveEditor(targetEditor);
     
        IToolManager toolManager = ApplicationGIS.getToolManager();
        toolManager.contributeGlobalActions(targetEditor, getActionBars());
        toolManager.registerActionsWithPart(targetEditor);
        getActionBars().updateActionBars();
  }
}
TOP

Related Classes of org.locationtech.udig.project.ui.internal.MapEditorActionBarContributor

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.