package net.ms.designer.actions; import net.ms.designer.core.MsContext; import net.ms.designer.core.MsElement; import net.ms.designer.editors.packages.ui.PackageEditor; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; import org.eclipse.ui.internal.UIPlugin; public class UpToAction implements IWorkbenchWindowActionDelegate { private IWorkbenchWindow window; private PackageEditor editor; private MsContext context; /** * The constructor. */ public UpToAction() { } /** * 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) { this.editor = (PackageEditor)UIPlugin.getDefault() .getWorkbench().getActiveWorkbenchWindow() .getActivePage().getActiveEditor(); this.context = this.editor.getContext(); MsElement element = this.editor.getCurrentElement(); if(element.getParent() == null) { return; } MsElement parent = element.getParent(); this.context.changeContext(parent); } /** * 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; } }