27 |
27 |
28 import java.awt.event.*; |
28 import java.awt.event.*; |
29 |
29 |
30 import javax.swing.*; |
30 import javax.swing.*; |
31 import javax.swing.plaf.ComponentUI; |
31 import javax.swing.plaf.ComponentUI; |
|
32 import javax.swing.plaf.basic.BasicScrollPaneUI; |
32 |
33 |
33 public class AquaScrollPaneUI extends javax.swing.plaf.basic.BasicScrollPaneUI { |
34 public class AquaScrollPaneUI extends javax.swing.plaf.basic.BasicScrollPaneUI { |
34 public static ComponentUI createUI(final JComponent x) { |
35 public static ComponentUI createUI(final JComponent x) { |
35 return new AquaScrollPaneUI(); |
36 return new AquaScrollPaneUI(); |
36 } |
37 } |
37 |
38 |
38 protected MouseWheelListener createMouseWheelListener() { |
39 protected MouseWheelListener createMouseWheelListener() { |
39 return new XYMouseWheelHandler(); |
40 return new XYMouseWheelHandler(); |
40 } |
41 } |
41 |
42 |
42 // This is a grody hack to trick BasicScrollPaneUI into scrolling horizontally |
43 protected class XYMouseWheelHandler extends BasicScrollPaneUI.MouseWheelHandler { |
43 // when we notice that the shift key is down. This should be removed when AWT/Swing |
|
44 // becomes aware of multi-axis scroll wheels. |
|
45 protected class XYMouseWheelHandler extends javax.swing.plaf.basic.BasicScrollPaneUI.MouseWheelHandler { |
|
46 public void mouseWheelMoved(final MouseWheelEvent e) { |
44 public void mouseWheelMoved(final MouseWheelEvent e) { |
47 JScrollBar vScrollBar = null; |
|
48 boolean wasVisible = false; |
|
49 |
|
50 if (e.isShiftDown()) { |
|
51 vScrollBar = scrollpane.getVerticalScrollBar(); |
|
52 if (vScrollBar != null) { |
|
53 wasVisible = vScrollBar.isVisible(); |
|
54 vScrollBar.setVisible(false); |
|
55 } |
|
56 } |
|
57 |
|
58 super.mouseWheelMoved(e); |
45 super.mouseWheelMoved(e); |
59 |
|
60 if (wasVisible) { |
|
61 vScrollBar.setVisible(true); |
|
62 } |
|
63 |
|
64 // Consume the event even when the scrollBar is invisible |
46 // Consume the event even when the scrollBar is invisible |
65 // see #7124320 |
47 // see #7124320 |
66 e.consume(); |
48 e.consume(); |
67 } |
49 } |
68 } |
50 } |