From bf145a46acd5c0427dfb610b62971693252fb5ab Mon Sep 17 00:00:00 2001 From: Carl-Robert Linnupuu Date: Tue, 24 Sep 2024 02:44:58 +0300 Subject: [PATCH] feat: show models submenu on hover (#681) --- .../chat/ui/textarea/ModelComboBoxAction.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ui/textarea/ModelComboBoxAction.java b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ui/textarea/ModelComboBoxAction.java index c67a0abf..1271c9c4 100644 --- a/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ui/textarea/ModelComboBoxAction.java +++ b/src/main/java/ee/carlrobert/codegpt/toolwindow/chat/ui/textarea/ModelComboBoxAction.java @@ -13,12 +13,15 @@ import com.intellij.openapi.actionSystem.ActionUpdateThread; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.actionSystem.Presentation; import com.intellij.openapi.actionSystem.ex.ComboBoxAction; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; +import com.intellij.openapi.ui.popup.JBPopup; +import com.intellij.openapi.ui.popup.ListPopup; import ee.carlrobert.codegpt.CodeGPTKeys; import ee.carlrobert.codegpt.Icons; import ee.carlrobert.codegpt.completions.llama.LlamaModel; @@ -41,6 +44,7 @@ import javax.swing.Icon; import javax.swing.JComponent; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class ModelComboBoxAction extends ComboBoxAction { @@ -63,6 +67,7 @@ public ModelComboBoxAction( this.project = project; this.onModelChange = onModelChange; this.availableProviders = availableProviders; + setSmallVariant(true); updateTemplatePresentation(selectedProvider); ApplicationManager.getApplication().getMessageBus() .connect() @@ -85,6 +90,14 @@ public JComponent createCustomComponent( return button; } + @Override + protected JBPopup createActionPopup(DefaultActionGroup group, @NotNull DataContext context, + @Nullable Runnable disposeCallback) { + ListPopup popup = (ListPopup) super.createActionPopup(group, context, disposeCallback); + popup.setShowSubmenuOnHover(true); + return popup; + } + private AnAction[] getCodeGPTModelActions(Project project, Presentation presentation) { var userDetails = CodeGPTKeys.CODEGPT_USER_DETAILS.get(project); return CodeGPTAvailableModels.getToolWindowModels(