]> git.uio.no Git - ifi-stolz-refaktor.git/blob - case-study/jdt-after/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/actions/RenameJavaElementAction.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / jdt-after / ui refactoring / org / eclipse / jdt / internal / ui / refactoring / actions / RenameJavaElementAction.java
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
7  *
8  * Contributors:
9  *     IBM Corporation - initial API and implementation
10  *******************************************************************************/
11 package org.eclipse.jdt.internal.ui.refactoring.actions;
12
13 import org.eclipse.core.runtime.CoreException;
14
15 import org.eclipse.jface.dialogs.MessageDialog;
16 import org.eclipse.jface.viewers.IStructuredSelection;
17
18 import org.eclipse.jface.text.ITextSelection;
19
20 import org.eclipse.ui.IWorkbenchSite;
21
22 import org.eclipse.jdt.core.IJavaElement;
23 import org.eclipse.jdt.core.JavaModelException;
24
25 import org.eclipse.jdt.internal.corext.refactoring.RefactoringAvailabilityTester;
26 import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
27
28 import org.eclipse.jdt.ui.actions.RenameAction;
29 import org.eclipse.jdt.ui.actions.SelectionDispatchAction;
30
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;
39
40 public class RenameJavaElementAction extends SelectionDispatchAction {
41
42         public JavaEditor fEditor;
43
44         public RenameJavaElementAction(IWorkbenchSite site) {
45                 super(site);
46         }
47
48         public RenameJavaElementAction(JavaEditor editor) {
49                 this(editor.getEditorSite());
50                 fEditor= editor;
51                 setEnabled(SelectionConverter.canOperateOn(fEditor));
52         }
53
54         //---- Structured selection ------------------------------------------------
55
56         @Override
57         public void selectionChanged(IStructuredSelection selection) {
58                 try {
59                         if (selection.size() == 1) {
60                                 setEnabled(canEnable(selection));
61                                 return;
62                         }
63                 } catch (JavaModelException e) {
64                         // http://bugs.eclipse.org/bugs/show_bug.cgi?id=19253
65                         if (JavaModelUtil.isExceptionToBeLogged(e))
66                                 JavaPlugin.log(e);
67                 } catch (CoreException e) {
68                         JavaPlugin.log(e);
69                 }
70                 setEnabled(false);
71         }
72
73         private static boolean canEnable(IStructuredSelection selection) throws CoreException {
74                 IJavaElement element= getJavaElement(selection);
75                 if (element == null)
76                         return false;
77                 return RefactoringAvailabilityTester.isRenameElementAvailable(element);
78         }
79
80         private static IJavaElement getJavaElement(IStructuredSelection selection) {
81                 if (selection.size() != 1)
82                         return null;
83                 Object first= selection.getFirstElement();
84                 if (! (first instanceof IJavaElement))
85                         return null;
86                 return (IJavaElement)first;
87         }
88
89         @Override
90         public void run(IStructuredSelection selection) {
91                 IJavaElement element= getJavaElement(selection);
92                 if (element == null)
93                         return;
94                 if (!ActionUtil.isEditable(getShell(), element))
95                         return;
96                 try {
97                         run(element, false);
98                 } catch (CoreException e){
99                         ExceptionHandler.handle(e, RefactoringMessages.RenameJavaElementAction_name, RefactoringMessages.RenameJavaElementAction_exception);
100                 }
101         }
102
103         //---- text selection ------------------------------------------------------------
104
105         @Override
106         public void selectionChanged(ITextSelection selection) {
107                 if (selection instanceof JavaTextSelection) {
108                         try {
109                                 JavaTextSelection javaTextSelection= (JavaTextSelection)selection;
110                                 javaTextSelection.generated_5438255568821321088(this);
111                         } catch (CoreException e) {
112                                 setEnabled(false);
113                         }
114                 } else {
115                         setEnabled(true);
116                 }
117         }
118
119         @Override
120         public void run(ITextSelection selection) {
121                 if (!ActionUtil.isEditable(fEditor))
122                         return;
123                 if (canRunInEditor())
124                         doRun();
125                 else
126                         MessageDialog.openInformation(getShell(), RefactoringMessages.RenameAction_rename, RefactoringMessages.RenameAction_unavailable);
127         }
128
129         public void doRun() {
130                 RenameLinkedMode activeLinkedMode= RenameLinkedMode.getActiveLinkedMode();
131                 fEditor.generated_8200945043267225784(this, activeLinkedMode);
132         }
133
134         public boolean canRunInEditor() {
135                 if (RenameLinkedMode.getActiveLinkedMode() != null)
136                         return true;
137
138                 try {
139                         IJavaElement element= getJavaElementFromEditor();
140                         if (element == null)
141                                 return true;
142
143                         return RefactoringAvailabilityTester.isRenameElementAvailable(element);
144                 } catch (JavaModelException e) {
145                         if (JavaModelUtil.isExceptionToBeLogged(e))
146                                 JavaPlugin.log(e);
147                 } catch (CoreException e) {
148                         JavaPlugin.log(e);
149                 }
150                 return false;
151         }
152
153         public IJavaElement getJavaElementFromEditor() throws JavaModelException {
154                 IJavaElement[] elements= SelectionConverter.codeResolve(fEditor);
155                 if (elements == null || elements.length != 1)
156                         return null;
157                 return elements[0];
158         }
159
160         //---- helper methods -------------------------------------------------------------------
161
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);
165         }
166
167         public boolean generated_2354557891330186788(RenameAction renameaction) {
168                 if (renameaction.fRenameResource != null) {
169                         return isEnabled() || renameaction.fRenameResource.isEnabled();
170                 } else {
171                         return isEnabled();
172                 }
173         }
174
175         public void generated_7638298966405843794(RenameAction renameaction, IStructuredSelection selection) {
176                 if (isEnabled())
177                         run(selection);
178                 if (renameaction.fRenameResource != null && renameaction.fRenameResource.isEnabled())
179                         renameaction.fRenameResource.run(selection);
180         }
181
182         public void generated_7345641368706726701(ITextSelection selection) {
183                 if (isEnabled())
184                         run(selection);
185         }
186 }