java to kotlin action in new converter
This commit is contained in:
committed by
Pavel V. Talanov
parent
8f98abc8a7
commit
46003dc1f6
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user