/******************************************************************************* * Copyright (c) 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Zend Technologies *******************************************************************************/ package org.eclipse.php.internal.ui.actions; import org.eclipse.core.resources.IResource; import org.eclipse.dltk.core.IModelElement; import org.eclipse.dltk.internal.ui.refactoring.actions.RenameResourceAction; import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.php.internal.core.documentModel.dom.ElementImplForPHP; import org.eclipse.php.internal.ui.PHPUIMessages; import org.eclipse.ui.*; public class RenameAction implements IWorkbenchWindowActionDelegate, IEditorActionDelegate { private IPHPActionDelegator fRenamePHPElement; private RenameResourceAction resourceAction; private ISelection selection; private static final String RENAME_ELEMENT_ACTION_ID = "org.eclipse.php.ui.actions.RenameElement"; //$NON-NLS-1$ @Override public void dispose() { } @Override public void init(IWorkbenchWindow window) { if (window != null) { init(); if (fRenamePHPElement == null) { IWorkbenchPage page = window.getActivePage(); if (page != null) { if (page.getActivePart() != null) resourceAction = new RenameResourceAction(page.getActivePart().getSite()); } } else { fRenamePHPElement.init(window); } } } private void init() { fRenamePHPElement = PHPActionDelegatorRegistry.getActionDelegator(RENAME_ELEMENT_ACTION_ID); } @Override public void run(IAction action) { if (resourceAction != null) { if (!selection.isEmpty()) { Object object = ((IStructuredSelection) selection).getFirstElement(); IResource resource = null; if (object instanceof IModelElement) { resource = ((IModelElement) object).getResource(); } if (object instanceof IResource) { resource = (IResource) object; } if (object instanceof ElementImplForPHP) { resource = ((ElementImplForPHP) object).getModelElement().getResource(); } if (resource != null) { IStructuredSelection resourceSel = new StructuredSelection(resource); resourceAction.run(resourceSel); } else { MessageDialog.openInformation(PlatformUI.getWorkbench().getDisplay().getActiveShell(), PHPUIMessages.RenamePHPElementAction_name, PHPUIMessages.RenamePHPElementAction_not_available); } } } else { fRenamePHPElement.run(action); } } @Override public void selectionChanged(IAction action, ISelection selection) { this.selection = selection; if (fRenamePHPElement != null) { fRenamePHPElement.selectionChanged(action, selection); } } @Override public void setActiveEditor(IAction action, IEditorPart targetEditor) { if (fRenamePHPElement == null) { init(); } if (targetEditor != null && resourceAction == null && fRenamePHPElement == null) { resourceAction = new RenameResourceAction(targetEditor.getSite()); } if (fRenamePHPElement instanceof IEditorActionDelegate) { ((IEditorActionDelegate) fRenamePHPElement).setActiveEditor(action, targetEditor); } } }