From cf44aa6f56cac32be35e91062da8613b8c925848 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Wed, 10 Sep 2014 23:12:32 +0400 Subject: [PATCH] add isXXXMouseButton(Event) methods that treat META and ALT modifiers properly --- .../src/com/intellij/ui/table/JBTable.java | 2 +- .../com/intellij/ui/treeStructure/Tree.java | 9 ++-- .../intellij/ide/dnd/aware/DnDAwareTree.java | 3 +- .../openapi/editor/impl/EditorImpl.java | 7 +-- .../com/intellij/util/IJSwingUtilities.java | 3 +- .../intellij/util/ui/JBSwingUtilities.java | 53 +++++++++++++++++++ 6 files changed, 63 insertions(+), 14 deletions(-) create mode 100644 platform/util/src/com/intellij/util/ui/JBSwingUtilities.java diff --git a/platform/platform-api/src/com/intellij/ui/table/JBTable.java b/platform/platform-api/src/com/intellij/ui/table/JBTable.java index c1146be40aba..a65c209399bf 100644 --- a/platform/platform-api/src/com/intellij/ui/table/JBTable.java +++ b/platform/platform-api/src/com/intellij/ui/table/JBTable.java @@ -572,7 +572,7 @@ public class JBTable extends JTable implements ComponentWithEmptyText, Component private final class MyMouseListener extends MouseAdapter { @Override public void mousePressed(@NotNull final MouseEvent e) { - if (SwingUtilities.isRightMouseButton(e)) { + if (JBSwingUtilities.isRightMouseButton(e)) { final int[] selectedRows = getSelectedRows(); if (selectedRows.length < 2) { final int row = rowAtPoint(e.getPoint()); diff --git a/platform/platform-api/src/com/intellij/ui/treeStructure/Tree.java b/platform/platform-api/src/com/intellij/ui/treeStructure/Tree.java index 96fab545d3e7..30314135a543 100644 --- a/platform/platform-api/src/com/intellij/ui/treeStructure/Tree.java +++ b/platform/platform-api/src/com/intellij/ui/treeStructure/Tree.java @@ -25,10 +25,7 @@ import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.SystemInfo; import com.intellij.ui.*; import com.intellij.util.ReflectionUtil; -import com.intellij.util.ui.AsyncProcessIcon; -import com.intellij.util.ui.ComponentWithEmptyText; -import com.intellij.util.ui.StatusText; -import com.intellij.util.ui.UIUtil; +import com.intellij.util.ui.*; import com.intellij.util.ui.tree.WideSelectionTreeUI; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -674,8 +671,8 @@ public class Tree extends JTree implements ComponentWithEmptyText, ComponentWith private class MyMouseListener extends MouseAdapter { @Override public void mousePressed(MouseEvent mouseevent) { - if (!SwingUtilities.isLeftMouseButton(mouseevent) && - (SwingUtilities.isRightMouseButton(mouseevent) || SwingUtilities.isMiddleMouseButton(mouseevent))) { + if (!JBSwingUtilities.isLeftMouseButton(mouseevent) && + (JBSwingUtilities.isRightMouseButton(mouseevent) || JBSwingUtilities.isMiddleMouseButton(mouseevent))) { TreePath treepath = getPathForLocation(mouseevent.getX(), mouseevent.getY()); if (treepath != null) { if (getSelectionModel().getSelectionMode() != TreeSelectionModel.SINGLE_TREE_SELECTION) { diff --git a/platform/platform-impl/src/com/intellij/ide/dnd/aware/DnDAwareTree.java b/platform/platform-impl/src/com/intellij/ide/dnd/aware/DnDAwareTree.java index e871ff1872c2..7411c70e5984 100644 --- a/platform/platform-impl/src/com/intellij/ide/dnd/aware/DnDAwareTree.java +++ b/platform/platform-impl/src/com/intellij/ide/dnd/aware/DnDAwareTree.java @@ -19,6 +19,7 @@ import com.intellij.ide.dnd.DnDAware; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.SystemInfo; import com.intellij.ui.treeStructure.Tree; +import com.intellij.util.ui.JBSwingUtilities; import com.intellij.util.ui.UIUtil; import com.intellij.util.ui.tree.TreeUtil; import com.intellij.util.ui.tree.WideSelectionTreeUI; @@ -54,7 +55,7 @@ public class DnDAwareTree extends Tree implements DnDAware { @Override protected void processMouseMotionEvent(MouseEvent e) { - if (SystemInfo.isMac && SwingUtilities.isRightMouseButton(e) && e.getID() == MouseEvent.MOUSE_DRAGGED) return; + if (SystemInfo.isMac && JBSwingUtilities.isRightMouseButton(e) && e.getID() == MouseEvent.MOUSE_DRAGGED) return; super.processMouseMotionEvent(e); } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index 51f6ec4a8cdb..165429ce56df 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java @@ -81,10 +81,7 @@ import com.intellij.util.containers.ContainerUtilRt; import com.intellij.util.messages.MessageBusConnection; import com.intellij.util.text.CharArrayCharSequence; import com.intellij.util.text.CharArrayUtil; -import com.intellij.util.ui.ButtonlessScrollBarUI; -import com.intellij.util.ui.GraphicsUtil; -import com.intellij.util.ui.MacUIUtil; -import com.intellij.util.ui.UIUtil; +import com.intellij.util.ui.*; import com.intellij.util.ui.update.Activatable; import com.intellij.util.ui.update.UiNotifyConnector; import gnu.trove.TIntArrayList; @@ -4106,7 +4103,7 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi } private void processMouseDragged(@NotNull MouseEvent e) { - if (SwingUtilities.isRightMouseButton(e)) { + if (JBSwingUtilities.isRightMouseButton(e)) { return; } diff --git a/platform/platform-impl/src/com/intellij/util/IJSwingUtilities.java b/platform/platform-impl/src/com/intellij/util/IJSwingUtilities.java index 60c5f90c8b73..bd0efda42c48 100644 --- a/platform/platform-impl/src/com/intellij/util/IJSwingUtilities.java +++ b/platform/platform-impl/src/com/intellij/util/IJSwingUtilities.java @@ -22,6 +22,7 @@ import com.intellij.ui.EditorTextField; import com.intellij.ui.components.OrphanGuardian; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.FilteringIterator; +import com.intellij.util.ui.JBSwingUtilities; import com.intellij.util.ui.UIUtil; import gnu.trove.TIntStack; import org.jetbrains.annotations.NotNull; @@ -34,7 +35,7 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.Iterator; -public class IJSwingUtilities { +public class IJSwingUtilities extends JBSwingUtilities { public static void invoke(Runnable runnable) { if (ApplicationManager.getApplication().isDispatchThread()) { runnable.run(); diff --git a/platform/util/src/com/intellij/util/ui/JBSwingUtilities.java b/platform/util/src/com/intellij/util/ui/JBSwingUtilities.java new file mode 100644 index 000000000000..d48aa5fc4ad2 --- /dev/null +++ b/platform/util/src/com/intellij/util/ui/JBSwingUtilities.java @@ -0,0 +1,53 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.util.ui; + +import java.awt.event.InputEvent; +import java.awt.event.MouseEvent; + +/** + * @author gregsh + */ +public class JBSwingUtilities { + /** + * Replaces SwingUtilities#isLeftMouseButton() for consistency with other button-related methods + * + * @see javax.swing.SwingUtilities#isLeftMouseButton(java.awt.event.MouseEvent) + */ + public static boolean isLeftMouseButton(MouseEvent anEvent) { + return (anEvent.getModifiersEx() & InputEvent.BUTTON1_DOWN_MASK) > 0; + } + + /** + * Replaces SwingUtilities#isMiddleMouseButton() due to the fact that BUTTON2_MASK == Event.ALT_MASK + * + * @see javax.swing.SwingUtilities#isMiddleMouseButton(java.awt.event.MouseEvent) + * @see java.awt.event.InputEvent#BUTTON2_MASK + */ + public static boolean isMiddleMouseButton(MouseEvent anEvent) { + return (anEvent.getModifiersEx() & InputEvent.BUTTON2_DOWN_MASK) > 0; + } + + /** + * Replaces SwingUtilities#isRightMouseButton() due to the fact that BUTTON3_MASK == Event.META_MASK + * + * @see javax.swing.SwingUtilities#isRightMouseButton(java.awt.event.MouseEvent) + * @see java.awt.event.InputEvent#BUTTON3_MASK + */ + public static boolean isRightMouseButton(MouseEvent anEvent) { + return (anEvent.getModifiersEx() & InputEvent.BUTTON3_DOWN_MASK) > 0; + } +}