eu.aniketos.wp1.ststool.diagram.application.DiagramEditorActionBarAdvisor.java Source code

Java tutorial

Introduction

Here is the source code for eu.aniketos.wp1.ststool.diagram.application.DiagramEditorActionBarAdvisor.java

Source

/*
* DiagramEditorActionBarAdvisor.java
*
* This file is part of the STS-Tool project.
* Copyright (c) 2011-2012 "University of Trento - DISI" All rights reserved.
*
* Is strictly forbidden to remove this copyright notice from this source code.
*
* Disclaimer of Warranty:
* STS-Tool (this software) is provided "as-is" and without warranty of any kind, 
* express, implied or otherwise, including without limitation, any warranty of 
* merchantability or fitness for a particular purpose.
* In no event shall the copyright holder or contributors be liable for any direct,
* indirect, incidental, special, exemplary, or consequential damages
* including, but not limited to, procurement of substitute goods or services;
* loss of use, data, or profits; or business interruption) however caused and on
* any theory of liability, whether in contract, strict liability, or tort (including
* negligence or otherwise) arising in any way out of the use of this software, even 
* if advised of the possibility of such damage.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License version 3
* as published by the Free Software Foundation with the addition of the
* following permission added to Section 15 as permitted in Section 7(a):
* FOR ANY PART OF THE COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY 
* "University of Trento - DISI","University of Trento - DISI" DISCLAIMS THE
* WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
*
* See the GNU Affero General Public License for more details.
* You should have received a copy of the GNU Affero General Public License
* along with this program; if not, see http://www.gnu.org/licenses or write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA, 02110-1301 USA, or download the license from the following URL:
* http://www.sts-tool.eu/License.php
*
* For more information, please contact STS-Tool group at this
* address: ststool@disi.unitn.it
*
*/
package eu.aniketos.wp1.ststool.diagram.application;

import java.io.File;
import java.util.Iterator;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.emf.common.ui.URIEditorInput;
import org.eclipse.emf.common.ui.action.WorkbenchWindowActionDelegate;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.edit.ui.action.LoadResourceAction;
import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.GroupMarker;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.ICoolBarManager;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.action.ToolBarContributionItem;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.ui.IEditorDescriptor;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.actions.ContributionItemFactory;
import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;
import org.eclipse.ui.internal.WorkbenchPlugin;
import org.eclipse.ui.internal.registry.ActionSetRegistry;
import org.eclipse.ui.internal.registry.IActionSetDescriptor;
import eu.aniketos.wp1.ststool.diagram.part.Messages;
import eu.aniketos.wp1.ststool.diagram.part.StsToolCreationWizard;

/**
 * @generated
 */
@SuppressWarnings("restriction")
public class DiagramEditorActionBarAdvisor extends ActionBarAdvisor {

    /**
     * @generated
     */
    private ActionFactory.IWorkbenchAction lockToolBarAction;
    /**
     * @generated
     */
    private ActionFactory.IWorkbenchAction toggleCoolbarAction;
    private static final String[] actionSetId = new String[] { "org.eclipse.ui.WorkingSetActionSet", //$NON-NLS-1$
            "org.eclipse.ui.edit.text.actionSet.navigation", //$NON-NLS-1$
            "org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo", //$NON-NLS-1$
            "org.eclipse.ui.actionSet.openFiles", //$NON-NLS-1$
            "org.eclipse.ui.edit.text.actionSet.annotationNavigation", //$NON-NLS-1$
            "org.eclipse.ui.NavigateActionSet", //$NON-NLS-1$
            "org.eclipse.search.searchActionSet", "org.eclipse.ui.actionSet.keyBindings" }; //$NON-NLS-1$

    /**
     * Remove unwanted action provided by plugins solution found on http://andy.ekiwi.de/?p=41
     */
    private void removeUnWantedActions() {
        ActionSetRegistry asr = WorkbenchPlugin.getDefault().getActionSetRegistry();
        IActionSetDescriptor[] actionSets = asr.getActionSets();
        IExtension ext = null;
        for (IActionSetDescriptor actionSet : actionSets) {
            for (String element : actionSetId) {
                //System.out.println(actionSet.getId());
                if (element.equals(actionSet.getId())) {
                    // System.out.println("     DELETED");
                    ext = actionSet.getConfigurationElement().getDeclaringExtension();
                    asr.removeExtension(ext, new Object[] { actionSet });
                }
            }
        }
    }

