Possibility to modify move refactoring dialogs in from scala plugin

This commit is contained in:
niktrop
2013-10-30 17:36:24 +01:00
committed by Dmitry Jemerov
parent 781fa3eabd
commit b8d6cd509f
2 changed files with 34 additions and 6 deletions
@@ -43,6 +43,7 @@ import com.intellij.refactoring.util.RadioUpDownListener;
import com.intellij.refactoring.util.RefactoringUtil;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.containers.HashSet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
@@ -138,12 +139,19 @@ public class JavaMoveClassesOrPackagesHandler extends MoveHandlerDelegate {
if (targetContainer instanceof PsiDirectory) {
if (CommonRefactoringUtil.checkReadOnlyStatusRecursively(project, Arrays.asList(adjustedElements), true)) {
if (!packageHasMultipleDirectoriesInModule(project, (PsiDirectory)targetContainer)) {
new MoveClassesOrPackagesToNewDirectoryDialog((PsiDirectory)targetContainer, adjustedElements, callback).show();
createMoveClassesOrPackagesToNewDirectoryDialog((PsiDirectory)targetContainer, adjustedElements, callback).show();
return;
}
}
}
MoveClassesOrPackagesImpl.doMove(project, adjustedElements, targetContainer, callback);
doMoveWithMoveClassesDialog(project, adjustedElements, targetContainer, callback);
}
protected void doMoveWithMoveClassesDialog(final Project project,
PsiElement[] adjustedElements,
PsiElement initialTargetElement,
final MoveCallback moveCallback) {
MoveClassesOrPackagesImpl.doMove(project, adjustedElements, initialTargetElement, moveCallback);
}
private static void moveDirectoriesLibrariesSafe(Project project,
@@ -173,6 +181,13 @@ public class JavaMoveClassesOrPackagesHandler extends MoveHandlerDelegate {
}
}
@NotNull
protected DialogWrapper createMoveClassesOrPackagesToNewDirectoryDialog(@NotNull final PsiDirectory directory,
PsiElement[] elementsToMove,
final MoveCallback moveCallback) {
return new MoveClassesOrPackagesToNewDirectoryDialog(directory, elementsToMove, moveCallback);
}
private static void moveAsDirectory(Project project,
PsiElement targetContainer,
final MoveCallback callback,
@@ -445,7 +460,7 @@ public class JavaMoveClassesOrPackagesHandler extends MoveHandlerDelegate {
if (adjustedElements == null) {
return true;
}
MoveClassesOrPackagesImpl.doMove(project, adjustedElements, initialTargetElement, null);
doMoveWithMoveClassesDialog(project, adjustedElements, initialTargetElement, null);
return true;
}
return false;
@@ -191,6 +191,19 @@ public class MoveClassesOrPackagesToNewDirectoryDialog extends DialogWrapper {
return myDestDirectoryField.getTextField();
}
//for scala plugin
@NotNull
protected MoveClassesOrPackagesProcessor createMoveClassesOrPackagesProcessor(Project project,
PsiElement[] elements,
@NotNull final MoveDestination moveDestination,
boolean searchInComments,
boolean searchInNonJavaFiles,
MoveCallback moveCallback) {
return new MoveClassesOrPackagesProcessor(project, elements, moveDestination,
searchInComments, searchInNonJavaFiles, moveCallback);
}
protected void performRefactoring(Project project, PsiDirectory directory, PsiPackage aPackage,
boolean searchInComments,
boolean searchForTextOccurences) {
@@ -205,9 +218,9 @@ public class MoveClassesOrPackagesToNewDirectoryDialog extends DialogWrapper {
? factory.createSourceFolderPreservingMoveDestination(aPackage.getQualifiedName())
: factory.createSourceRootMoveDestination(aPackage.getQualifiedName(), sourceRoot);
MoveClassesOrPackagesProcessor processor = new MoveClassesOrPackagesProcessor(myDirectory.getProject(), myElementsToMove, destination,
searchInComments, searchForTextOccurences,
myMoveCallback);
MoveClassesOrPackagesProcessor processor = createMoveClassesOrPackagesProcessor(myDirectory.getProject(), myElementsToMove, destination,
searchInComments, searchForTextOccurences, myMoveCallback);
if (processor.verifyValidPackageName()) {
processor.setPrepareSuccessfulSwingThreadCallback(new Runnable() {
@Override