4632N/A/*
4632N/A * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
4632N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4632N/A *
4632N/A * This code is free software; you can redistribute it and/or modify it
4632N/A * under the terms of the GNU General Public License version 2 only, as
4632N/A * published by the Free Software Foundation. Oracle designates this
4632N/A * particular file as subject to the "Classpath" exception as provided
4632N/A * by Oracle in the LICENSE file that accompanied this code.
4632N/A *
4632N/A * This code is distributed in the hope that it will be useful, but WITHOUT
4632N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4632N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
4632N/A * version 2 for more details (a copy is included in the LICENSE file that
4632N/A * accompanied this code).
4632N/A *
4632N/A * You should have received a copy of the GNU General Public License version
4632N/A * 2 along with this work; if not, write to the Free Software Foundation,
4632N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
4632N/A *
4632N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
4632N/A * or visit www.oracle.com if you need additional information or have any
4632N/A * questions.
4632N/A */
4632N/A
4632N/Apackage com.apple.laf;
4632N/A
4632N/Aimport java.awt.event.*;
4632N/A
4632N/Aimport javax.swing.*;
4632N/Aimport javax.swing.plaf.ComponentUI;
4632N/A
4632N/Apublic class AquaScrollPaneUI extends javax.swing.plaf.basic.BasicScrollPaneUI {
4632N/A public static ComponentUI createUI(final JComponent x) {
4632N/A return new AquaScrollPaneUI();
4632N/A }
4632N/A
4632N/A protected MouseWheelListener createMouseWheelListener() {
4632N/A return new XYMouseWheelHandler();
4632N/A }
4632N/A
4632N/A // This is a grody hack to trick BasicScrollPaneUI into scrolling horizontally
4632N/A // when we notice that the shift key is down. This should be removed when AWT/Swing
4632N/A // becomes aware of of multi-axis scroll wheels.
4632N/A protected class XYMouseWheelHandler extends javax.swing.plaf.basic.BasicScrollPaneUI.MouseWheelHandler {
4632N/A public void mouseWheelMoved(final MouseWheelEvent e) {
4632N/A JScrollBar vScrollBar = null;
4632N/A boolean wasVisible = false;
4632N/A
4632N/A if (e.isShiftDown()) {
4632N/A vScrollBar = scrollpane.getVerticalScrollBar();
4632N/A if (vScrollBar != null) {
4632N/A wasVisible = vScrollBar.isVisible();
4632N/A vScrollBar.setVisible(false);
4632N/A }
4632N/A }
4632N/A
4632N/A super.mouseWheelMoved(e);
4632N/A
4632N/A if (wasVisible) {
4632N/A vScrollBar.setVisible(true);
4632N/A }
4795N/A
4795N/A // Consume the event even when the scrollBar is invisible
4795N/A // see #7124320
4795N/A e.consume();
4632N/A }
4632N/A }
4632N/A}