/*
* 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));
}
}