From ecf6ac02ed6c4be57bdb46388ca8b1ba715a8abb Mon Sep 17 00:00:00 2001 From: Carl-Robert Linnupuu Date: Tue, 21 Nov 2023 23:09:16 +0200 Subject: [PATCH] Disable tool window chat editor when initially displayed --- .../components/ChatMessageResponseBody.java | 6 +-- ...seEditor.java => ResponseEditorPanel.java} | 46 +++++++++++-------- .../carlrobert/codegpt/util/EditorUtil.java | 2 +- 3 files changed, 30 insertions(+), 24 deletions(-) rename src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/{ResponseEditor.java => ResponseEditorPanel.java} (92%) diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/components/ChatMessageResponseBody.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/components/ChatMessageResponseBody.java index 3b2d17b7..70fc5fee 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/components/ChatMessageResponseBody.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/components/ChatMessageResponseBody.java @@ -25,7 +25,7 @@ import ee.carlrobert.codegpt.telemetry.TelemetryAction; import ee.carlrobert.codegpt.toolwindow.chat.ResponseNodeRenderer; import ee.carlrobert.codegpt.toolwindow.chat.StreamParser; import ee.carlrobert.codegpt.toolwindow.chat.StreamResponseType; -import ee.carlrobert.codegpt.toolwindow.chat.editor.ResponseEditor; +import ee.carlrobert.codegpt.toolwindow.chat.editor.ResponseEditorPanel; import ee.carlrobert.codegpt.util.MarkdownUtil; import ee.carlrobert.codegpt.util.UIUtil; import ee.carlrobert.llm.client.you.completion.YouSerpResult; @@ -46,7 +46,7 @@ public class ChatMessageResponseBody extends JPanel { private final StreamParser streamParser; private final boolean readOnly; private JPanel currentlyProcessedElement; - private ResponseEditor currentlyProcessedEditor; + private ResponseEditorPanel currentlyProcessedEditor; private JTextPane currentlyProcessedTextPane; private boolean responseReceived; @@ -248,7 +248,7 @@ public class ChatMessageResponseBody extends JPanel { private void prepareProcessingCodeResponse(String code, String markdownLanguage) { hideCarets(); currentlyProcessedTextPane = null; - currentlyProcessedEditor = new ResponseEditor( + currentlyProcessedEditor = new ResponseEditorPanel( project, code, markdownLanguage, diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/ResponseEditor.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/ResponseEditorPanel.java similarity index 92% rename from src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/ResponseEditor.java rename to src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/ResponseEditorPanel.java index f932d764..c4d2442a 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/ResponseEditor.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/editor/ResponseEditorPanel.java @@ -35,13 +35,13 @@ import java.awt.FlowLayout; import javax.swing.Box; import javax.swing.JPanel; -public class ResponseEditor extends JPanel implements Disposable { +public class ResponseEditorPanel extends JPanel implements Disposable { private final Editor editor; private final String language; private final String extension; - public ResponseEditor( + public ResponseEditorPanel( Project project, String code, String markdownLanguage, @@ -66,22 +66,7 @@ public class ResponseEditor extends JPanel implements Disposable { } } - var editorEx = ((EditorEx) editor); - if (readOnly) { - editorEx.setOneLineMode(true); - editorEx.setHorizontalScrollbarVisible(false); - } - editorEx.installPopupHandler(new ContextMenuPopupHandler.Simple(group)); - editorEx.setColorsScheme(EditorColorsManager.getInstance().getSchemeForCurrentUITheme()); - - var settings = editorEx.getSettings(); - settings.setAdditionalColumnsCount(0); - settings.setAdditionalLinesCount(1); - settings.setAdditionalPageAtBottom(false); - settings.setVirtualSpace(false); - settings.setUseSoftWraps(false); - settings.setLineMarkerAreaShown(false); - settings.setGutterIconsShown(false); + configureEditor((EditorEx) editor, readOnly, new ContextMenuPopupHandler.Simple(group)); add(createHeaderComponent(readOnly), BorderLayout.NORTH); add(editor.getComponent(), BorderLayout.CENTER); @@ -99,6 +84,27 @@ public class ResponseEditor extends JPanel implements Disposable { return editor; } + private void configureEditor( + EditorEx editorEx, + boolean readOnly, + ContextMenuPopupHandler popupHandler) { + if (readOnly) { + editorEx.setOneLineMode(true); + editorEx.setHorizontalScrollbarVisible(false); + } + editorEx.installPopupHandler(popupHandler); + editorEx.setColorsScheme(EditorColorsManager.getInstance().getSchemeForCurrentUITheme()); + + var settings = editorEx.getSettings(); + settings.setAdditionalColumnsCount(0); + settings.setAdditionalLinesCount(1); + settings.setAdditionalPageAtBottom(false); + settings.setVirtualSpace(false); + settings.setUseSoftWraps(false); + settings.setLineMarkerAreaShown(false); + settings.setGutterIconsShown(false); + } + private JPanel createHeaderComponent(boolean readOnly) { var headerComponent = new JPanel(new BorderLayout()); headerComponent.setBorder(JBUI.Borders.compound( @@ -114,8 +120,8 @@ public class ResponseEditor extends JPanel implements Disposable { private String getLinkText(boolean expanded) { return expanded ? format( - CodeGPTBundle.get("toolwindow.chat.editor.action.expand"), - ((EditorEx) editor).getDocument().getLineCount() - 1) + CodeGPTBundle.get("toolwindow.chat.editor.action.expand"), + ((EditorEx) editor).getDocument().getLineCount() - 1) : CodeGPTBundle.get("toolwindow.chat.editor.action.collapse"); } diff --git a/src/main/java/ee/carlrobert/codegpt/util/EditorUtil.java b/src/main/java/ee/carlrobert/codegpt/util/EditorUtil.java index 5ead5d67..1b41c55a 100644 --- a/src/main/java/ee/carlrobert/codegpt/util/EditorUtil.java +++ b/src/main/java/ee/carlrobert/codegpt/util/EditorUtil.java @@ -39,7 +39,7 @@ public final class EditorUtil { document, project, lightVirtualFile, - false, + true, EditorKind.MAIN_EDITOR); }