Test6526631.java revision 2362
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne/*
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley *
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne * This code is free software; you can redistribute it and/or modify it
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley * under the terms of the GNU General Public License version 2 only, as
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley * published by the Free Software Foundation.
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne *
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley * This code is distributed in the hope that it will be useful, but WITHOUT
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley * version 2 for more details (a copy is included in the LICENSE file that
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne * accompanied this code).
90929d4c6b284dd318f4a78c2aa407afb7423747oliver.bradley *
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne * You should have received a copy of the GNU General Public License version
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne * 2 along with this work; if not, write to the Free Software Foundation,
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0e2f85c75c270eec9d148bab17911441d8843a2aJake Feasel *
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne * or visit www.oracle.com if you need additional information or have any
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne * questions.
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne */
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne/*
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne * @test
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne * @bug 6526631
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne * @summary Resizes right-oriented scroll pane
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne * @author Sergey Malenkov
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne * @library ..
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne */
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browneimport java.awt.ComponentOrientation;
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browneimport java.awt.Dimension;
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browneimport javax.swing.JFrame;
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browneimport javax.swing.JScrollBar;
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browneimport javax.swing.JScrollPane;
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browneimport javax.swing.JTextArea;
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browneimport javax.swing.JViewport;
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne
67c044a145fa1987d77d3f609876a839b0240ed0Jason Brownepublic class Test6526631 {
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne private static final int COLS = 90;
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne private static final int ROWS = 50;
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne private static final int OFFSET = 10;
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne public static void main(String[] args) throws Throwable {
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne SwingTest.start(Test6526631.class);
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne }
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne private final JScrollPane pane;
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne private final JFrame frame;
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne public Test6526631(JFrame frame) {
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne this.pane = new JScrollPane(new JTextArea(ROWS, COLS));
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne this.pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne this.frame = frame;
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne this.frame.add(this.pane);
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne }
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne private void update(int offset) {
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne Dimension size = this.frame.getSize();
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne size.width += offset;
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne this.frame.setSize(size);
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne }
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne public void validateFirst() {
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne validateThird();
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne update(OFFSET);
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne }
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne public void validateSecond() {
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne validateThird();
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne update(-OFFSET);
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne }
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne public void validateThird() {
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne JViewport viewport = this.pane.getViewport();
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne JScrollBar scroller = this.pane.getHorizontalScrollBar();
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne if (!scroller.getComponentOrientation().equals(ComponentOrientation.RIGHT_TO_LEFT)) {
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne throw new Error("unexpected component orientation");
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne }
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne int value = scroller.getValue();
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne if (value != 0) {
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne throw new Error("unexpected scroll value");
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne }
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne int extent = viewport.getExtentSize().width;
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne if (extent != scroller.getVisibleAmount()) {
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne throw new Error("unexpected visible amount");
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne }
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne int size = viewport.getViewSize().width;
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne if (size != scroller.getMaximum()) {
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne throw new Error("unexpected maximum");
433f48af5998e03a03440dce699c9dcfd7b86375Jason Browne }
67c044a145fa1987d77d3f609876a839b0240ed0Jason Browne int pos = size - extent - value;
if (pos != viewport.getViewPosition().x) {
throw new Error("unexpected position");
}
}
}