package net.sourceforge.c4jplugin.internal.ui.actions; import net.sourceforge.c4jplugin.internal.util.SelectionConverter; import org.eclipse.jdt.internal.ui.javaeditor.JavaEditor; import org.eclipse.jface.action.IAction; import org.eclipse.jface.text.ITextSelection; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IPartListener; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; public class OpenContractHierarchyWindowDelegate extends OpenContractHierarchyDelegate implements IWorkbenchWindowActionDelegate, IPartListener { IWorkbenchWindow window = null; private JavaEditor editor = null; public OpenContractHierarchyWindowDelegate() { } public void dispose() { window.getPartService().removePartListener(this); } public void init(IWorkbenchWindow window) { this.window = window; window.getPartService().addPartListener(this); IWorkbenchPart part = window.getActivePage().getActivePart(); if (part != null && part instanceof JavaEditor && isEnabled((JavaEditor)part)) editor = (JavaEditor)part; else editor = null; } public Shell getShell() { return window.getShell(); } public JavaEditor getJavaEditor() { return editor; } /* (non-Javadoc) * Method declared on SelectionDispatchActionDelegate. */ public void selectionChanged(IAction action, ITextSelection selection) { if (editor != null) { action.setEnabled(true); } } public void partActivated(IWorkbenchPart part) { if (part instanceof JavaEditor) { if (isEnabled((JavaEditor)part)) { editor = (JavaEditor)part; } else editor = null; } else editor = null; } public void partBroughtToTop(IWorkbenchPart part) { } public void partClosed(IWorkbenchPart part) { } public void partDeactivated(IWorkbenchPart part) { } public void partOpened(IWorkbenchPart part) { } }