diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ui/textarea/TotalTokensPanel.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ui/textarea/TotalTokensPanel.java index 82316d79..4b66d7e3 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ui/textarea/TotalTokensPanel.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ui/textarea/TotalTokensPanel.java @@ -1,9 +1,11 @@ package ee.carlrobert.codegpt.toolwindow.chat.ui.textarea; +import static com.intellij.openapi.editor.EditorKind.MAIN_EDITOR; import static java.lang.String.format; import com.intellij.icons.AllIcons.General; import com.intellij.openapi.Disposable; +import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.EditorFactory; import com.intellij.openapi.editor.event.EditorFactoryEvent; import com.intellij.openapi.editor.event.EditorFactoryListener; @@ -65,16 +67,23 @@ public class TotalTokensPanel extends JPanel { private void addSelectionListeners(Disposable parentDisposable) { var editorFactory = EditorFactory.getInstance(); for (var editor : editorFactory.getAllEditors()) { - editor.getSelectionModel().addSelectionListener(getSelectionListener()); + addEditorSelectionListener(editor); } + editorFactory.addEditorFactoryListener(new EditorFactoryListener() { @Override public void editorCreated(@NotNull EditorFactoryEvent event) { - event.getEditor().getSelectionModel().addSelectionListener(getSelectionListener()); + addEditorSelectionListener(event.getEditor()); } }, parentDisposable); } + private void addEditorSelectionListener(Editor editor) { + if (MAIN_EDITOR.equals(editor.getEditorKind())) { + editor.getSelectionModel().addSelectionListener(getSelectionListener()); + } + } + private SelectionListener getSelectionListener() { return new SelectionListener() { @Override @@ -96,13 +105,9 @@ public class TotalTokensPanel extends JPanel { label.setText(getLabelHtml(total)); } - public void updateConversationTokens(int total) { - totalTokensDetails.setConversationTokens(total); - update(); - } - public void updateConversationTokens(Conversation conversation) { - updateConversationTokens(encodingManager.countConversationTokens(conversation)); + totalTokensDetails.setConversationTokens(encodingManager.countConversationTokens(conversation)); + update(); } public void updateUserPromptTokens(String userPrompt) { @@ -170,7 +175,7 @@ public class TotalTokensPanel extends JPanel { %s
- Note: Output values might vary across different large language models + Note: Output values might vary across different large language models due to variations in their encoding methods.
@@ -187,4 +192,4 @@ public class TotalTokensPanel extends JPanel { private JBLabel getLabel(TotalTokensDetails totalTokensDetails) { return new JBLabel(getLabelHtml(totalTokensDetails.getTotal())); } -} +} \ No newline at end of file