Skip to content

Commit

Permalink
refactor(sketch): extend LangSketch with ExtensionLangSketch interface
Browse files Browse the repository at this point in the history
…#153

- Updated MermaidSketchProvider and PlantUmlSketchProvider to use ExtensionLangSketch.
- Modified ShirePanelView to handle ExtensionLangSketch.
- Added ExtensionLangSketch interface to LanguageSketchProvider.
  • Loading branch information
phodal committed Dec 10, 2024
1 parent 5622123 commit 2447864
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,15 @@ import com.intellij.openapi.extensions.ExtensionPointName
import com.intellij.openapi.project.Project
import com.phodal.shirecore.ui.viewer.LangSketch


interface ExtensionLangSketch: LangSketch {
fun getExtensionName(): String
}

interface LanguageSketchProvider {
fun isSupported(lang: String): Boolean

fun createSketch(project: Project, content: String): LangSketch
fun createSketch(project: Project, content: String): ExtensionLangSketch

companion object {
private val EP_NAME: ExtensionPointName<LanguageSketchProvider> =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import com.intellij.ui.dsl.builder.Cell
import com.intellij.ui.dsl.builder.panel
import com.intellij.util.ui.JBUI
import com.intellij.util.ui.UIUtil
import com.phodal.shirecore.provider.sketch.ExtensionLangSketch
import com.phodal.shirecore.ui.viewer.CodeHighlightSketch
import com.phodal.shirecore.ui.viewer.DiffLangSketch
import com.phodal.shirecore.ui.viewer.LangSketch
Expand Down Expand Up @@ -116,8 +117,8 @@ class ShirePanelView(val project: Project) : SimpleToolWindowPanel(true, true),
}

else -> {
var langSketch: LangSketch? = null
if (codeFence.originLanguage != null && codeFence.isComplete) {
var langSketch: ExtensionLangSketch? = null
if (codeFence.originLanguage != null && codeFence.isComplete && blockViews[index] !is ExtensionLangSketch) {
langSketch = LanguageSketchProvider.provide(codeFence.originLanguage)
?.createSketch(project, codeFence.text)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,26 @@
package com.phodal.shire.mermaid.provider

import com.intellij.lang.Language
import com.intellij.mermaid.preview.MermaidDiagramPreviewComponent
import com.intellij.openapi.project.Project
import com.intellij.ui.dsl.builder.*
import com.intellij.ui.dsl.builder.panel
import com.phodal.shirecore.provider.sketch.ExtensionLangSketch
import com.phodal.shirecore.provider.sketch.LanguageSketchProvider
import com.phodal.shirecore.ui.viewer.LangSketch
import javax.swing.JComponent
import com.intellij.mermaid.preview.MermaidDiagramPreviewComponent
import javax.swing.JPanel

class MermaidSketchProvider : LanguageSketchProvider {
override fun isSupported(lang: String): Boolean {
return lang == "mermaid"
}

override fun createSketch(project: Project, content: String): LangSketch {
override fun createSketch(project: Project, content: String): ExtensionLangSketch {
TODO("Not yet implemented")
}
}

class MermaidSketch(private val project: Project, private val content: String) : LangSketch {
class MermaidSketch(private val project: Project, private val content: String) : ExtensionLangSketch {
private var mainPanel: JPanel

init {
Expand All @@ -34,6 +35,10 @@ class MermaidSketch(private val project: Project, private val content: String) :
}
}

override fun getExtensionName(): String {
return "mermaid"
}

override fun getViewText(): String {
return content
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import com.intellij.openapi.fileEditor.impl.text.TextEditorProvider
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.testFramework.LightVirtualFile
import com.phodal.shirecore.provider.sketch.ExtensionLangSketch
import com.phodal.shirecore.provider.sketch.LanguageSketchProvider
import com.phodal.shirecore.ui.viewer.LangSketch
import org.plantuml.idea.preview.PlantUmlPreviewPanel
import org.plantuml.idea.preview.editor.PlantUmlPreviewEditor
import org.plantuml.idea.preview.editor.PlantUmlSplitEditor
Expand All @@ -24,13 +24,13 @@ class PlantUmlSketchProvider : LanguageSketchProvider {
return true
}

override fun createSketch(project: Project, content: String): LangSketch {
override fun createSketch(project: Project, content: String): ExtensionLangSketch {
val virtualFile = LightVirtualFile("plantuml.puml", content)
return PlantUmlSketch(project, virtualFile)
}
}

class PlantUmlSketch(private val project: Project, private val virtualFile: VirtualFile) : LangSketch {
class PlantUmlSketch(private val project: Project, private val virtualFile: VirtualFile) : ExtensionLangSketch {
private var mainPanel: JPanel = JPanel()
private var umlPreviewEditor: PlantUmlPreviewEditor

Expand All @@ -40,6 +40,8 @@ class PlantUmlSketch(private val project: Project, private val virtualFile: Virt
umlPreviewEditor.editor = editor.editor
val splitEditor = PlantUmlSplitEditor(editor, umlPreviewEditor)

splitEditor.component.preferredSize = null

mainPanel.add(splitEditor.component, BorderLayout.CENTER)

PlantUmlSettings.getInstance().previewSettings.splitEditorLayout = SplitFileEditor.SplitEditorLayout.SECOND
Expand All @@ -49,6 +51,10 @@ class PlantUmlSketch(private val project: Project, private val virtualFile: Virt
(umlPreviewEditor.component as PlantUmlPreviewPanel).processRequest(LazyApplicationPoolExecutor.Delay.NOW, RenderCommand.Reason.FILE_SWITCHED)
}

override fun getExtensionName(): String {
return "plantuml"
}

override fun getViewText(): String {
return virtualFile.inputStream.bufferedReader().use { it.readText() }
}
Expand Down

0 comments on commit 2447864

Please sign in to comment.