Allow to move Kotlin file if it contains single top-level class/object

This commit is contained in:
Alexey Sedunov
2014-03-18 20:06:13 +04:00
parent 2f0d0c4d26
commit 482d228253
@@ -42,14 +42,21 @@ public class KotlinMoveFilesOrDirectoriesHandler extends MoveFilesOrDirectoriesH
@Override @Override
public boolean canMove(PsiElement[] elements, @Nullable PsiElement targetContainer) { public boolean canMove(PsiElement[] elements, @Nullable PsiElement targetContainer) {
ArrayList<PsiElement> adjustedElements = new ArrayList<PsiElement>();
for (PsiElement element : elements) { for (PsiElement element : elements) {
if (!(element instanceof PsiFile) && !(element instanceof PsiDirectory) && if (element instanceof PsiFile || element instanceof PsiDirectory) {
(!(element instanceof JetClassOrObject) || adjustedElements.add(element);
!isMovableClass((JetClassOrObject) element))) { continue;
return false;
} }
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 @Override