From 24aecfcc60151dcd7086f10ec65fb8dbfbde3ae6 Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Wed, 25 May 2016 22:24:32 +0300 Subject: [PATCH] IDEA-156624 Unable to assign mouse wheel shortcut --- .../intellij/openapi/keymap/KeymapUtil.java | 10 +++-- .../keymap/impl/ui/MouseShortcutDialog.java | 17 +++----- .../keymap/impl/ui/MouseShortcutPanel.java | 39 +++++++------------ .../impl/ui/ShortcutFilteringPanel.java | 17 +------- 4 files changed, 28 insertions(+), 55 deletions(-) diff --git a/platform/platform-api/src/com/intellij/openapi/keymap/KeymapUtil.java b/platform/platform-api/src/com/intellij/openapi/keymap/KeymapUtil.java index d855498133e0..4f7cf9ca0c85 100644 --- a/platform/platform-api/src/com/intellij/openapi/keymap/KeymapUtil.java +++ b/platform/platform-api/src/com/intellij/openapi/keymap/KeymapUtil.java @@ -76,12 +76,9 @@ public class KeymapUtil { if (!acceleratorText.isEmpty()) { s += ", " + acceleratorText; } - } else if (shortcut instanceof PressureShortcut) { - s += shortcut.toString(); } else if (shortcut instanceof MouseShortcut) { - MouseShortcut mouseShortcut = (MouseShortcut)shortcut; - s = getMouseShortcutText(mouseShortcut.getButton(), mouseShortcut.getModifiers(), mouseShortcut.getClickCount()); + s = getMouseShortcutText((MouseShortcut)shortcut); } else if (shortcut instanceof KeyboardModifierGestureShortcut) { final KeyboardModifierGestureShortcut gestureShortcut = (KeyboardModifierGestureShortcut)shortcut; @@ -106,6 +103,11 @@ public class KeymapUtil { } } + public static String getMouseShortcutText(@NotNull MouseShortcut shortcut) { + if (shortcut instanceof PressureShortcut) return shortcut.toString(); + return getMouseShortcutText(shortcut.getButton(), shortcut.getModifiers(), shortcut.getClickCount()); + } + /** * @param button target mouse button * @param modifiers modifiers used within the target click diff --git a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/MouseShortcutDialog.java b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/MouseShortcutDialog.java index cbd488c6eea1..9c8dbb6d7ace 100644 --- a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/MouseShortcutDialog.java +++ b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/MouseShortcutDialog.java @@ -17,17 +17,19 @@ package com.intellij.openapi.keymap.impl.ui; import com.intellij.icons.AllIcons; import com.intellij.openapi.actionSystem.MouseShortcut; -import com.intellij.openapi.actionSystem.PressureShortcut; import com.intellij.openapi.keymap.KeyMapBundle; import com.intellij.openapi.keymap.Keymap; import com.intellij.openapi.keymap.KeymapUtil; import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UIUtil; -import javax.swing.*; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Component; import java.util.Arrays; import java.util.Collection; +import javax.swing.BorderFactory; +import javax.swing.JLabel; +import javax.swing.SwingConstants; /** * @author Vladimir Kondratyev @@ -66,16 +68,9 @@ final class MouseShortcutDialog extends ShortcutDialog { myText.setForeground(MouseShortcutPanel.FOREGROUND); myText.setText(KeyMapBundle.message("dialog.mouse.pad.default.text")); } - else if (shortcut instanceof PressureShortcut) { - myText.setForeground(UIUtil.getLabelForeground()); - myText.setText(KeyMapBundle.message("dialog.mouse.pad.shortcut.text", shortcut.toString())); - } else { myText.setForeground(UIUtil.getLabelForeground()); - myText.setText(KeyMapBundle.message("dialog.mouse.pad.shortcut.text", KeymapUtil.getMouseShortcutText( - shortcut.getButton(), - shortcut.getModifiers(), - shortcut.getClickCount()))); + myText.setText(KeyMapBundle.message("dialog.mouse.pad.shortcut.text", KeymapUtil.getMouseShortcutText(shortcut))); } } diff --git a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/MouseShortcutPanel.java b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/MouseShortcutPanel.java index 9562d96338d4..25d3efa6ee41 100644 --- a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/MouseShortcutPanel.java +++ b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/MouseShortcutPanel.java @@ -16,14 +16,12 @@ package com.intellij.openapi.keymap.impl.ui; import com.intellij.openapi.actionSystem.MouseShortcut; -import com.intellij.openapi.actionSystem.PressureShortcut; -import com.intellij.openapi.actionSystem.Shortcut; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.registry.Registry; import com.intellij.ui.JBColor; import com.intellij.ui.mac.MacGestureSupportForMouseShortcutPanel; -import java.awt.*; +import java.awt.BorderLayout; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseWheelEvent; @@ -37,34 +35,33 @@ public final class MouseShortcutPanel extends ShortcutPanel { static final JBColor BORDER = new JBColor(0xDEDEDE, 0x383B3D); private final int myClickCount; - private boolean myPressureTouch = false; private MouseShortcut myMouseShortcut = null; private final MouseAdapter myMouseListener = new MouseAdapter() { @Override public void mouseWheelMoved(MouseWheelEvent event) { - mousePressed(event); + setShortcutIfNeeded(toMouseShortcut(event)); } @Override public void mousePressed(MouseEvent event) { - myPressureTouch = false; + myMouseShortcut = toMouseShortcut(event); + } + + private MouseShortcut toMouseShortcut(MouseEvent event) { int button = MouseShortcut.getButton(event); int clickCount = event instanceof MouseWheelEvent ? 1 : event.getClickCount(); if (0 <= button && clickCount <= myClickCount) { int modifiers = event.getModifiersEx(); - myMouseShortcut = new MouseShortcut(button, modifiers, clickCount); + return new MouseShortcut(button, modifiers, clickCount); } + return null; } @Override public void mouseReleased(MouseEvent event) { event.consume(); - - if (myPressureTouch) { - return; - } - setShortcut(myMouseShortcut); + setShortcutIfNeeded(myMouseShortcut); } }; @@ -74,28 +71,20 @@ public final class MouseShortcutPanel extends ShortcutPanel { addMouseListener(myMouseListener); addMouseWheelListener(myMouseListener); if (SystemInfo.isJavaVersionAtLeast("1.8") && SystemInfo.isMacIntel64 && SystemInfo.isJetbrainsJvm && Registry.is("ide.mac.forceTouch")) { - new MacGestureSupportForMouseShortcutPanel(this, new Runnable() { - @Override - public void run() { - myPressureTouch = true; - } - }); + new MacGestureSupportForMouseShortcutPanel(this, () -> myMouseShortcut = null); } setBackground(BACKGROUND); setOpaque(true); } - void setShortcut(MouseShortcut shortcut) { - Shortcut old = getShortcut(); + public void setShortcut(MouseShortcut shortcut) { + MouseShortcut old = getShortcut(); if (old != null || shortcut != null) { super.setShortcut(shortcut); } } - public void setShortcut(PressureShortcut shortcut) { - Shortcut old = getShortcut(); - if (old != null || shortcut != null) { - super.setShortcut(shortcut); - } + private void setShortcutIfNeeded(MouseShortcut shortcut) { + if (shortcut != null) setShortcut(shortcut); } } diff --git a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/ShortcutFilteringPanel.java b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/ShortcutFilteringPanel.java index e0f54b377d1c..e2e446792f25 100644 --- a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/ShortcutFilteringPanel.java +++ b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/ShortcutFilteringPanel.java @@ -19,7 +19,6 @@ import com.intellij.icons.AllIcons; import com.intellij.ide.IdeEventQueue; import com.intellij.openapi.actionSystem.KeyboardShortcut; import com.intellij.openapi.actionSystem.MouseShortcut; -import com.intellij.openapi.actionSystem.PressureShortcut; import com.intellij.openapi.actionSystem.Shortcut; import com.intellij.openapi.keymap.KeyMapBundle; import com.intellij.openapi.keymap.KeymapUtil; @@ -68,27 +67,15 @@ final class ShortcutFilteringPanel extends JPanel { if (ShortcutFilteringPanel.this == event.getSource()) { if (value instanceof KeyboardShortcut) { KeyboardShortcut shortcut = (KeyboardShortcut)value; - myMousePanel.setShortcut((MouseShortcut)null); + myMousePanel.setShortcut(null); myKeyboardPanel.setShortcut(shortcut); if (null != shortcut.getSecondKeyStroke()) { myKeyboardPanel.mySecondStrokeEnable.setSelected(true); } } - else if (value instanceof PressureShortcut) { - String text = "Power Touch"; - MouseShortcut shortcut = (PressureShortcut)value; - myMousePanel.setShortcut(shortcut); - myKeyboardPanel.setShortcut(null); - myKeyboardPanel.myFirstStroke.setText(text); - myKeyboardPanel.mySecondStroke.setText(null); - myKeyboardPanel.mySecondStroke.setEnabled(false); - } else { MouseShortcut shortcut = value instanceof MouseShortcut ? (MouseShortcut)value : null; - String text = shortcut == null ? null : KeymapUtil.getMouseShortcutText( - shortcut.getButton(), - shortcut.getModifiers(), - shortcut.getClickCount()); + String text = shortcut == null ? null : KeymapUtil.getMouseShortcutText(shortcut); myMousePanel.setShortcut(shortcut); myKeyboardPanel.setShortcut(null); myKeyboardPanel.myFirstStroke.setText(text);