From 482d228253f839221e49c312c1dff60a30310fb2 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Tue, 18 Mar 2014 20:06:13 +0400 Subject: [PATCH] Allow to move Kotlin file if it contains single top-level class/object --- .../KotlinMoveFilesOrDirectoriesHandler.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveFilesOrDirectories/KotlinMoveFilesOrDirectoriesHandler.java b/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveFilesOrDirectories/KotlinMoveFilesOrDirectoriesHandler.java index 072eda57161..9ce0dc4e31e 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveFilesOrDirectories/KotlinMoveFilesOrDirectoriesHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveFilesOrDirectories/KotlinMoveFilesOrDirectoriesHandler.java @@ -42,14 +42,21 @@ public class KotlinMoveFilesOrDirectoriesHandler extends MoveFilesOrDirectoriesH @Override public boolean canMove(PsiElement[] elements, @Nullable PsiElement targetContainer) { + ArrayList adjustedElements = new ArrayList(); for (PsiElement element : elements) { - if (!(element instanceof PsiFile) && !(element instanceof PsiDirectory) && - (!(element instanceof JetClassOrObject) || - !isMovableClass((JetClassOrObject) element))) { - return false; + if (element instanceof PsiFile || element instanceof PsiDirectory) { + adjustedElements.add(element); + continue; } + + if (element instanceof JetClassOrObject && element.getParent() instanceof JetFile) { + adjustedElements.add(element.getParent()); + continue; + } + + return false; } - return super.canMove(elements, targetContainer); + return super.canMove(adjustedElements.toArray(new PsiElement[adjustedElements.size()]), targetContainer); } @Override