    IWorkbenchAction aboutAction;
    IWorkbenchAction introAction;
    private IWorkbenchAction preferencesAction;
    IWorkbenchAction resetPerspective;
    IWorkbenchAction helpContentsActon;

    private MenuManager perspectiveMenu = new MenuManager("&Open Perspective");
    private MenuManager viewMenu = new MenuManager("Show &View");

    /**
     * @generated
     */
    public DiagramEditorActionBarAdvisor(IActionBarConfigurer configurer) {
        super(configurer);
    }

    /**
     * @generated
     */
    private IWorkbenchWindow getWindow() {
        return getActionBarConfigurer().getWindowConfigurer().getWindow();
    }

    /**
     * Register the actions to the workbench
     * 
     * @generated NOT
     */
    @Override
    protected void makeActions(IWorkbenchWindow window) {

        register(ActionFactory.CLOSE.create(window));

        register(ActionFactory.CLOSE_ALL.create(window));

        register(ActionFactory.SAVE.create(window));

        register(ActionFactory.SAVE_AS.create(window));

        register(ActionFactory.SAVE_ALL.create(window));

        register(ActionFactory.QUIT.create(window));

        aboutAction = ActionFactory.ABOUT.create(window);
        register(aboutAction);

        preferencesAction = ActionFactory.PREFERENCES.create(window);
        register(preferencesAction);

        perspectiveMenu.add(ContributionItemFactory.PERSPECTIVES_SHORTLIST.create(window));
        viewMenu.add(ContributionItemFactory.VIEWS_SHORTLIST.create(window));

        resetPerspective = ActionFactory.RESET_PERSPECTIVE.create(window);
        register(resetPerspective);

        helpContentsActon = ActionFactory.HELP_CONTENTS.create(window);
        register(helpContentsActon);

        try {
            introAction = ActionFactory.INTRO.create(window);
            introAction.setText("Change Log");
            register(introAction);
        } catch (Exception e) {
        }

    }

    /**
     * Add the eclipse menu entry
     * 
     * @generated NOT
     */
    @Override
    protected void fillMenuBar(IMenuManager menu) {
        //menu:org.eclipse.ui.main.menu
        //toolbar:org.eclipse.ui.main.toolbar
        {
            //file
            IMenuManager menuX = new MenuManager(Messages.ApplicationMenuName_File,
                    IWorkbenchActionConstants.M_FILE);

            //new
            menuX.add(new GroupMarker("new"));
            //open
            menuX.add(new Separator("open"));
            //import
            menuX.add(new Separator("import"));

            menuX.add(new Separator());

            //save
            menuX.add(getAction(ActionFactory.SAVE.getId()));

            //saveAs
            menuX.add(getAction(ActionFactory.SAVE_AS.getId()));

            //saveAll
            menuX.add(getAction(ActionFactory.SAVE_ALL.getId()));

            menuX.add(new Separator());

            //close
            menuX.add(getAction(ActionFactory.CLOSE.getId()));

            //closeAll
            menuX.add(getAction(ActionFactory.CLOSE_ALL.getId()));

            menuX.add(new Separator());

            //additions
            menuX.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));

            //ExportAdditions
            menuX.add(new GroupMarker("ExportAdditions"));

            menuX.add(new Separator());

            //quit
            menuX.add(getAction(ActionFactory.QUIT.getId()));

