Convert to Kotlin: KotlinMoveFilesOrDirectoriesHandler.kt
This commit is contained in:
@@ -38,7 +38,7 @@ public class JetCopyClassHandler extends CopyHandlerDelegateBase {
|
||||
|
||||
private static PsiElement replaceElement(PsiElement element) {
|
||||
if (element instanceof JetClassOrObject &&
|
||||
KotlinMoveFilesOrDirectoriesHandler.isMovableClass((JetClassOrObject) element)) {
|
||||
KotlinMoveFilesOrDirectoriesHandler.Companion.isMovableClass((JetClassOrObject) element)) {
|
||||
return element.getContainingFile();
|
||||
}
|
||||
else {
|
||||
|
||||
+22
-49
@@ -14,62 +14,35 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.refactoring.move.moveFilesOrDirectories;
|
||||
package org.jetbrains.kotlin.idea.refactoring.move.moveFilesOrDirectories
|
||||
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectoriesHandler;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.psi.JetClassOrObject;
|
||||
import org.jetbrains.kotlin.psi.JetDeclaration;
|
||||
import org.jetbrains.kotlin.psi.JetFile;
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiDirectory
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectoriesHandler
|
||||
import org.jetbrains.kotlin.psi.JetClassOrObject
|
||||
import org.jetbrains.kotlin.psi.JetFile
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class KotlinMoveFilesOrDirectoriesHandler extends MoveFilesOrDirectoriesHandler {
|
||||
public static boolean isMovableClass(JetClassOrObject clazz) {
|
||||
if (!(clazz.getParent() instanceof JetFile)) return false;
|
||||
JetFile file = clazz.getContainingJetFile();
|
||||
List<JetDeclaration> declarations = file.getDeclarations();
|
||||
for (JetDeclaration declaration : declarations) {
|
||||
if (declaration instanceof JetClassOrObject && declaration != clazz) return false;
|
||||
public class KotlinMoveFilesOrDirectoriesHandler : MoveFilesOrDirectoriesHandler() {
|
||||
override fun canMove(elements: Array<PsiElement>, targetContainer: PsiElement?): Boolean {
|
||||
val adjustedElements = elements.map {
|
||||
when {
|
||||
it is PsiFile, it is PsiDirectory -> it
|
||||
it is JetClassOrObject && it.getParent() is JetFile -> it.getParent()
|
||||
else -> return false
|
||||
}
|
||||
}
|
||||
return true;
|
||||
return super.canMove(adjustedElements.toTypedArray(), targetContainer)
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canMove(PsiElement[] elements, @Nullable PsiElement targetContainer) {
|
||||
ArrayList<PsiElement> adjustedElements = new ArrayList<PsiElement>();
|
||||
for (PsiElement element : elements) {
|
||||
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(adjustedElements.toArray(new PsiElement[adjustedElements.size()]), targetContainer);
|
||||
override fun adjustForMove(project: Project, sourceElements: Array<PsiElement>, targetElement: PsiElement?): Array<PsiElement> {
|
||||
return sourceElements.map { if (it is JetClassOrObject) it.getContainingFile() else it }.toTypedArray()
|
||||
}
|
||||
|
||||
@Override
|
||||
public PsiElement[] adjustForMove(Project project, PsiElement[] sourceElements, PsiElement targetElement) {
|
||||
ArrayList<PsiElement> result = new ArrayList<PsiElement>();
|
||||
for (PsiElement element : sourceElements) {
|
||||
if (element instanceof JetClassOrObject) {
|
||||
result.add(element.getContainingFile());
|
||||
}
|
||||
else {
|
||||
result.add(element);
|
||||
}
|
||||
companion object {
|
||||
public fun isMovableClass(clazz: JetClassOrObject): Boolean {
|
||||
return clazz.isTopLevel() && clazz.getContainingJetFile().getDeclarations().all { it !is JetClassOrObject || it == clazz }
|
||||
}
|
||||
return result.toArray(new PsiElement[result.size()]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user