From 46003dc1f6b61c3e49ff6909bb08604b0ac46319 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Mon, 21 May 2012 18:28:35 +0200 Subject: [PATCH] java to kotlin action in new converter --- j2k.ipr | 19 ++------ .../jet/j2k/actions/JavaToKotlinAction.kt | 43 +++++++++++++++++++ 2 files changed, 46 insertions(+), 16 deletions(-) create mode 100644 src/org/jetbrains/jet/j2k/actions/JavaToKotlinAction.kt diff --git a/j2k.ipr b/j2k.ipr index 66a945fa2ce..ebbb762b101 100644 --- a/j2k.ipr +++ b/j2k.ipr @@ -4,24 +4,11 @@ - - $PROJECT_DIR$/out/artifacts/j2k_jar + + $PROJECT_DIR$/out/artifacts/j2k_plugin - - - - - - - $PROJECT_DIR$/out/artifacts/java2kotlin_jar - - - - - - - + diff --git a/src/org/jetbrains/jet/j2k/actions/JavaToKotlinAction.kt b/src/org/jetbrains/jet/j2k/actions/JavaToKotlinAction.kt new file mode 100644 index 00000000000..32384ab6781 --- /dev/null +++ b/src/org/jetbrains/jet/j2k/actions/JavaToKotlinAction.kt @@ -0,0 +1,43 @@ +package org.jetbrains.jet.j2k.actions + +import com.intellij.openapi.actionSystem.AnAction +import com.intellij.openapi.actionSystem.AnActionEvent +import org.jetbrains.jet.j2k.Converter +import com.intellij.openapi.actionSystem.PlatformDataKeys +import com.intellij.openapi.actionSystem.LangDataKeys +import com.intellij.psi.PsiJavaFile +import com.intellij.openapi.util.io.FileUtil +import com.intellij.openapi.fileEditor.FileDocumentManager +import com.intellij.psi.PsiDocumentManager +import com.intellij.openapi.command.WriteCommandAction +import com.intellij.openapi.application.ApplicationManager +import com.intellij.psi.codeStyle.CodeStyleManager + +class JavaToKotlinAction(): AnAction() { + public override fun actionPerformed(event : AnActionEvent?) { + val converter = Converter() + val psiFile = event.getData(LangDataKeys.PSI_FILE)!! + ApplicationManager.getApplication()?.runWriteAction(object : Runnable { + public override fun run() { + val result = converter.fileToFile(psiFile as PsiJavaFile).toKotlin() + val newName = FileUtil.getNameWithoutExtension(psiFile.getName()) + ".kt" + val newFile = psiFile.getContainingDirectory()?.createFile(newName)!! + val project = psiFile.getProject() + val psiDocumentManager = PsiDocumentManager.getInstance(project)!! + val document = psiDocumentManager.getDocument(newFile)!! + document.setText(result) + psiDocumentManager.doPostponedOperationsAndUnblockDocument(document) + psiDocumentManager.commitDocument(document) + CodeStyleManager.getInstance(project)!!.reformat(newFile) + psiFile.setName(psiFile.getName() + ".old") + newFile.navigate(true) + } + }) + } + + + public override fun update(e : AnActionEvent?) { + val psiFile = e.getData(LangDataKeys.PSI_FILE) + e!!.getPresentation().setEnabled(psiFile is PsiJavaFile) + } +}