package org.eclipse.emf.eef.tests.nonreg.edit.actions; import java.rmi.server.RemoteCall; import org.eclipse.emf.edit.command.RemoveCommand; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.emf.edit.domain.IEditingDomainProvider; import org.eclipse.emf.eef.eefnr.navigation.SmartModelNavigationSample; import org.eclipse.emf.eef.eefnr.SingleCompositionEditorSample; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; import org.eclipse.ui.PlatformUI; import org.eclipse.jface.dialogs.MessageDialog; /** * Our sample action implements workbench action delegate. * The action proxy will be created by the workbench and * shown in the UI. When the user tries to use the action, * this delegate will be created and execution will be * delegated to it. * @see IWorkbenchWindowActionDelegate */ public class RemoveSingleCompositionEditorAction implements IWorkbenchWindowActionDelegate { private IWorkbenchWindow window; /** * The constructor. */ public RemoveSingleCompositionEditorAction() { } /** * The action has been activated. The argument of the * method represents the 'real' action sitting * in the workbench UI. * @see IWorkbenchWindowActionDelegate#run */ public void run(IAction action) { IEditingDomainProvider activeEditor = (IEditingDomainProvider) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); StructuredSelection selection = (StructuredSelection) ((IWorkbenchPart) activeEditor).getSite().getSelectionProvider().getSelection(); if (!selection.isEmpty()) { SingleCompositionEditorSample firstElement = (SingleCompositionEditorSample) selection.getFirstElement(); EditingDomain editingDomain = activeEditor.getEditingDomain(); editingDomain.getCommandStack().execute(RemoveCommand.create(editingDomain, firstElement.getSinglecompositioneditorRequiredProperty())); } } /** * Selection in the workbench has been changed. We * can change the state of the 'real' action here * if we want, but this can only happen after * the delegate has been created. * @see IWorkbenchWindowActionDelegate#selectionChanged */ public void selectionChanged(IAction action, ISelection selection) { } /** * We can use this method to dispose of any system * resources we previously allocated. * @see IWorkbenchWindowActionDelegate#dispose */ public void dispose() { } /** * We will cache window object in order to * be able to provide parent shell for the message dialog. * @see IWorkbenchWindowActionDelegate#init */ public void init(IWorkbenchWindow window) { this.window = window; } }