java to kotlin action in new converter

This commit is contained in:
Dmitry Jemerov
2012-05-21 18:28:35 +02:00
committed by Pavel V. Talanov
parent 8f98abc8a7
commit 46003dc1f6
2 changed files with 46 additions and 16 deletions
+3 -16
View File
@@ -4,24 +4,11 @@
<defaultAnt bundledAnt="true" />
</component>
<component name="ArtifactManager">
<artifact type="jar" build-on-make="true" name="j2k:jar">
<output-path>$PROJECT_DIR$/out/artifacts/j2k_jar</output-path>
<artifact type="jar" build-on-make="true" name="j2k:plugin">
<output-path>$PROJECT_DIR$/out/artifacts/j2k_plugin</output-path>
<root id="archive" name="j2k.jar">
<element id="directory" name="META-INF">
<element id="file-copy" path="$PROJECT_DIR$/src/META-INF/MANIFEST.MF" />
</element>
<element id="module-output" name="j2k" />
</root>
</artifact>
<artifact type="jar" build-on-make="true" name="java2kotlin:jar">
<output-path>$PROJECT_DIR$/out/artifacts/java2kotlin_jar</output-path>
<root id="archive" name="java2kotlin.jar">
<element id="directory" name="META-INF">
<element id="file-copy" path="$PROJECT_DIR$/src/META-INF/MANIFEST.MF" />
</element>
<element id="module-output" name="j2k" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-io-2.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/commons-cli-1.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/lib/kotlin-runtime.jar" path-in-jar="/" />
</root>
</artifact>
</component>
@@ -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)
}
}