From 43970b1af79cc45d4ad65e2d90f800b3906e4f62 Mon Sep 17 00:00:00 2001 From: Phodal Huang Date: Wed, 12 Jul 2023 20:10:00 +0800 Subject: [PATCH] feat: init for sql ddl --- .../cc/unitmesh/devti/actions/chat/ChatBaseAction.kt | 8 ++++++-- .../cc/unitmesh/devti/actions/chat/CreateDdlAction.kt | 9 +++++++++ .../cc/unitmesh/devti/gui/DevtiFlowToolWindowFactory.kt | 4 ++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/cc/unitmesh/devti/actions/chat/ChatBaseAction.kt b/src/main/kotlin/cc/unitmesh/devti/actions/chat/ChatBaseAction.kt index 5010703562..47ad5bac6e 100644 --- a/src/main/kotlin/cc/unitmesh/devti/actions/chat/ChatBaseAction.kt +++ b/src/main/kotlin/cc/unitmesh/devti/actions/chat/ChatBaseAction.kt @@ -1,5 +1,6 @@ package cc.unitmesh.devti.actions.chat +import cc.unitmesh.devti.gui.DevtiFlowToolWindowFactory import cc.unitmesh.devti.prompting.JavaActionPrompting import cc.unitmesh.devti.gui.chat.ChatBotActionType import cc.unitmesh.devti.gui.chat.ChatCodingComponent @@ -11,8 +12,12 @@ import com.intellij.openapi.wm.ToolWindowManager abstract class ChatBaseAction : AnAction() { override fun actionPerformed(event: AnActionEvent) { + executeAction(event) + } + + open fun executeAction(event: AnActionEvent) { val project = event.project - val toolWindowManager = ToolWindowManager.getInstance(project!!).getToolWindow("DevTiFlow") + val toolWindowManager = ToolWindowManager.getInstance(project!!).getToolWindow(DevtiFlowToolWindowFactory.id) val contentManager = toolWindowManager?.contentManager val caretModel = event.getData(CommonDataKeys.EDITOR)?.caretModel @@ -41,7 +46,6 @@ abstract class ChatBaseAction : AnAction() { JavaActionPrompting(chatCodingService.actionType, lang, selectedText, file, project), getReplaceableAction(event) ) - } open fun getReplaceableAction(event: AnActionEvent): ((response: String) -> Unit)? { diff --git a/src/main/kotlin/cc/unitmesh/devti/actions/chat/CreateDdlAction.kt b/src/main/kotlin/cc/unitmesh/devti/actions/chat/CreateDdlAction.kt index ec1adaf95d..11c4f4587b 100644 --- a/src/main/kotlin/cc/unitmesh/devti/actions/chat/CreateDdlAction.kt +++ b/src/main/kotlin/cc/unitmesh/devti/actions/chat/CreateDdlAction.kt @@ -1,11 +1,20 @@ package cc.unitmesh.devti.actions.chat import cc.unitmesh.devti.gui.chat.ChatBotActionType +import com.intellij.openapi.actionSystem.AnActionEvent +import com.intellij.openapi.actionSystem.CommonDataKeys.PSI_FILE class CreateDdlAction : ChatBaseAction() { override fun getActionType(): ChatBotActionType { return ChatBotActionType.CREATE_DDL } + override fun actionPerformed(event: AnActionEvent) { + val fileType = event.getData(PSI_FILE)?.fileType?.name + if (fileType != "SQL") { + return + } + super.actionPerformed(event) + } } diff --git a/src/main/kotlin/cc/unitmesh/devti/gui/DevtiFlowToolWindowFactory.kt b/src/main/kotlin/cc/unitmesh/devti/gui/DevtiFlowToolWindowFactory.kt index 00c8ce2513..ffa34bf308 100644 --- a/src/main/kotlin/cc/unitmesh/devti/gui/DevtiFlowToolWindowFactory.kt +++ b/src/main/kotlin/cc/unitmesh/devti/gui/DevtiFlowToolWindowFactory.kt @@ -12,6 +12,10 @@ import com.intellij.openapi.wm.ToolWindowFactory import com.intellij.ui.content.ContentFactory class DevtiFlowToolWindowFactory : ToolWindowFactory, DumbAware { + companion object { + val id = "DevTiFlow" + } + private val contentFactory = ApplicationManager.getApplication().getService( ContentFactory::class.java )