Move: Warn about moving to non-Kotlin class
#KT-17472 Fixed
This commit is contained in:
+8
-3
@@ -70,7 +70,7 @@ public class MoveKotlinNestedClassesDialog extends RefactoringDialog {
|
|||||||
private JCheckBox openInEditorCheckBox;
|
private JCheckBox openInEditorCheckBox;
|
||||||
private JPanel targetClassChooserPanel;
|
private JPanel targetClassChooserPanel;
|
||||||
private KotlinMemberSelectionTable memberTable;
|
private KotlinMemberSelectionTable memberTable;
|
||||||
private KtClassOrObject targetClass;
|
private PsiElement targetClass;
|
||||||
public MoveKotlinNestedClassesDialog(
|
public MoveKotlinNestedClassesDialog(
|
||||||
@NotNull Project project,
|
@NotNull Project project,
|
||||||
@NotNull List<KtClassOrObject> elementsToMove,
|
@NotNull List<KtClassOrObject> elementsToMove,
|
||||||
@@ -149,6 +149,9 @@ public class MoveKotlinNestedClassesDialog extends RefactoringDialog {
|
|||||||
targetClass = ((KtLightClassForSourceDeclaration) aClass).getKotlinOrigin();
|
targetClass = ((KtLightClassForSourceDeclaration) aClass).getKotlinOrigin();
|
||||||
targetClassChooser.setText(aClass.getQualifiedName());
|
targetClassChooser.setText(aClass.getQualifiedName());
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
targetClass = aClass;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
initialTargetClass.getFqName().asString(),
|
initialTargetClass.getFqName().asString(),
|
||||||
@@ -179,7 +182,7 @@ public class MoveKotlinNestedClassesDialog extends RefactoringDialog {
|
|||||||
.findClass(targetClassChooser.getText(), GlobalSearchScope.projectScope(myProject));
|
.findClass(targetClassChooser.getText(), GlobalSearchScope.projectScope(myProject));
|
||||||
targetClass = aClass instanceof KtLightClassForSourceDeclaration
|
targetClass = aClass instanceof KtLightClassForSourceDeclaration
|
||||||
? ((KtLightClassForSourceDeclaration) aClass).getKotlinOrigin()
|
? ((KtLightClassForSourceDeclaration) aClass).getKotlinOrigin()
|
||||||
: null;
|
: aClass;
|
||||||
validateButtons();
|
validateButtons();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -240,6 +243,8 @@ public class MoveKotlinNestedClassesDialog extends RefactoringDialog {
|
|||||||
protected void canRun() throws ConfigurationException {
|
protected void canRun() throws ConfigurationException {
|
||||||
if (targetClass == null) throw new ConfigurationException("No destination class specified");
|
if (targetClass == null) throw new ConfigurationException("No destination class specified");
|
||||||
|
|
||||||
|
if (!(targetClass instanceof KtClassOrObject)) throw new ConfigurationException("Destination class must be a Kotlin class");
|
||||||
|
|
||||||
if (originalClass == targetClass) {
|
if (originalClass == targetClass) {
|
||||||
throw new ConfigurationException(RefactoringBundle.message("source.and.destination.classes.should.be.different"));
|
throw new ConfigurationException(RefactoringBundle.message("source.and.destination.classes.should.be.different"));
|
||||||
}
|
}
|
||||||
@@ -254,7 +259,7 @@ public class MoveKotlinNestedClassesDialog extends RefactoringDialog {
|
|||||||
@Override
|
@Override
|
||||||
protected void doAction() {
|
protected void doAction() {
|
||||||
List<KtClassOrObject> elementsToMove = getSelectedElementsToMove();
|
List<KtClassOrObject> elementsToMove = getSelectedElementsToMove();
|
||||||
KotlinMoveTarget target = new KotlinMoveTargetForExistingElement(targetClass);
|
KotlinMoveTarget target = new KotlinMoveTargetForExistingElement((KtClassOrObject) targetClass);
|
||||||
MoveDeclarationsDelegate.NestedClass delegate = new MoveDeclarationsDelegate.NestedClass();
|
MoveDeclarationsDelegate.NestedClass delegate = new MoveDeclarationsDelegate.NestedClass();
|
||||||
MoveDeclarationsDescriptor descriptor = new MoveDeclarationsDescriptor(
|
MoveDeclarationsDescriptor descriptor = new MoveDeclarationsDescriptor(
|
||||||
myProject, elementsToMove, target, delegate, false, false, false, false, moveCallback, openInEditorCheckBox.isSelected()
|
myProject, elementsToMove, target, delegate, false, false, false, false, moveCallback, openInEditorCheckBox.isSelected()
|
||||||
|
|||||||
Reference in New Issue
Block a user