            //fileEnd
            menuX.add(new GroupMarker(IWorkbenchActionConstants.FILE_END));
            menu.add(menuX);
        }

        //additions
        menu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));

        {
            //window
            IMenuManager menuX = new MenuManager(Messages.ApplicationMenuName_Window,
                    IWorkbenchActionConstants.M_WINDOW);

            //org.eclipse.ui.window.resetPerspective
            menuX.add(resetPerspective);
            menuX.add(new Separator());
            //org.eclipse.ui.window.preferences
            menuX.add(preferencesAction);
            //additions
            menuX.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
            menu.add(menuX);
        }

        {
            //help
            IMenuManager menuX = new MenuManager(Messages.ApplicationMenuName_Help,
                    IWorkbenchActionConstants.M_HELP);

            //org.eclipse.ui.help.quickStartAction
            if (introAction != null)
                menuX.add(introAction);

            //helpStart
            menuX.add(new GroupMarker(IWorkbenchActionConstants.HELP_START));
            menuX.add(helpContentsActon);
            //help
            menuX.add(new GroupMarker(IWorkbenchActionConstants.HELP_END));

            //menuX.add(helpAction);
            menuX.add(new Separator());
            menuX.add(aboutAction);

            //additions
            menuX.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
            menu.add(menuX);
        }
    }

    /**
     * Add the eclipse coolbar entry
     * 
     * @generated NOT
     */
    @Override
    protected void fillCoolBar(ICoolBarManager toolBar) {

        myFillCoolBar(toolBar);

    }

    /**
     * @generated
     */
    private static boolean openEditor(IWorkbench workbench, URI fileURI) {
        IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
        IWorkbenchPage page = workbenchWindow.getActivePage();
        IEditorDescriptor editorDescriptor = workbench.getEditorRegistry().getDefaultEditor(fileURI.toFileString());
        if (editorDescriptor == null) {
            MessageDialog.openError(workbenchWindow.getShell(),
                    Messages.DiagramEditorActionBarAdvisor_DefaultFileEditorTitle,
                    NLS.bind(Messages.DiagramEditorActionBarAdvisor_DefaultFileEditorMessage,
                            fileURI.toFileString()));
            return false;
        } else {
            try {
                page.openEditor(new URIEditorInput(fileURI), editorDescriptor.getId());
            } catch (PartInitException exception) {
                MessageDialog.openError(workbenchWindow.getShell(),
                        Messages.DiagramEditorActionBarAdvisor_DefaultEditorOpenErrorTitle, exception.getMessage());
                return false;
            }
        }
        return true;
    }

    /**
     * @generated
     */
    public static class NewDiagramAction extends WorkbenchWindowActionDelegate {

        /**
         * @generated
         */
        public void run(IAction action) {
            StsToolCreationWizard wizard = new StsToolCreationWizard();
            wizard.init(getWindow().getWorkbench(), StructuredSelection.EMPTY);
            WizardDialog wizardDialog = new WizardDialog(getWindow().getShell(), wizard);
            wizardDialog.open();
        }
    }

    /**
     * @generated
     */
    public static class OpenURIAction extends WorkbenchWindowActionDelegate {

        /**
         * @generated
         */
        public void run(IAction action) {
            LoadResourceAction.LoadResourceDialog loadResourceDialog = new LoadResourceAction.LoadResourceDialog(
                    getWindow().getShell());
            if (Dialog.OK == loadResourceDialog.open()) {
                for (Iterator i = loadResourceDialog.getURIs().iterator(); i.hasNext();) {
                    openEditor(getWindow().getWorkbench(), (URI) i.next());
                }
            }
        }
    }

    /**
     * @generated
     */
    public static class OpenAction extends WorkbenchWindowActionDelegate {

        /**
         * @generated
         */
        public void run(IAction action) {
            FileDialog fileDialog = new FileDialog(getWindow().getShell(), SWT.OPEN);
            fileDialog.open();
            if (fileDialog.getFileName() != null && fileDialog.getFileName().length() > 0) {
                openEditor(getWindow().getWorkbench(),
                        URI.createFileURI(fileDialog.getFilterPath() + File.separator + fileDialog.getFileName()));
            }
        }
    }

    /**
     * @generated
     */
    public static class AboutAction extends WorkbenchWindowActionDelegate {

        /**
         * @generated
         */
        public void run(IAction action) {
            MessageDialog.openInformation(getWindow().getShell(),
                    Messages.DiagramEditorActionBarAdvisor_AboutDialogTitle,
                    Messages.DiagramEditorActionBarAdvisor_AboutDialogMessage);
        }
    }

    protected void myFillCoolBar(ICoolBarManager toolBar) {
        {
            IToolBarManager toolBarX = new ToolBarManager();

            toolBarX.add(new GroupMarker("new"));
            toolBarX.add(new GroupMarker("open"));
            toolBarX.add(getAction(ActionFactory.SAVE.getId()));
            toolBarX.add(new Separator("exoprt"));
            toolBarX.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
            toolBar.add(new ToolBarContributionItem(toolBarX, "file"));
        }

        {
            IToolBarManager toolBarX = new ToolBarManager();
            toolBarX.add(new GroupMarker("views"));
            toolBar.add(new ToolBarContributionItem(toolBarX, "view"));
        }

        toolBar.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
    }

}