jdk/src/java.desktop/macosx/classes/com/apple/laf/AquaScrollPaneUI.java
changeset 29880 665cb957c3d0
parent 28059 e576535359cc
equal deleted inserted replaced
29736:83a76fe84763 29880:665cb957c3d0
    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     }