1 /*******************************************************************************
2 * Copyright (c) 2000, 2011 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11 package org.eclipse.jdt.internal.ui.refactoring.actions;
13 import org.eclipse.core.runtime.CoreException;
15 import org.eclipse.jface.dialogs.MessageDialog;
16 import org.eclipse.jface.viewers.IStructuredSelection;
18 import org.eclipse.jface.text.ITextSelection;
20 import org.eclipse.ui.IWorkbenchSite;
22 import org.eclipse.jdt.core.IJavaElement;
23 import org.eclipse.jdt.core.JavaModelException;
25 import org.eclipse.jdt.internal.corext.refactoring.RefactoringAvailabilityTester;
26 import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
28 import org.eclipse.jdt.ui.actions.RenameAction;
29 import org.eclipse.jdt.ui.actions.SelectionDispatchAction;
31 import org.eclipse.jdt.internal.ui.JavaPlugin;
32 import org.eclipse.jdt.internal.ui.actions.ActionUtil;
33 import org.eclipse.jdt.internal.ui.actions.SelectionConverter;
34 import org.eclipse.jdt.internal.ui.javaeditor.JavaEditor;
35 import org.eclipse.jdt.internal.ui.javaeditor.JavaTextSelection;
36 import org.eclipse.jdt.internal.ui.refactoring.RefactoringMessages;
37 import org.eclipse.jdt.internal.ui.refactoring.reorg.RenameLinkedMode;
38 import org.eclipse.jdt.internal.ui.util.ExceptionHandler;
40 public class RenameJavaElementAction extends SelectionDispatchAction {
42 public JavaEditor fEditor;
44 public RenameJavaElementAction(IWorkbenchSite site) {
48 public RenameJavaElementAction(JavaEditor editor) {
49 this(editor.getEditorSite());
51 setEnabled(SelectionConverter.canOperateOn(fEditor));
54 //---- Structured selection ------------------------------------------------
57 public void selectionChanged(IStructuredSelection selection) {
59 if (selection.size() == 1) {
60 setEnabled(canEnable(selection));
63 } catch (JavaModelException e) {
64 // http://bugs.eclipse.org/bugs/show_bug.cgi?id=19253
65 if (JavaModelUtil.isExceptionToBeLogged(e))
67 } catch (CoreException e) {
73 private static boolean canEnable(IStructuredSelection selection) throws CoreException {
74 IJavaElement element= getJavaElement(selection);
77 return RefactoringAvailabilityTester.isRenameElementAvailable(element);
80 private static IJavaElement getJavaElement(IStructuredSelection selection) {
81 if (selection.size() != 1)
83 Object first= selection.getFirstElement();
84 if (! (first instanceof IJavaElement))
86 return (IJavaElement)first;
90 public void run(IStructuredSelection selection) {
91 IJavaElement element= getJavaElement(selection);
94 if (!ActionUtil.isEditable(getShell(), element))
98 } catch (CoreException e){
99 ExceptionHandler.handle(e, RefactoringMessages.RenameJavaElementAction_name, RefactoringMessages.RenameJavaElementAction_exception);
103 //---- text selection ------------------------------------------------------------
106 public void selectionChanged(ITextSelection selection) {
107 if (selection instanceof JavaTextSelection) {
109 JavaTextSelection javaTextSelection= (JavaTextSelection)selection;
110 javaTextSelection.generated_5438255568821321088(this);
111 } catch (CoreException e) {
120 public void run(ITextSelection selection) {
121 if (!ActionUtil.isEditable(fEditor))
123 if (canRunInEditor())
126 MessageDialog.openInformation(getShell(), RefactoringMessages.RenameAction_rename, RefactoringMessages.RenameAction_unavailable);
129 public void doRun() {
130 RenameLinkedMode activeLinkedMode= RenameLinkedMode.getActiveLinkedMode();
131 fEditor.generated_8200945043267225784(this, activeLinkedMode);
134 public boolean canRunInEditor() {
135 if (RenameLinkedMode.getActiveLinkedMode() != null)
139 IJavaElement element= getJavaElementFromEditor();
143 return RefactoringAvailabilityTester.isRenameElementAvailable(element);
144 } catch (JavaModelException e) {
145 if (JavaModelUtil.isExceptionToBeLogged(e))
147 } catch (CoreException e) {
153 public IJavaElement getJavaElementFromEditor() throws JavaModelException {
154 IJavaElement[] elements= SelectionConverter.codeResolve(fEditor);
155 if (elements == null || elements.length != 1)
160 //---- helper methods -------------------------------------------------------------------
162 public void run(IJavaElement element, boolean lightweight) throws CoreException {
163 // Work around for http://dev.eclipse.org/bugs/show_bug.cgi?id=19104
164 fEditor.generated_2614579944211237230(this, element, lightweight);
167 public boolean generated_2354557891330186788(RenameAction renameaction) {
168 if (renameaction.fRenameResource != null) {
169 return isEnabled() || renameaction.fRenameResource.isEnabled();
175 public void generated_7638298966405843794(RenameAction renameaction, IStructuredSelection selection) {
178 if (renameaction.fRenameResource != null && renameaction.fRenameResource.isEnabled())
179 renameaction.fRenameResource.run(selection);
182 public void generated_7345641368706726701(ITextSelection selection) {