/*********************************************************************************************************************************** * Copyright (c) 2000, 2002 IBM Corp. and others. All rights reserved. This program and the accompanying materials are made * available under the terms of the Common Public License v1.0 which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html * * Contributors: www.phpeclipse.de **********************************************************************************************************************************/ package net.sourceforge.phpeclipse.actions; import net.sourceforge.phpdt.internal.ui.actions.ActionUtil; import net.sourceforge.phpdt.internal.ui.actions.SelectionConverter; import net.sourceforge.phpdt.ui.actions.SelectionDispatchAction; import net.sourceforge.phpeclipse.phpeditor.PHPEditor; import org.eclipse.jface.action.IAction; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.ITextSelection; import org.eclipse.jface.text.TextSelection; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.IWorkbenchSite; import org.eclipse.ui.IWorkbenchWindow; public class PHPOpenDeclarationAction extends SelectionDispatchAction { private IWorkbenchWindow fWindow; private PHPEditor fEditor; public void dispose() { } public PHPOpenDeclarationAction(IWorkbenchSite site) { super(site); // setText(ActionMessages.getString("OpenAction.label")); //$NON-NLS-1$ // setToolTipText(ActionMessages.getString("OpenAction.tooltip")); // //$NON-NLS-1$ // setDescription(ActionMessages.getString("OpenAction.description")); // //$NON-NLS-1$ // WorkbenchHelp.setHelp(this, IJavaHelpContextIds.OPEN_ACTION); } /** * Note: This constructor is for internal use only. Clients should not call * this constructor. */ public PHPOpenDeclarationAction(PHPEditor editor) { this(editor.getEditorSite()); fEditor = editor; // setText(ActionMessages.getString("OpenAction.declaration.label")); // //$NON-NLS-1$ setEnabled(SelectionConverter.canOperateOn(fEditor)); } public void init(IWorkbenchWindow window) { this.fWindow = window; } public void selectionChanged(IAction action, ISelection selection) { if (!selection.isEmpty()) { if (selection instanceof TextSelection) { action.setEnabled(true); } else if (fWindow.getActivePage() != null && fWindow.getActivePage().getActivePart() != null) { // } } } private boolean checkEnabled(IStructuredSelection selection) { if (selection.isEmpty()) return false; return true; } /* * (non-Javadoc) Method declared on SelectionDispatchAction. */ public void run(ITextSelection selection) { if (!ActionUtil.isProcessable(getShell(), fEditor)) return; OpenDeclarationEditorAction openAction = new OpenDeclarationEditorAction( fEditor); openAction.openSelectedElement(selection); } /* * (non-Javadoc) Method declared on SelectionDispatchAction. */ public void run(IStructuredSelection selection) { if (!checkEnabled(selection)) return; run(selection.toArray()); } /** * Note: this method is for internal use only. Clients should not call this * method. */ public void run(Object[] elements) { if (elements != null && elements.length > 0) { ITextSelection selection = (ITextSelection) fEditor .getSelectionProvider().getSelection(); IDocument doc = fEditor.getDocumentProvider().getDocument( fEditor.getEditorInput()); int pos = selection.getOffset(); OpenDeclarationEditorAction openAction = new OpenDeclarationEditorAction( fEditor); openAction.openSelectedPosition(doc, pos); } } }