This commit is contained in:
Valentin Kipyatkov
2015-04-03 16:43:29 +03:00
parent bf0798ca86
commit 0918d5ce79
2 changed files with 7 additions and 9 deletions
@@ -48,8 +48,8 @@ public class ConvertJavaCopyPastePostProcessor : CopyPastePostProcessor<TextBloc
override fun extractTransferableData(content: Transferable): List<TextBlockTransferableData> {
try {
if (content.isDataFlavorSupported(CopiedCode.DATA_FLAVOR)) {
return listOf(content.getTransferData(CopiedCode.DATA_FLAVOR) as TextBlockTransferableData)
if (content.isDataFlavorSupported(CopiedJavaCode.DATA_FLAVOR)) {
return listOf(content.getTransferData(CopiedJavaCode.DATA_FLAVOR) as TextBlockTransferableData)
}
}
catch (e: Throwable) {
@@ -61,22 +61,20 @@ public class ConvertJavaCopyPastePostProcessor : CopyPastePostProcessor<TextBloc
public override fun collectTransferableData(file: PsiFile, editor: Editor, startOffsets: IntArray, endOffsets: IntArray): List<TextBlockTransferableData> {
if (file !is PsiJavaFile) return listOf()
return listOf(CopiedCode(file.getName(), file.getText()!!, startOffsets, endOffsets))
return listOf(CopiedJavaCode(file.getText()!!, startOffsets, endOffsets))
}
public override fun processTransferableData(project: Project, editor: Editor, bounds: RangeMarker, caretOffset: Int, indented: Ref<Boolean>, values: List<TextBlockTransferableData>) {
if (DumbService.getInstance(project).isDumb()) return
val data = values.single()
if (data !is CopiedCode) return
if (data !is CopiedJavaCode) return
val document = editor.getDocument()
val targetFile = PsiDocumentManager.getInstance(project).getPsiFile(document) as? JetFile ?: return
fun doConversion(): Pair<String?, Collection<KotlinReferenceData>> {
//TODO: create it in correct context!
val sourceFile = PsiFileFactory.getInstance(project).
createFileFromText(data.fileName, JavaLanguage.INSTANCE, data.fileText) as PsiJavaFile
val sourceFile = PsiFileFactory.getInstance(project).createFileFromText(JavaLanguage.INSTANCE, data.fileText) as PsiJavaFile
val result = convertCopiedCodeToKotlin(data, sourceFile)
val referenceData = buildReferenceData(result.text, result.parseContext, sourceFile, targetFile)
return (if (result.textChanged) result.text else null) to referenceData
@@ -143,7 +141,7 @@ public class ConvertJavaCopyPastePostProcessor : CopyPastePostProcessor<TextBloc
val textChanged: Boolean
)
private fun convertCopiedCodeToKotlin(code: CopiedCode, sourceFile: PsiJavaFile): ConversionResult {
private fun convertCopiedCodeToKotlin(code: CopiedJavaCode, sourceFile: PsiJavaFile): ConversionResult {
assert(code.startOffsets.size() == code.endOffsets.size(), "Must have the same size")
val sourceFileText = code.fileText
@@ -20,7 +20,7 @@ import com.intellij.codeInsight.editorActions.TextBlockTransferableData
import java.awt.datatransfer.DataFlavor
class CopiedCode(val fileName: String, val fileText: String, val startOffsets: IntArray, val endOffsets: IntArray) : TextBlockTransferableData {
class CopiedJavaCode(val fileText: String, val startOffsets: IntArray, val endOffsets: IntArray) : TextBlockTransferableData {
override fun getFlavor() = DATA_FLAVOR
override fun getOffsetCount() = 0