1
1
package cc.unitmesh.devti.gui.planner
2
2
3
+ import cc.unitmesh.devti.AutoDevSnippetFile
4
+ import cc.unitmesh.devti.sketch.ui.code.EditorUtil
5
+ import cc.unitmesh.devti.sketch.ui.code.findDocument
6
+ import cc.unitmesh.devti.util.parser.CodeFence
7
+ import com.intellij.openapi.Disposable
8
+ import com.intellij.openapi.editor.Document
9
+ import com.intellij.openapi.editor.EditorFactory
10
+ import com.intellij.openapi.editor.EditorKind
11
+ import com.intellij.openapi.editor.ex.EditorEx
3
12
import com.intellij.openapi.project.Project
13
+ import com.intellij.testFramework.LightVirtualFile
4
14
import com.intellij.ui.components.JBScrollPane
5
15
import com.intellij.util.ui.JBUI
6
16
import java.awt.BorderLayout
@@ -13,20 +23,29 @@ class EditPlanViewPanel(
13
23
private val content : String ,
14
24
private val onSave : (String ) -> Unit ,
15
25
private val onCancel : () -> Unit
16
- ) : JPanel(BorderLayout ()) {
17
- private var markdownEditor: MarkdownLanguageField ? = null
26
+ ) : JPanel(BorderLayout ()), Disposable {
27
+ private var markdownEditor: EditorEx
18
28
19
29
init {
20
- markdownEditor = MarkdownLanguageField (project, content, " Edit your plan here..." , " plan.md" )
30
+ val language = CodeFence .findLanguage(" Markdown" )
31
+ val file = LightVirtualFile (AutoDevSnippetFile .naming(" md" ), language, content)
32
+ markdownEditor = try {
33
+ val document: Document = file.findDocument() ? : throw IllegalStateException (" Document not found" )
34
+ EditorFactory .getInstance().createEditor(document, project, EditorKind .MAIN_EDITOR ) as ? EditorEx
35
+ } catch (e: Throwable ) {
36
+ throw e
37
+ } ? : throw IllegalStateException (" Editor not found" )
38
+
39
+ EditorUtil .configEditor(markdownEditor, project, file, false )
21
40
22
41
val buttonPanel = JPanel (BorderLayout ()).apply {
23
- background = markdownEditor?.getEditor( true )? .backgroundColor
42
+ background = markdownEditor.backgroundColor
24
43
}
25
44
26
45
val buttonsBox = Box .createHorizontalBox().apply {
27
46
add(JButton (" Save" ).apply {
28
47
addActionListener {
29
- val newContent = markdownEditor?. text ? : " "
48
+ val newContent = markdownEditor.document. text
30
49
onSave(newContent)
31
50
}
32
51
})
@@ -40,13 +59,13 @@ class EditPlanViewPanel(
40
59
buttonPanel.add(buttonsBox, BorderLayout .EAST )
41
60
buttonPanel.border = JBUI .Borders .empty(4 )
42
61
43
- add(JBScrollPane (markdownEditor), BorderLayout .CENTER )
62
+ add(JBScrollPane (markdownEditor.component ), BorderLayout .CENTER )
44
63
add(buttonPanel, BorderLayout .SOUTH )
45
64
}
46
65
47
- fun getEditor (): MarkdownLanguageField ? = markdownEditor
66
+ fun getEditor (): EditorEx = markdownEditor
67
+
68
+ override fun dispose () {
48
69
49
- fun dispose () {
50
- markdownEditor = null
51
70
}
52
71
}
0 commit comments