From 155358084e15199334a6d1cf1dc1f8ba400d7d7b Mon Sep 17 00:00:00 2001 From: Carl-Robert Linnupuu Date: Sun, 8 Jun 2025 09:13:17 +0100 Subject: [PATCH] refactor: ToolWindowFactory class --- .../toolwindow/ProjectToolWindowFactory.java | 36 ------------------ .../toolwindow/ProxyAIToolWindowFactory.kt | 38 +++++++++++++++++++ src/main/resources/META-INF/plugin.xml | 2 +- 3 files changed, 39 insertions(+), 37 deletions(-) delete mode 100644 src/main/java/ee/carlrobert/codegpt/toolwindow/ProjectToolWindowFactory.java create mode 100644 src/main/kotlin/ee/carlrobert/codegpt/toolwindow/ProxyAIToolWindowFactory.kt diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/ProjectToolWindowFactory.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/ProjectToolWindowFactory.java deleted file mode 100644 index 655cdc68..00000000 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/ProjectToolWindowFactory.java +++ /dev/null @@ -1,36 +0,0 @@ -package ee.carlrobert.codegpt.toolwindow; - -import com.intellij.openapi.project.DumbAware; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.wm.ToolWindow; -import com.intellij.openapi.wm.ToolWindowFactory; -import com.intellij.ui.content.ContentManagerEvent; -import com.intellij.ui.content.ContentManagerListener; -import ee.carlrobert.codegpt.toolwindow.chat.ChatToolWindowPanel; -import ee.carlrobert.codegpt.toolwindow.conversations.ConversationsToolWindow; -import javax.swing.JComponent; -import org.jetbrains.annotations.NotNull; - -public class ProjectToolWindowFactory implements ToolWindowFactory, DumbAware { - - public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) { - var chatToolWindowPanel = new ChatToolWindowPanel(project, toolWindow.getDisposable()); - var conversationsToolWindow = new ConversationsToolWindow(project); - - addContent(toolWindow, chatToolWindowPanel, "Chat"); - addContent(toolWindow, conversationsToolWindow.getContent(), "Chat History"); - toolWindow.addContentManagerListener(new ContentManagerListener() { - public void selectionChanged(@NotNull ContentManagerEvent event) { - var content = event.getContent(); - if ("Chat History".equals(content.getTabName()) && content.isSelected()) { - conversationsToolWindow.refresh(); - } - } - }); - } - - public void addContent(ToolWindow toolWindow, JComponent panel, String displayName) { - var contentManager = toolWindow.getContentManager(); - contentManager.addContent(contentManager.getFactory().createContent(panel, displayName, false)); - } -} diff --git a/src/main/kotlin/ee/carlrobert/codegpt/toolwindow/ProxyAIToolWindowFactory.kt b/src/main/kotlin/ee/carlrobert/codegpt/toolwindow/ProxyAIToolWindowFactory.kt new file mode 100644 index 00000000..c299f55a --- /dev/null +++ b/src/main/kotlin/ee/carlrobert/codegpt/toolwindow/ProxyAIToolWindowFactory.kt @@ -0,0 +1,38 @@ +package ee.carlrobert.codegpt.toolwindow + +import com.intellij.openapi.project.DumbAware +import com.intellij.openapi.project.Project +import com.intellij.openapi.wm.ToolWindow +import com.intellij.openapi.wm.ToolWindowFactory +import com.intellij.ui.content.ContentManagerEvent +import com.intellij.ui.content.ContentManagerListener; +import ee.carlrobert.codegpt.toolwindow.chat.ChatToolWindowPanel +import ee.carlrobert.codegpt.toolwindow.conversations.ConversationsToolWindow +import javax.swing.JComponent + +class ProxyAIToolWindowFactory : ToolWindowFactory, DumbAware { + + override fun createToolWindowContent( + project: Project, + toolWindow: ToolWindow + ) { + var chatToolWindowPanel = ChatToolWindowPanel(project, toolWindow.disposable) + var conversationsToolWindow = ConversationsToolWindow(project) + + addContent(toolWindow, chatToolWindowPanel, "Chat") + addContent(toolWindow, conversationsToolWindow.getContent(), "Chat History") + toolWindow.addContentManagerListener(object : ContentManagerListener { + override fun selectionChanged(event: ContentManagerEvent) { + if ("Chat History" == event.content.tabName && event.content.isSelected) { + conversationsToolWindow.refresh() + } + } + }) + } + + private fun addContent(toolWindow: ToolWindow, panel: JComponent, displayName: String) { + toolWindow.contentManager.let { + it.addContent(it.factory.createContent(panel, displayName, false)) + } + } +} \ No newline at end of file diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 70674d00..047e916b 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -76,7 +76,7 @@ id="CodeGPTInlineCompletionProvider" implementation="ee.carlrobert.codegpt.codecompletions.DebouncedCodeCompletionProvider"/> + factoryClass="ee.carlrobert.codegpt.toolwindow.ProxyAIToolWindowFactory"/>