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) + } +}