From cc66ed9f749b9da6e4dfc23a27719069eba57bbb Mon Sep 17 00:00:00 2001 From: Carl-Robert Linnupuu Date: Sun, 16 Apr 2023 19:05:30 +0100 Subject: [PATCH] Initialize EncodingManager with select model encoding, Code refactoring (#68) --- .../carlrobert/codegpt/EncodingManager.java | 32 +++++++++ .../codegpt/action/CustomPromptDialog.java | 2 +- .../client/CompletionRequestProvider.java | 66 +++++++++---------- .../state/settings/SettingsConfigurable.java | 2 +- .../chat/ChatContentManagerService.java | 2 - .../toolwindow/chat/ChatTabbedPane.java | 1 + .../toolwindow/chat/EncodingManager.java | 30 --------- .../chat/ToolWindowTabPanelFactory.java | 2 + .../chat/actions/TokenToolbarLabelAction.java | 28 -------- .../{ => html}/BrowserContentManager.java | 2 +- .../ChatToolWindowTabHtmlPanel.form | 2 +- .../ChatToolWindowTabHtmlPanel.java | 4 +- .../{ => html}/CodeBlockNodeRenderer.java | 2 +- .../chat/{ => html}/HtmlPanelPopupMenu.java | 2 +- .../{ => html}/MarkdownJCEFHtmlPanel.java | 10 +-- .../chat/{ => html}/ReplaceInEditorQuery.java | 2 +- .../{ => swing}/ChatToolWindowTabPanel.form | 4 +- .../{ => swing}/ChatToolWindowTabPanel.java | 6 +- .../swing}/LandingView.java | 2 +- .../swing}/ScrollPane.java | 3 +- .../swing}/SyntaxTextArea.java | 3 +- 21 files changed, 91 insertions(+), 116 deletions(-) create mode 100644 src/main/java/ee/carlrobert/codegpt/EncodingManager.java delete mode 100644 src/main/java/ee/carlrobert/codegpt/toolwindow/chat/EncodingManager.java delete mode 100644 src/main/java/ee/carlrobert/codegpt/toolwindow/chat/actions/TokenToolbarLabelAction.java rename src/main/java/ee/carlrobert/codegpt/toolwindow/chat/{ => html}/BrowserContentManager.java (98%) rename src/main/java/ee/carlrobert/codegpt/toolwindow/chat/{ => html}/ChatToolWindowTabHtmlPanel.form (95%) rename src/main/java/ee/carlrobert/codegpt/toolwindow/chat/{ => html}/ChatToolWindowTabHtmlPanel.java (97%) rename src/main/java/ee/carlrobert/codegpt/toolwindow/chat/{ => html}/CodeBlockNodeRenderer.java (97%) rename src/main/java/ee/carlrobert/codegpt/toolwindow/chat/{ => html}/HtmlPanelPopupMenu.java (94%) rename src/main/java/ee/carlrobert/codegpt/toolwindow/chat/{ => html}/MarkdownJCEFHtmlPanel.java (97%) rename src/main/java/ee/carlrobert/codegpt/toolwindow/chat/{ => html}/ReplaceInEditorQuery.java (98%) rename src/main/java/ee/carlrobert/codegpt/toolwindow/chat/{ => swing}/ChatToolWindowTabPanel.form (93%) rename src/main/java/ee/carlrobert/codegpt/toolwindow/chat/{ => swing}/ChatToolWindowTabPanel.java (97%) rename src/main/java/ee/carlrobert/codegpt/toolwindow/{components => chat/swing}/LandingView.java (96%) rename src/main/java/ee/carlrobert/codegpt/toolwindow/{components => chat/swing}/ScrollPane.java (87%) rename src/main/java/ee/carlrobert/codegpt/toolwindow/{components => chat/swing}/SyntaxTextArea.java (95%) diff --git a/src/main/java/ee/carlrobert/codegpt/EncodingManager.java b/src/main/java/ee/carlrobert/codegpt/EncodingManager.java new file mode 100644 index 00000000..83abdb95 --- /dev/null +++ b/src/main/java/ee/carlrobert/codegpt/EncodingManager.java @@ -0,0 +1,32 @@ +package ee.carlrobert.codegpt; + +import com.knuddels.jtokkit.Encodings; +import com.knuddels.jtokkit.api.Encoding; +import com.knuddels.jtokkit.api.EncodingRegistry; +import ee.carlrobert.codegpt.state.settings.SettingsState; +import ee.carlrobert.openai.client.completion.chat.request.ChatCompletionMessage; + +public class EncodingManager { + + private static final EncodingManager instance = new EncodingManager(); + private final EncodingRegistry registry = Encodings.newDefaultEncodingRegistry(); + private Encoding encoding; + + private EncodingManager() { + var settings = SettingsState.getInstance(); + setEncoding(settings.isChatCompletionOptionSelected ? settings.chatCompletionBaseModel : settings.textCompletionBaseModel); + } + + public static EncodingManager getInstance() { + return instance; + } + + public void setEncoding(String modelName) { + this.encoding = registry.getEncodingForModel(modelName).orElseThrow(); + } + + public int countMessageTokens(ChatCompletionMessage message) { + var tokensPerMessage = 4; // every message follows <|start|>{role/name}\n{content}<|end|>\n + return encoding.countTokens(message.getRole() + message.getContent()) + tokensPerMessage; + } +} diff --git a/src/main/java/ee/carlrobert/codegpt/action/CustomPromptDialog.java b/src/main/java/ee/carlrobert/codegpt/action/CustomPromptDialog.java index aa6f4d5c..a30e7d8b 100644 --- a/src/main/java/ee/carlrobert/codegpt/action/CustomPromptDialog.java +++ b/src/main/java/ee/carlrobert/codegpt/action/CustomPromptDialog.java @@ -8,7 +8,7 @@ import com.intellij.ui.components.JBScrollPane; import com.intellij.util.ui.FormBuilder; import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UI; -import ee.carlrobert.codegpt.toolwindow.components.SyntaxTextArea; +import ee.carlrobert.codegpt.toolwindow.chat.swing.SyntaxTextArea; import javax.annotation.Nullable; import javax.swing.JComponent; import javax.swing.JTextArea; diff --git a/src/main/java/ee/carlrobert/codegpt/client/CompletionRequestProvider.java b/src/main/java/ee/carlrobert/codegpt/client/CompletionRequestProvider.java index af9d2fbd..b16b81ab 100644 --- a/src/main/java/ee/carlrobert/codegpt/client/CompletionRequestProvider.java +++ b/src/main/java/ee/carlrobert/codegpt/client/CompletionRequestProvider.java @@ -2,11 +2,12 @@ package ee.carlrobert.codegpt.client; import static ee.carlrobert.openai.client.completion.chat.ChatCompletionModel.GPT_3_5; import static ee.carlrobert.openai.client.completion.chat.ChatCompletionModel.GPT_3_5_SNAPSHOT; +import static java.util.stream.Collectors.toList; +import ee.carlrobert.codegpt.EncodingManager; import ee.carlrobert.codegpt.state.conversations.Conversation; import ee.carlrobert.codegpt.state.conversations.ConversationsState; import ee.carlrobert.codegpt.state.settings.SettingsState; -import ee.carlrobert.codegpt.toolwindow.chat.EncodingManager; import ee.carlrobert.openai.client.completion.chat.request.ChatCompletionMessage; import ee.carlrobert.openai.client.completion.chat.request.ChatCompletionRequest; import ee.carlrobert.openai.client.completion.text.TextCompletionModel; @@ -14,7 +15,6 @@ import ee.carlrobert.openai.client.completion.text.request.TextCompletionRequest import java.util.ArrayList; import java.util.List; import java.util.Objects; -import java.util.stream.Collectors; class CompletionRequestProvider { @@ -52,42 +52,42 @@ class CompletionRequestProvider { messages.add(new ChatCompletionMessage("user", prompt)); var settingsState = SettingsState.getInstance(); + // TODO: Add support for other models - if (settingsState.isChatCompletionOptionSelected && - List.of(GPT_3_5.getCode(), GPT_3_5_SNAPSHOT.getCode()).contains(settingsState.chatCompletionBaseModel)) { - var totalMessagesUsage = messages.parallelStream().mapToInt(this::getMessageTokenCount).sum(); - var totalUsage = totalMessagesUsage + 1000; // 1000 - total completion tokens, currently not customizable - - var messageSize = messages.size(); - - if (totalUsage > 4097) { - if (!ConversationsState.getInstance().discardAllTokenLimits) { - if (!conversation.isDiscardTokenLimit()) { - throw new TotalUsageExceededException(); - } - } - - // skip the system prompt - for (int i = 1; i < messageSize; i++) { - if (totalUsage <= 4097) { - break; - } - - totalUsage -= getMessageTokenCount(messages.get(i)); - messages.set(i, null); - } - - return messages.stream().filter(Objects::nonNull).collect(Collectors.toList()); - } + var isSeamlessConversationSupported = settingsState.isChatCompletionOptionSelected && + List.of(GPT_3_5.getCode(), GPT_3_5_SNAPSHOT.getCode()).contains(settingsState.chatCompletionBaseModel); + if (isSeamlessConversationSupported) { + return tryReducingMessagesOrThrow(messages); } - return messages; } - private int getMessageTokenCount(ChatCompletionMessage message) { - // TODO: Size 4 for GPT-3.5, 3 for GPT-4 - var tokensPerMessage = 4; // every message follows <|start|>{role/name}\n{content}<|end|>\n - return encodingManager.countTokens(message.getRole() + message.getContent()) + tokensPerMessage; + private List tryReducingMessagesOrThrow(List messages) { + int MAX_TOKEN_LIMIT = 4097; + int totalMessagesUsage = messages.parallelStream().mapToInt(encodingManager::countMessageTokens).sum(); + int totalUsage = totalMessagesUsage + 1000; // 1000 - max completion token size (currently not customizable) + + if (totalUsage <= MAX_TOKEN_LIMIT) { + return messages; + } + + if (!ConversationsState.getInstance().discardAllTokenLimits) { + if (!conversation.isDiscardTokenLimit()) { + throw new TotalUsageExceededException(); + } + } + + // skip the system prompt + for (int i = 1; i < messages.size(); i++) { + if (totalUsage <= MAX_TOKEN_LIMIT) { + break; + } + + totalUsage -= encodingManager.countMessageTokens(messages.get(i)); + messages.set(i, null); + } + + return messages.stream().filter(Objects::nonNull).collect(toList()); } private StringBuilder getBasePrompt(String model) { diff --git a/src/main/java/ee/carlrobert/codegpt/state/settings/SettingsConfigurable.java b/src/main/java/ee/carlrobert/codegpt/state/settings/SettingsConfigurable.java index cfa1e2eb..4d470eaa 100644 --- a/src/main/java/ee/carlrobert/codegpt/state/settings/SettingsConfigurable.java +++ b/src/main/java/ee/carlrobert/codegpt/state/settings/SettingsConfigurable.java @@ -4,7 +4,7 @@ import com.intellij.openapi.options.Configurable; import com.intellij.openapi.project.ProjectUtil; import ee.carlrobert.codegpt.state.conversations.ConversationsState; import ee.carlrobert.codegpt.toolwindow.chat.ChatContentManagerService; -import ee.carlrobert.codegpt.toolwindow.chat.EncodingManager; +import ee.carlrobert.codegpt.EncodingManager; import ee.carlrobert.codegpt.toolwindow.chat.ToolWindowTabPanelFactory; import javax.swing.JComponent; import org.jetbrains.annotations.Nls; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatContentManagerService.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatContentManagerService.java index 4fc1daa2..7cc86e3a 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatContentManagerService.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatContentManagerService.java @@ -3,14 +3,12 @@ package ee.carlrobert.codegpt.toolwindow.chat; import static java.util.Objects.requireNonNull; import com.intellij.openapi.components.Service; -import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.openapi.wm.ToolWindow; import com.intellij.openapi.wm.ToolWindowManager; import com.intellij.ui.content.Content; import java.util.Arrays; import java.util.Optional; -import org.jetbrains.annotations.Nullable; @Service(Service.Level.PROJECT) public class ChatContentManagerService { diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatTabbedPane.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatTabbedPane.java index c59c8433..d03a4f0c 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatTabbedPane.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatTabbedPane.java @@ -2,6 +2,7 @@ package ee.carlrobert.codegpt.toolwindow.chat; import com.intellij.ui.components.JBTabbedPane; import ee.carlrobert.codegpt.state.conversations.ConversationsState; +import ee.carlrobert.codegpt.toolwindow.chat.html.ChatToolWindowTabHtmlPanel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Map; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/EncodingManager.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/EncodingManager.java deleted file mode 100644 index 9ed93926..00000000 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/EncodingManager.java +++ /dev/null @@ -1,30 +0,0 @@ -package ee.carlrobert.codegpt.toolwindow.chat; - -import com.knuddels.jtokkit.Encodings; -import com.knuddels.jtokkit.api.Encoding; -import com.knuddels.jtokkit.api.EncodingRegistry; -import com.knuddels.jtokkit.api.EncodingType; - -public class EncodingManager { - - private static final EncodingManager instance = new EncodingManager(); - private final EncodingRegistry registry; - private Encoding encoding; - - private EncodingManager() { - this.registry = Encodings.newDefaultEncodingRegistry(); - this.encoding = registry.getEncoding(EncodingType.CL100K_BASE); - } - - public static EncodingManager getInstance() { - return instance; - } - - public void setEncoding(String modelName) { - this.encoding = registry.getEncodingForModel(modelName).orElseThrow(); - } - - public int countTokens(String message) { - return encoding.countTokens(message); - } -} diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ToolWindowTabPanelFactory.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ToolWindowTabPanelFactory.java index a0c73c44..94785f85 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ToolWindowTabPanelFactory.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ToolWindowTabPanelFactory.java @@ -2,6 +2,8 @@ package ee.carlrobert.codegpt.toolwindow.chat; import com.intellij.openapi.project.Project; import com.intellij.ui.jcef.JBCefApp; +import ee.carlrobert.codegpt.toolwindow.chat.html.ChatToolWindowTabHtmlPanel; +import ee.carlrobert.codegpt.toolwindow.chat.swing.ChatToolWindowTabPanel; import org.jetbrains.annotations.NotNull; public class ToolWindowTabPanelFactory { diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/actions/TokenToolbarLabelAction.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/actions/TokenToolbarLabelAction.java deleted file mode 100644 index 79a7d31c..00000000 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/actions/TokenToolbarLabelAction.java +++ /dev/null @@ -1,28 +0,0 @@ -package ee.carlrobert.codegpt.toolwindow.chat.actions; - -import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.Presentation; -import com.intellij.openapi.actionSystem.ex.ToolbarLabelAction; -import com.intellij.util.ui.JBUI; -import javax.swing.JComponent; -import org.jetbrains.annotations.NotNull; - -public class TokenToolbarLabelAction extends ToolbarLabelAction { - - @Override - public @NotNull JComponent createCustomComponent( - @NotNull Presentation presentation, - @NotNull String place) { - JComponent component = super.createCustomComponent(presentation, place); - component.setBorder(JBUI.Borders.empty(0, 2)); - return component; - } - - @Override - public void update(@NotNull AnActionEvent e) { - super.update(e); - Presentation presentation = e.getPresentation(); - presentation.setText("Tokens: 0/0"); - presentation.setVisible(true); - } -} diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/BrowserContentManager.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/BrowserContentManager.java similarity index 98% rename from src/main/java/ee/carlrobert/codegpt/toolwindow/chat/BrowserContentManager.java rename to src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/BrowserContentManager.java index 15daf72c..7d89f033 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/BrowserContentManager.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/BrowserContentManager.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt.toolwindow.chat; +package ee.carlrobert.codegpt.toolwindow.chat.html; import static icons.Icons.getHtmlSvgIcon; import static org.apache.commons.text.StringEscapeUtils.escapeEcmaScript; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatToolWindowTabHtmlPanel.form b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/ChatToolWindowTabHtmlPanel.form similarity index 95% rename from src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatToolWindowTabHtmlPanel.form rename to src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/ChatToolWindowTabHtmlPanel.form index bc94dbb1..ed76bbdf 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatToolWindowTabHtmlPanel.form +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/ChatToolWindowTabHtmlPanel.form @@ -1,5 +1,5 @@ -
+ diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatToolWindowTabHtmlPanel.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/ChatToolWindowTabHtmlPanel.java similarity index 97% rename from src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatToolWindowTabHtmlPanel.java rename to src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/ChatToolWindowTabHtmlPanel.java index 475ac533..3f1b499d 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatToolWindowTabHtmlPanel.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/ChatToolWindowTabHtmlPanel.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt.toolwindow.chat; +package ee.carlrobert.codegpt.toolwindow.chat.html; import static icons.Icons.DefaultImageIcon; @@ -13,6 +13,8 @@ import ee.carlrobert.codegpt.state.conversations.Conversation; import ee.carlrobert.codegpt.state.conversations.ConversationsState; import ee.carlrobert.codegpt.state.conversations.message.Message; import ee.carlrobert.codegpt.state.settings.SettingsState; +import ee.carlrobert.codegpt.toolwindow.chat.ToolWindowTabPanel; +import ee.carlrobert.codegpt.toolwindow.chat.html.MarkdownJCEFHtmlPanel; import ee.carlrobert.codegpt.toolwindow.components.GenerateButton; import ee.carlrobert.codegpt.toolwindow.components.TextArea; import ee.carlrobert.openai.client.completion.ErrorDetails; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/CodeBlockNodeRenderer.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/CodeBlockNodeRenderer.java similarity index 97% rename from src/main/java/ee/carlrobert/codegpt/toolwindow/chat/CodeBlockNodeRenderer.java rename to src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/CodeBlockNodeRenderer.java index dda10958..40321216 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/CodeBlockNodeRenderer.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/CodeBlockNodeRenderer.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt.toolwindow.chat; +package ee.carlrobert.codegpt.toolwindow.chat.html; import static org.apache.commons.text.StringEscapeUtils.escapeEcmaScript; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/HtmlPanelPopupMenu.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/HtmlPanelPopupMenu.java similarity index 94% rename from src/main/java/ee/carlrobert/codegpt/toolwindow/chat/HtmlPanelPopupMenu.java rename to src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/HtmlPanelPopupMenu.java index 1e5fbbdc..af1d1c16 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/HtmlPanelPopupMenu.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/HtmlPanelPopupMenu.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt.toolwindow.chat; +package ee.carlrobert.codegpt.toolwindow.chat.html; import com.intellij.icons.AllIcons; import java.awt.event.MouseAdapter; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/MarkdownJCEFHtmlPanel.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/MarkdownJCEFHtmlPanel.java similarity index 97% rename from src/main/java/ee/carlrobert/codegpt/toolwindow/chat/MarkdownJCEFHtmlPanel.java rename to src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/MarkdownJCEFHtmlPanel.java index 4856089f..d4827678 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/MarkdownJCEFHtmlPanel.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/MarkdownJCEFHtmlPanel.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt.toolwindow.chat; +package ee.carlrobert.codegpt.toolwindow.chat.html; import static ee.carlrobert.codegpt.util.ThemeUtils.getBackgroundColorRGB; import static ee.carlrobert.codegpt.util.ThemeUtils.getButtonBackgroundColorRGB; @@ -163,15 +163,15 @@ public class MarkdownJCEFHtmlPanel extends JCEFHtmlPanel { myCefBrowser.executeJavaScript( "window.JavaPanelBridge = {" + "copyCode : function(code) {" + - copyCodeQuery.inject("code") + + copyCodeQuery.inject("code") + "}," + "replaceCode : function(code) {" + - replaceInEditorQuery.inject("code") + + replaceInEditorQuery.inject("code") + "}," + "deleteMessage : function(messageId) {" + - deleteMessageQuery.inject("messageId") + + deleteMessageQuery.inject("messageId") + "}" + - "};", + "};", myCefBrowser.getURL(), 0); myCefBrowser.executeJavaScript(FileUtils.getResource("/html/js/main.js"), myCefBrowser.getURL(), 0); isLoaded.complete(null); diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ReplaceInEditorQuery.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/ReplaceInEditorQuery.java similarity index 98% rename from src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ReplaceInEditorQuery.java rename to src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/ReplaceInEditorQuery.java index 67b8c35a..32cf9889 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ReplaceInEditorQuery.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/html/ReplaceInEditorQuery.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt.toolwindow.chat; +package ee.carlrobert.codegpt.toolwindow.chat.html; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.WriteCommandAction; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatToolWindowTabPanel.form b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/swing/ChatToolWindowTabPanel.form similarity index 93% rename from src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatToolWindowTabPanel.form rename to src/main/java/ee/carlrobert/codegpt/toolwindow/chat/swing/ChatToolWindowTabPanel.form index e7af6272..868003dc 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatToolWindowTabPanel.form +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/swing/ChatToolWindowTabPanel.form @@ -1,5 +1,5 @@ - + @@ -8,7 +8,7 @@ - + diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatToolWindowTabPanel.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/swing/ChatToolWindowTabPanel.java similarity index 97% rename from src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatToolWindowTabPanel.java rename to src/main/java/ee/carlrobert/codegpt/toolwindow/chat/swing/ChatToolWindowTabPanel.java index d2780221..a13fb0c4 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ChatToolWindowTabPanel.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/swing/ChatToolWindowTabPanel.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt.toolwindow.chat; +package ee.carlrobert.codegpt.toolwindow.chat.swing; import static ee.carlrobert.codegpt.util.SwingUtils.createIconLabel; import static ee.carlrobert.codegpt.util.SwingUtils.createTextPane; @@ -18,10 +18,8 @@ import ee.carlrobert.codegpt.state.conversations.ConversationsState; import ee.carlrobert.codegpt.state.conversations.message.Message; import ee.carlrobert.codegpt.state.settings.SettingsConfigurable; import ee.carlrobert.codegpt.state.settings.SettingsState; +import ee.carlrobert.codegpt.toolwindow.chat.ToolWindowTabPanel; import ee.carlrobert.codegpt.toolwindow.components.GenerateButton; -import ee.carlrobert.codegpt.toolwindow.components.LandingView; -import ee.carlrobert.codegpt.toolwindow.components.ScrollPane; -import ee.carlrobert.codegpt.toolwindow.components.SyntaxTextArea; import ee.carlrobert.codegpt.toolwindow.components.TextArea; import ee.carlrobert.openai.client.completion.ErrorDetails; import icons.Icons; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/components/LandingView.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/swing/LandingView.java similarity index 96% rename from src/main/java/ee/carlrobert/codegpt/toolwindow/components/LandingView.java rename to src/main/java/ee/carlrobert/codegpt/toolwindow/chat/swing/LandingView.java index 0b6b6b3b..241c5ad3 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/components/LandingView.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/swing/LandingView.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt.toolwindow.components; +package ee.carlrobert.codegpt.toolwindow.chat.swing; import static java.util.stream.Collectors.toList; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/components/ScrollPane.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/swing/ScrollPane.java similarity index 87% rename from src/main/java/ee/carlrobert/codegpt/toolwindow/components/ScrollPane.java rename to src/main/java/ee/carlrobert/codegpt/toolwindow/chat/swing/ScrollPane.java index 5b86097d..9356fda9 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/components/ScrollPane.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/swing/ScrollPane.java @@ -1,6 +1,5 @@ -package ee.carlrobert.codegpt.toolwindow.components; +package ee.carlrobert.codegpt.toolwindow.chat.swing; -import com.intellij.openapi.roots.ui.componentsList.components.ScrollablePanel; import com.intellij.ui.components.JBScrollPane; import java.awt.Adjustable; import java.awt.event.AdjustmentEvent; diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/components/SyntaxTextArea.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/swing/SyntaxTextArea.java similarity index 95% rename from src/main/java/ee/carlrobert/codegpt/toolwindow/components/SyntaxTextArea.java rename to src/main/java/ee/carlrobert/codegpt/toolwindow/chat/swing/SyntaxTextArea.java index 8df1ca0e..6da9d10a 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/components/SyntaxTextArea.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/swing/SyntaxTextArea.java @@ -1,4 +1,4 @@ -package ee.carlrobert.codegpt.toolwindow.components; +package ee.carlrobert.codegpt.toolwindow.chat.swing; import static ee.carlrobert.codegpt.util.SwingUtils.createIconButton; @@ -6,6 +6,7 @@ import com.intellij.icons.AllIcons; import com.intellij.util.ui.JBFont; import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UIUtil; +import ee.carlrobert.codegpt.toolwindow.components.ComponentBorder; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection;