summaryrefslogtreecommitdiff
path: root/java/java-impl/src/com/intellij/refactoring/move
diff options
context:
space:
mode:
Diffstat (limited to 'java/java-impl/src/com/intellij/refactoring/move')
-rw-r--r--java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesImpl.java17
-rw-r--r--java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java6
-rw-r--r--java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerClassJavaUsagesHandler.java58
-rw-r--r--java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerClassUsagesHandler.java28
-rw-r--r--java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerProcessor.java36
5 files changed, 106 insertions, 39 deletions
diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesImpl.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesImpl.java
index 3e92a19373ab..844eb2dc0611 100644
--- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesImpl.java
+++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -88,7 +88,7 @@ public class MoveClassesOrPackagesImpl {
if (element instanceof PsiDirectory) {
PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage((PsiDirectory)element);
LOG.assertTrue(aPackage != null);
- if (aPackage.getQualifiedName().length() == 0) { //is default package
+ if (aPackage.getQualifiedName().isEmpty()) { //is default package
String message = RefactoringBundle.message("move.package.refactoring.cannot.be.applied.to.default.package");
CommonRefactoringUtil.showErrorMessage(RefactoringBundle.message("move.title"), message, HelpID.getMoveHelpID(element), project);
return null;
@@ -167,7 +167,7 @@ public class MoveClassesOrPackagesImpl {
message.append(RefactoringBundle.message("do.you.wish.to.continue"));
int ret =
Messages.showYesNoDialog(project, message.toString(), RefactoringBundle.message("warning.title"), Messages.getWarningIcon());
- if (ret != 0) {
+ if (ret != Messages.YES) {
return false;
}
}
@@ -323,8 +323,15 @@ public class MoveClassesOrPackagesImpl {
if (selectedTarget == null) return;
final MultiMap<PsiElement, String> conflicts = new MultiMap<PsiElement, String>();
final Runnable analyzeConflicts = new Runnable() {
+ @Override
public void run() {
- RefactoringConflictsUtil.analyzeModuleConflicts(project, Arrays.asList(directories), UsageInfo.EMPTY_ARRAY, selectedTarget, conflicts);
+ ApplicationManager.getApplication().runReadAction(new Runnable() {
+ @Override
+ public void run() {
+ RefactoringConflictsUtil
+ .analyzeModuleConflicts(project, Arrays.asList(directories), UsageInfo.EMPTY_ARRAY, selectedTarget, conflicts);
+ }
+ });
}
};
if (!ProgressManager.getInstance().runProcessWithProgressSynchronously(analyzeConflicts, "Analyze Module Conflicts...", true, project)) {
@@ -345,8 +352,10 @@ public class MoveClassesOrPackagesImpl {
final Ref<IncorrectOperationException> ex = Ref.create(null);
final String commandDescription = RefactoringBundle.message("moving.directories.command");
Runnable runnable = new Runnable() {
+ @Override
public void run() {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
+ @Override
public void run() {
LocalHistoryAction a = LocalHistory.getInstance().startAction(commandDescription);
try {
diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java
index f398dfdd115a..0e02b8f94e28 100644
--- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java
+++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java
@@ -23,7 +23,6 @@ import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.openapi.wm.WindowManager;
import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.PackageScope;
@@ -48,7 +47,6 @@ import com.intellij.refactoring.util.classRefs.ClassReferenceScanner;
import com.intellij.usageView.UsageInfo;
import com.intellij.usageView.UsageViewDescriptor;
import com.intellij.usageView.UsageViewUtil;
-import com.intellij.util.ArrayUtil;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.Processor;
import com.intellij.util.VisibilityUtil;
@@ -472,9 +470,7 @@ public class MoveClassesOrPackagesProcessor extends BaseRefactoringProcessor {
}
protected boolean isPreviewUsages(UsageInfo[] usages) {
- if (UsageViewUtil.hasNonCodeUsages(usages)) {
- WindowManager.getInstance().getStatusBar(myProject).setInfo(
- RefactoringBundle.message("occurrences.found.in.comments.strings.and.non.java.files"));
+ if (UsageViewUtil.reportNonRegularUsages(usages, myProject)) {
return true;
}
else {
diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerClassJavaUsagesHandler.java b/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerClassJavaUsagesHandler.java
new file mode 100644
index 000000000000..0589e6d8e187
--- /dev/null
+++ b/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerClassJavaUsagesHandler.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.intellij.refactoring.move.moveInner;
+
+import com.intellij.psi.*;
+import com.intellij.refactoring.util.RefactoringChangeUtil;
+import com.intellij.usageView.UsageInfo;
+import org.jetbrains.annotations.NotNull;
+
+public class MoveInnerClassJavaUsagesHandler implements MoveInnerClassUsagesHandler {
+ @Override
+ public void correctInnerClassUsage(@NotNull UsageInfo usage, @NotNull PsiClass outerClass) {
+ PsiElement refElement = usage.getElement();
+ if (refElement == null) return;
+
+ PsiManager manager = refElement.getManager();
+
+ PsiElement refParent = refElement.getParent();
+ if (refParent instanceof PsiNewExpression || refParent instanceof PsiAnonymousClass) {
+ PsiNewExpression newExpr = refParent instanceof PsiNewExpression
+ ? (PsiNewExpression)refParent
+ : (PsiNewExpression)refParent.getParent();
+
+ PsiExpressionList argList = newExpr.getArgumentList();
+
+ if (argList != null) { // can happen in incomplete code
+ if (newExpr.getQualifier() == null) {
+ PsiThisExpression thisExpr;
+ PsiClass parentClass = RefactoringChangeUtil.getThisClass(newExpr);
+ if (outerClass.equals(parentClass)) {
+ thisExpr = RefactoringChangeUtil.createThisExpression(manager, null);
+ }
+ else {
+ thisExpr = RefactoringChangeUtil.createThisExpression(manager, outerClass);
+ }
+ argList.addAfter(thisExpr, null);
+ }
+ else {
+ argList.addAfter(newExpr.getQualifier(), null);
+ newExpr.getQualifier().delete();
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerClassUsagesHandler.java b/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerClassUsagesHandler.java
new file mode 100644
index 000000000000..97946456d6fb
--- /dev/null
+++ b/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerClassUsagesHandler.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2000-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.intellij.refactoring.move.moveInner;
+
+import com.intellij.lang.LanguageExtension;
+import com.intellij.psi.PsiClass;
+import com.intellij.usageView.UsageInfo;
+import org.jetbrains.annotations.NotNull;
+
+public interface MoveInnerClassUsagesHandler {
+ LanguageExtension<MoveInnerClassUsagesHandler> EP_NAME =
+ new LanguageExtension<MoveInnerClassUsagesHandler>("com.intellij.refactoring.moveInnerClassUsagesHandler");
+
+ void correctInnerClassUsage(@NotNull UsageInfo usage, @NotNull PsiClass outerClass);
+} \ No newline at end of file
diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerProcessor.java b/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerProcessor.java
index d4239e578016..d56b8c02844e 100644
--- a/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerProcessor.java
+++ b/java/java-impl/src/com/intellij/refactoring/move/moveInner/MoveInnerProcessor.java
@@ -214,35 +214,11 @@ public class MoveInnerProcessor extends BaseRefactoringProcessor {
// correct references in usages
for (UsageInfo usage : usages) {
- if (usage.isNonCodeUsage) continue;
- PsiElement refElement = usage.getElement();
- if (myParameterNameOuterClass != null) { // should pass outer as parameter
- PsiElement refParent = refElement.getParent();
- if (refParent instanceof PsiNewExpression || refParent instanceof PsiAnonymousClass) {
- PsiNewExpression newExpr = refParent instanceof PsiNewExpression
- ? (PsiNewExpression)refParent
- : (PsiNewExpression)refParent.getParent();
-
- PsiExpressionList argList = newExpr.getArgumentList();
-
- if (argList != null) { // can happen in incomplete code
- if (newExpr.getQualifier() == null) {
- PsiThisExpression thisExpr;
- PsiClass parentClass = RefactoringChangeUtil.getThisClass(newExpr);
- if (myOuterClass.equals(parentClass)) {
- thisExpr = RefactoringChangeUtil.createThisExpression(manager, null);
- }
- else {
- thisExpr = RefactoringChangeUtil.createThisExpression(manager, myOuterClass);
- }
- argList.addAfter(thisExpr, null);
- }
- else {
- argList.addAfter(newExpr.getQualifier(), null);
- newExpr.getQualifier().delete();
- }
- }
- }
+ if (usage.isNonCodeUsage || myParameterNameOuterClass == null) continue; // should pass outer as parameter
+
+ MoveInnerClassUsagesHandler usagesHandler = MoveInnerClassUsagesHandler.EP_NAME.forLanguage(usage.getElement().getLanguage());
+ if (usagesHandler != null) {
+ usagesHandler.correctInnerClassUsage(usage, myOuterClass);
}
}
@@ -554,4 +530,4 @@ public class MoveInnerProcessor extends BaseRefactoringProcessor {
public String getParameterName() {
return myParameterNameOuterClass;
}
-}
+} \ No newline at end of file