mirror of
https://github.com/carlrobertoh/ProxyAI.git
synced 2026-05-11 04:50:31 +00:00
feat: display total tokens for all providers (closes #397)
This commit is contained in:
parent
8cf5720db9
commit
35ee02ba79
3 changed files with 34 additions and 34 deletions
|
|
@ -6,11 +6,13 @@ import static java.lang.String.format;
|
|||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.ActionPlaces;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.impl.EditorImpl;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.ui.JBColor;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import com.intellij.util.ui.JBUI.Borders;
|
||||
import ee.carlrobert.codegpt.CodeGPTKeys;
|
||||
import ee.carlrobert.codegpt.EncodingManager;
|
||||
import ee.carlrobert.codegpt.ReferencedFile;
|
||||
|
|
@ -30,10 +32,10 @@ import ee.carlrobert.codegpt.toolwindow.chat.ui.ChatMessageResponseBody;
|
|||
import ee.carlrobert.codegpt.toolwindow.chat.ui.ChatToolWindowScrollablePanel;
|
||||
import ee.carlrobert.codegpt.toolwindow.chat.ui.ResponsePanel;
|
||||
import ee.carlrobert.codegpt.toolwindow.chat.ui.UserMessagePanel;
|
||||
import ee.carlrobert.codegpt.toolwindow.chat.ui.textarea.ModelComboBoxAction;
|
||||
import ee.carlrobert.codegpt.toolwindow.chat.ui.textarea.TotalTokensDetails;
|
||||
import ee.carlrobert.codegpt.toolwindow.chat.ui.textarea.TotalTokensPanel;
|
||||
import ee.carlrobert.codegpt.toolwindow.chat.ui.textarea.UserPromptTextArea;
|
||||
import ee.carlrobert.codegpt.toolwindow.chat.ui.textarea.UserPromptTextAreaHeader;
|
||||
import ee.carlrobert.codegpt.util.EditorUtil;
|
||||
import ee.carlrobert.codegpt.util.file.FileUtil;
|
||||
import java.awt.BorderLayout;
|
||||
|
|
@ -267,9 +269,8 @@ public abstract class ChatToolWindowTabPanel implements Disposable {
|
|||
JBUI.Borders.customLine(JBColor.border(), 1, 0, 0, 0),
|
||||
JBUI.Borders.empty(8)));
|
||||
var contentManager = project.getService(StandardChatToolWindowContentManager.class);
|
||||
panel.add(JBUI.Panels.simplePanel(new UserPromptTextAreaHeader(
|
||||
panel.add(JBUI.Panels.simplePanel(createUserPromptTextAreaHeader(
|
||||
selectedService,
|
||||
totalTokensPanel,
|
||||
() -> {
|
||||
ConversationService.getInstance().startConversation();
|
||||
contentManager.createNewTabPanel();
|
||||
|
|
@ -278,6 +279,17 @@ public abstract class ChatToolWindowTabPanel implements Disposable {
|
|||
return panel;
|
||||
}
|
||||
|
||||
private JPanel createUserPromptTextAreaHeader(
|
||||
ServiceType selectedService,
|
||||
Runnable onModelChange) {
|
||||
return JBUI.Panels.simplePanel()
|
||||
.withBorder(Borders.emptyBottom(8))
|
||||
.andTransparent()
|
||||
.addToLeft(totalTokensPanel)
|
||||
.addToRight(new ModelComboBoxAction(onModelChange, selectedService)
|
||||
.createCustomComponent(ActionPlaces.UNKNOWN));
|
||||
}
|
||||
|
||||
private JPanel createRootPanel() {
|
||||
var gbc = new GridBagConstraints();
|
||||
gbc.fill = GridBagConstraints.BOTH;
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ import ee.carlrobert.codegpt.EncodingManager;
|
|||
import ee.carlrobert.codegpt.ReferencedFile;
|
||||
import ee.carlrobert.codegpt.actions.IncludeFilesInContextNotifier;
|
||||
import ee.carlrobert.codegpt.conversations.Conversation;
|
||||
import ee.carlrobert.codegpt.settings.GeneralSettings;
|
||||
import ee.carlrobert.codegpt.settings.service.ServiceType;
|
||||
import java.awt.FlowLayout;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
|
@ -154,12 +156,28 @@ public class TotalTokensPanel extends JPanel {
|
|||
entry.getKey(),
|
||||
entry.getValue()))
|
||||
.collect(Collectors.joining());
|
||||
iconLabel.setToolTipText("<html>" + html + "</html>");
|
||||
iconLabel.setToolTipText(getIconToolTipText(html));
|
||||
}
|
||||
});
|
||||
return iconLabel;
|
||||
}
|
||||
|
||||
private String getIconToolTipText(String html) {
|
||||
if (GeneralSettings.getCurrentState().getSelectedService() != ServiceType.OPENAI) {
|
||||
return """
|
||||
<html
|
||||
<p style="margin: 4px 0;">
|
||||
<small>
|
||||
<strong>ⓘ Keep in mind that the output values might vary across different
|
||||
large language models due to variations in their encoding methods.</strong>
|
||||
</small>
|
||||
</p>
|
||||
%s
|
||||
</html>""".formatted(html);
|
||||
}
|
||||
return "<html" + html + "</html>";
|
||||
}
|
||||
|
||||
private String getLabelHtml(int total) {
|
||||
return format("<html><small>Tokens: <strong>%d</strong></small></html>", total);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,30 +0,0 @@
|
|||
package ee.carlrobert.codegpt.toolwindow.chat.ui.textarea;
|
||||
|
||||
import com.intellij.openapi.actionSystem.ActionPlaces;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import ee.carlrobert.codegpt.settings.service.ServiceType;
|
||||
import java.awt.BorderLayout;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
public class UserPromptTextAreaHeader extends JPanel {
|
||||
|
||||
public UserPromptTextAreaHeader(
|
||||
ServiceType selectedService,
|
||||
TotalTokensPanel totalTokensPanel,
|
||||
Runnable onModelChange) {
|
||||
super(new BorderLayout());
|
||||
setOpaque(false);
|
||||
setBorder(JBUI.Borders.emptyBottom(8));
|
||||
switch (selectedService) {
|
||||
case OPENAI:
|
||||
case AZURE:
|
||||
add(totalTokensPanel, BorderLayout.LINE_START);
|
||||
break;
|
||||
case YOU:
|
||||
break;
|
||||
default:
|
||||
}
|
||||
add(new ModelComboBoxAction(onModelChange, selectedService)
|
||||
.createCustomComponent(ActionPlaces.UNKNOWN), BorderLayout.LINE_END);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue