Skip to content

Commit 052952a

Browse files
committed
feat(openapi): add OpenAPISketchProvider support
Added OpenAPISketchProvider to handle OpenAPI file editing. Removed unnecessary panel code in MermaidSketch and updated related imports and file configurations.
1 parent d506e3f commit 052952a

File tree

5 files changed

+25
-7
lines changed

5 files changed

+25
-7
lines changed

core/src/223/main/resources/META-INF/autodev-core.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,7 @@
248248

249249
<langSketchProvider implementation="cc.unitmesh.devti.sketch.ui.patch.DiffLangSketchProvider"/>
250250
<langSketchProvider implementation="cc.unitmesh.devti.sketch.ui.webview.WebpageSketchProvider"/>
251+
<langSketchProvider implementation="cc.unitmesh.devti.sketch.ui.openapi.OpenAPISketchProvider"/>
251252
</extensions>
252253

253254
<actions>

core/src/233/main/resources/META-INF/autodev-core.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,7 @@
248248

249249
<langSketchProvider implementation="cc.unitmesh.devti.sketch.ui.patch.DiffLangSketchProvider"/>
250250
<langSketchProvider implementation="cc.unitmesh.devti.sketch.ui.webview.WebpageSketchProvider"/>
251+
<langSketchProvider implementation="cc.unitmesh.devti.sketch.ui.openapi.OpenAPISketchProvider"/>
251252
</extensions>
252253

253254
<actions>

core/src/main/kotlin/cc/unitmesh/devti/sketch/ui/code/CodeHighlightSketch.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import com.intellij.ide.scratch.ScratchRootType
3434
import com.intellij.openapi.fileEditor.FileEditor
3535
import com.intellij.openapi.fileEditor.FileEditorProvider
3636
import com.intellij.openapi.fileEditor.TextEditorWithPreview
37+
import com.intellij.openapi.fileEditor.impl.text.TextEditorProvider
3738
import com.intellij.openapi.util.text.StringUtil
3839
import com.intellij.psi.PsiManager
3940
import com.intellij.temporary.gui.block.whenDisposed

core/src/main/kotlin/cc/unitmesh/devti/sketch/ui/openapi/OpenAPISketchProvider.kt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,17 @@ import cc.unitmesh.devti.sketch.ui.FileEditorSketch
55
import cc.unitmesh.devti.sketch.ui.LanguageSketchProvider
66
import cc.unitmesh.devti.sketch.ui.code.CodeHighlightSketch
77
import cc.unitmesh.devti.util.parser.CodeFence.Companion.findLanguage
8+
import com.intellij.openapi.fileEditor.FileEditorProvider
89
import com.intellij.openapi.project.Project
910
import com.intellij.testFramework.LightVirtualFile
1011
import javax.swing.JComponent
1112

13+
14+
private val editorWithPreviews: List<FileEditorProvider> =
15+
FileEditorProvider.EP_FILE_EDITOR_PROVIDER.extensionList.filter {
16+
it.javaClass.simpleName.contains("Preview")
17+
}
18+
1219
class OpenAPISketchProvider : LanguageSketchProvider {
1320
override fun isSupported(lang: String) = lang == "yaml" || lang == "yml"
1421

@@ -24,6 +31,21 @@ class OpenAPISketchProvider : LanguageSketchProvider {
2431
}
2532
}
2633

34+
val file = LightVirtualFile(createFileNameWithTime(), content)
35+
val fileEditor = editorWithPreviews.map {
36+
it.accept(project, file)
37+
}.firstOrNull().let {
38+
it ?: FileEditorProvider.EP_FILE_EDITOR_PROVIDER.extensionList.firstOrNull {
39+
it.javaClass.simpleName == "TextEditorProvider"
40+
}?.createEditor(project, file)
41+
}
42+
43+
if (fileEditor != null) {
44+
return object : FileEditorSketch(project, file, fileEditor.javaClass.simpleName), ExtensionLangSketch {
45+
override fun getExtensionName(): String = "OpenAPI"
46+
}
47+
}
48+
2749
return OpenAPISketch(project, content)
2850
}
2951
}

exts/ext-mermaid/src/main/kotlin/cc/unitmesh/mermaid/MermaidSketchProvider.kt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,6 @@ class MermaidSketchProvider : LanguageSketchProvider {
2424

2525
class MermaidSketch(project: Project, myFile: VirtualFile) :
2626
FileEditorSketch(project, myFile, "MermaidEditorWithPreviewProvider") {
27-
override var mainPanel: JPanel = panel {
28-
row {
29-
cell(editor.component).align(Align.FILL)
30-
}
31-
}.apply {
32-
border = JBUI.Borders.empty(0, 10)
33-
}
3427

3528
override fun getExtensionName(): String = "mermaid"
3629
}

0 commit comments

Comments
 (0)