From 0bd3a9a573b599aef1a61c371e1b1f166bcb7e3c Mon Sep 17 00:00:00 2001 From: Konstantin Kolosovsky Date: Mon, 8 Jan 2018 02:10:31 +0300 Subject: [PATCH] Show option button popup on down arrow pressed --- .../com/intellij/ui/components/JBOptionButton.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/platform/platform-api/src/com/intellij/ui/components/JBOptionButton.java b/platform/platform-api/src/com/intellij/ui/components/JBOptionButton.java index b6dcf1bcf89d..b1871d81adac 100644 --- a/platform/platform-api/src/com/intellij/ui/components/JBOptionButton.java +++ b/platform/platform-api/src/com/intellij/ui/components/JBOptionButton.java @@ -16,6 +16,8 @@ package com.intellij.ui.components; import com.intellij.icons.AllIcons; +import com.intellij.openapi.actionSystem.CustomShortcutSet; +import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.ui.GraphicsConfig; import com.intellij.openapi.ui.JBMenuItem; import com.intellij.openapi.ui.JBPopupMenu; @@ -31,6 +33,7 @@ import javax.swing.*; import javax.swing.event.PopupMenuEvent; import javax.swing.event.PopupMenuListener; import java.awt.*; +import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.util.HashSet; import java.util.Set; @@ -54,6 +57,8 @@ public class JBOptionButton extends JButton implements Weighted { myOptions = options; applyOptions(); + + installShowPopupShortcut(); } @Override @@ -179,6 +184,11 @@ public class JBOptionButton extends JButton implements Weighted { repaint(); } + private void installShowPopupShortcut() { + DumbAwareAction.create(e -> showPopup(null, true)) + .registerCustomShortcutSet(new CustomShortcutSet(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0)), this); + } + private void applyOptions() { myPopup = fillMenu(); } @@ -187,7 +197,6 @@ public class JBOptionButton extends JButton implements Weighted { return myOptions == null || myOptions.length == 0; } - private JPopupMenu fillMenu() { final JPopupMenu result = new JBPopupMenu(); if (isSimpleButton()) {