feat: show models submenu on hover (#681)

This commit is contained in:
Carl-Robert Linnupuu 2024-09-24 02:44:58 +03:00
parent a360cb76c6
commit 35e7ca8f20

View file

@ -13,12 +13,15 @@ import static java.lang.String.format;
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 java.util.function.Consumer;
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 class ModelComboBoxAction extends ComboBoxAction {
this.project = project;
this.onModelChange = onModelChange;
this.availableProviders = availableProviders;
setSmallVariant(true);
updateTemplatePresentation(selectedProvider);
ApplicationManager.getApplication().getMessageBus()
.connect()
@ -85,6 +90,14 @@ public class ModelComboBoxAction extends ComboBoxAction {
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(