Package javax.swing

Source Code of javax.swing.JScrollPaneTest$TestLayout

/*
*  Licensed to the Apache Software Foundation (ASF) under one or more
*  contributor license agreements.  See the NOTICE file distributed with
*  this work for additional information regarding copyright ownership.
*  The ASF licenses this file to You 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.
*/
/**
* @author Anton Avtamonov, Sergey Burlak
*/
package javax.swing;

import java.awt.Adjustable;
import java.awt.Component;
import java.awt.ComponentOrientation;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.LayoutManager;
import java.awt.Rectangle;
import javax.swing.border.Border;
import javax.swing.plaf.ScrollPaneUI;
import javax.swing.plaf.basic.BasicScrollPaneUI;

public class JScrollPaneTest extends SwingTestCase {
    private JScrollPane pane;

    public JScrollPaneTest(final String name) {
        super(name);
    }

    @Override
    protected void setUp() throws Exception {
        pane = new JScrollPane();
        propertyChangeController = new PropertyChangeController();
        pane.addPropertyChangeListener(propertyChangeController);
    }

    @Override
    protected void tearDown() throws Exception {
        pane = null;
    }

    public void testJScrollPane() throws Exception {
        assertEquals(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
                pane.verticalScrollBarPolicy);
        assertEquals(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED,
                pane.horizontalScrollBarPolicy);
        assertNotNull(pane.viewport);
        assertNull(pane.viewport.getView());
        assertTrue(pane.verticalScrollBar instanceof JScrollPane.ScrollBar);
        assertEquals(Adjustable.VERTICAL, pane.verticalScrollBar.getOrientation());
        assertTrue(pane.horizontalScrollBar instanceof JScrollPane.ScrollBar);
        assertEquals(Adjustable.HORIZONTAL, pane.horizontalScrollBar.getOrientation());
        assertNull(pane.rowHeader);
        assertNull(pane.columnHeader);
        assertNull(pane.lowerLeft);
        assertNull(pane.lowerRight);
        assertNull(pane.upperLeft);
        assertNull(pane.upperRight);
        assertEquals(3, pane.getComponentCount());
        assertEquals(pane.viewport, pane.getComponent(0));
        assertEquals(pane.verticalScrollBar, pane.getComponent(1));
        assertEquals(pane.horizontalScrollBar, pane.getComponent(2));
        Component view = new JButton();
        pane = new JScrollPane(view, ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER,
                ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
        assertEquals(view, pane.viewport.getView());
        assertEquals(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER, pane.verticalScrollBarPolicy);
        assertEquals(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS,
                pane.horizontalScrollBarPolicy);
        view = new JButton();
        pane = new JScrollPane(view);
        assertEquals(view, pane.viewport.getView());
        assertEquals(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
                pane.verticalScrollBarPolicy);
        assertEquals(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED,
                pane.horizontalScrollBarPolicy);
        pane = new JScrollPane(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
                ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        assertNull(pane.viewport.getView());
        assertEquals(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
                pane.verticalScrollBarPolicy);
        assertEquals(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER,
                pane.horizontalScrollBarPolicy);
        testExceptionalCase(new IllegalArgumentCase() {
            @Override
            public void exceptionalAction() throws Exception {
                new JScrollPane(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS,
                        ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
            }
        });
        testExceptionalCase(new IllegalArgumentCase() {
            @Override
            public void exceptionalAction() throws Exception {
                new JScrollPane(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
                        ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
            }
        });
    }

    public void testGetSetUpdateUI() throws Exception {
        assertNotNull(pane.getUI());
        ScrollPaneUI ui = new BasicScrollPaneUI();
        pane.setUI(ui);
        assertEquals(ui, pane.getUI());
        pane.updateUI();
        assertNotSame(ui, pane.getUI());
    }

    public void testGetUICalssID() throws Exception {
        assertEquals("ScrollPaneUI", pane.getUIClassID());
    }

    public void testSetLayout() throws Exception {
        assertTrue(pane.getLayout() instanceof ScrollPaneLayout);
        TestLayout layout = new TestLayout();
        pane.setLayout(layout);
        assertEquals(layout, pane.getLayout());
        assertEquals(pane, layout.getSyncScrollPane());
        pane.setLayout(null);
        testExceptionalCase(new ExceptionalCase() {
            @Override
            public void exceptionalAction() throws Exception {
                pane.setLayout(new LayoutManager() {
                    public void addLayoutComponent(final String name, final Component comp) {
                    }

                    public void layoutContainer(final Container parent) {
                    }

                    public Dimension minimumLayoutSize(final Container parent) {
                        return null;
                    }

                    public Dimension preferredLayoutSize(final Container parent) {
                        return null;
                    }

                    public void removeLayoutComponent(final Component comp) {
                    }
                });
            }

            @Override
            public Class<ClassCastException> expectedExceptionClass() {
                return ClassCastException.class;
            }
        });
    }

    public void testIsValidRoot() throws Exception {
        assertTrue(pane.isValidateRoot());
    }

    public void testGetSetVerticalScrollBarPolicy() throws Exception {
        assertEquals(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, pane
                .getVerticalScrollBarPolicy());
        pane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        assertTrue(propertyChangeController.isChanged("verticalScrollBarPolicy"));
        assertEquals(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, pane
                .getVerticalScrollBarPolicy());
        pane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
        assertEquals(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER, pane
                .getVerticalScrollBarPolicy());
        testExceptionalCase(new IllegalArgumentCase() {
            @Override
            public void exceptionalAction() throws Exception {
                pane.setVerticalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
            }
        });
    }

    public void testGetSetHorizontalScrollBarPolicy() throws Exception {
        assertEquals(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED, pane
                .getHorizontalScrollBarPolicy());
        pane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
        assertTrue(propertyChangeController.isChanged("horizontalScrollBarPolicy"));
        assertEquals(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS, pane
                .getHorizontalScrollBarPolicy());
        pane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        assertEquals(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER, pane
                .getHorizontalScrollBarPolicy());
        testExceptionalCase(new IllegalArgumentCase() {
            @Override
            public void exceptionalAction() throws Exception {
                pane.setHorizontalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
            }
        });
    }

    public void testGetSetViewportBorder() throws Exception {
        assertNull(pane.getViewportBorder());
        Border border = BorderFactory.createEmptyBorder();
        pane.setViewportBorder(border);
        assertEquals(border, pane.getViewportBorder());
        assertTrue(propertyChangeController.isChanged("viewportBorder"));
    }

    public void testGetViewportBorderBounds() throws Exception {
        pane.setBorder(BorderFactory.createEmptyBorder(5, 10, 15, 20));
        pane.setBounds(200, 200, 40, 60);
        assertEquals(new Rectangle(10, 5, 40 - 10 - 20, 60 - 5 - 15), pane
                .getViewportBorderBounds());
        pane.setColumnHeader(new JViewport());
        pane.getColumnHeader().setBounds(10, 20, 20, 50);
        assertEquals(new Rectangle(10, 5 + 50, 40 - 10 - 20, 60 - 5 - 15 - 50), pane
                .getViewportBorderBounds());
        pane.setRowHeader(new JViewport());
        pane.getRowHeader().setBounds(10, 20, 20, 30);
        assertEquals(new Rectangle(10 + 20, 5 + 50, 40 - 10 - 20 - 20, 60 - 5 - 15 - 50), pane
                .getViewportBorderBounds());
        pane.getVerticalScrollBar().setBounds(20, 10, 30, 10);
        assertEquals(new Rectangle(10 + 20, 5 + 50, 40 - 10 - 20 - 20 - 30, 60 - 5 - 15 - 50),
                pane.getViewportBorderBounds());
        pane.getHorizontalScrollBar().setBounds(20, 10, 30, 50);
        assertEquals(new Rectangle(10 + 20, 5 + 50, 40 - 10 - 20 - 20 - 30, 60 - 5 - 15 - 50
                - 50), pane.getViewportBorderBounds());
    }

    public void testCreateHorizontalScrollBar() throws Exception {
        JScrollBar scrollBar = pane.createHorizontalScrollBar();
        assertTrue(scrollBar instanceof JScrollPane.ScrollBar);
        assertEquals(Adjustable.HORIZONTAL, scrollBar.getOrientation());
    }

    public void testCreateVerticalScrollBar() throws Exception {
        JScrollBar scrollBar = pane.createVerticalScrollBar();
        assertTrue(scrollBar instanceof JScrollPane.ScrollBar);
        assertEquals(Adjustable.VERTICAL, scrollBar.getOrientation());
    }

    public void testGetSetHorizontalScrollBar() throws Exception {
        assertTrue(pane.getHorizontalScrollBar() instanceof JScrollPane.ScrollBar);
        JScrollBar sb = new JScrollBar(Adjustable.VERTICAL);
        pane.setHorizontalScrollBar(sb);
        assertEquals(sb, pane.getHorizontalScrollBar());
        assertTrue(propertyChangeController.isChanged("horizontalScrollBar"));
        assertEquals(Adjustable.VERTICAL, sb.getOrientation());
    }

    public void testGetSetVerticalScrollBar() throws Exception {
        assertTrue(pane.getVerticalScrollBar() instanceof JScrollPane.ScrollBar);
        JScrollBar sb = new JScrollBar(Adjustable.HORIZONTAL);
        pane.setVerticalScrollBar(sb);
        assertEquals(sb, pane.getVerticalScrollBar());
        assertTrue(propertyChangeController.isChanged("verticalScrollBar"));
        assertEquals(Adjustable.HORIZONTAL, sb.getOrientation());
    }

    public void testCreateViewport() throws Exception {
        assertNull(pane.createViewport().getView());
    }

    public void testGetSetViewport() throws Exception {
        assertNotNull(pane.getViewport());
        JViewport viewport = new JViewport();
        pane.setViewport(viewport);
        assertEquals(viewport, pane.getViewport());
        assertEquals(3, pane.getComponentCount());
        assertEquals(viewport, pane.getComponent(2));
        JViewport newViewport = new JViewport();
        pane.setViewport(newViewport);
        assertEquals(newViewport, pane.getViewport());
        assertEquals(3, pane.getComponentCount());
        assertEquals(newViewport, pane.getComponent(2));
        assertTrue(propertyChangeController.isChanged("viewport"));
        pane.setViewport(null);
        assertNull(pane.getViewport());
        assertEquals(2, pane.getComponentCount());
        assertTrue(propertyChangeController.isChanged("viewport"));
        propertyChangeController.reset();
        pane.setViewport(null);
        assertNull(pane.getViewport());
        assertEquals(2, pane.getComponentCount());
        assertTrue(propertyChangeController.isChanged("viewport"));
        propertyChangeController.reset();
        pane.setViewport(newViewport);
        assertEquals(3, pane.getComponentCount());
        assertTrue(propertyChangeController.isChanged("viewport"));
        pane.remove(newViewport);
        propertyChangeController.reset();
        pane.setViewport(newViewport);
        assertEquals(3, pane.getComponentCount());
        assertFalse(propertyChangeController.isChanged("viewport"));
    }

    public void testSetViewportView() throws Exception {
        assertNull(pane.getViewport().getView());
        Component c = new JButton();
        pane.setViewportView(c);
        assertEquals(c, pane.getViewport().getView());
        pane.setViewport(null);
        pane.setViewportView(c);
        assertEquals(c, pane.getViewport().getView());
        assertTrue(propertyChangeController.isChanged("viewport"));
    }

    public void testGetSetRowHeader() throws Exception {
        assertNull(pane.getRowHeader());
        JViewport rowHeader = new JViewport();
        pane.setRowHeader(rowHeader);
        assertEquals(rowHeader, pane.getRowHeader());
        assertTrue(propertyChangeController.isChanged("rowHeader"));
        assertEquals(4, pane.getComponentCount());
        assertEquals(rowHeader, pane.getComponent(3));
        JViewport newRowHeader = new JViewport();
        pane.setRowHeader(newRowHeader);
        assertEquals(newRowHeader, pane.getRowHeader());
        assertEquals(4, pane.getComponentCount());
        assertEquals(newRowHeader, pane.getComponent(3));
        pane.setRowHeader(null);
        assertNull(pane.getRowHeader());
        assertEquals(3, pane.getComponentCount());
    }

    public void testSetRowHeaderView() throws Exception {
        assertNull(pane.getRowHeader());
        Component c = new JButton();
        pane.setRowHeaderView(c);
        assertEquals(c, pane.getRowHeader().getView());
        assertTrue(propertyChangeController.isChanged("rowHeader"));
    }

    public void testGetSetColumnHeader() throws Exception {
        assertNull(pane.getColumnHeader());
        JViewport columnHeader = new JViewport();
        pane.setColumnHeader(columnHeader);
        assertEquals(columnHeader, pane.getColumnHeader());
        assertTrue(propertyChangeController.isChanged("columnHeader"));
        assertEquals(4, pane.getComponentCount());
        assertEquals(columnHeader, pane.getComponent(3));
        JViewport newColumnHeader = new JViewport();
        pane.setColumnHeader(newColumnHeader);
        assertEquals(newColumnHeader, pane.getColumnHeader());
        assertEquals(4, pane.getComponentCount());
        assertEquals(newColumnHeader, pane.getComponent(3));
        pane.setColumnHeader(null);
        assertNull(pane.getColumnHeader());
        assertEquals(3, pane.getComponentCount());
    }

    public void testSetColumnHeaderView() throws Exception {
        assertNull(pane.getColumnHeader());
        Component c = new JButton();
        pane.setColumnHeaderView(c);
        assertEquals(c, pane.getColumnHeader().getView());
        assertTrue(propertyChangeController.isChanged("columnHeader"));
    }

    public void testGetSetCorner() throws Exception {
        assertNull(pane.getCorner(ScrollPaneConstants.LOWER_LEFT_CORNER));
        assertNull(pane.getCorner(ScrollPaneConstants.LOWER_RIGHT_CORNER));
        assertNull(pane.getCorner(ScrollPaneConstants.UPPER_LEFT_CORNER));
        assertNull(pane.getCorner(ScrollPaneConstants.UPPER_RIGHT_CORNER));
        assertNull(pane.getCorner(ScrollPaneConstants.LOWER_LEADING_CORNER));
        assertNull(pane.getCorner(ScrollPaneConstants.LOWER_TRAILING_CORNER));
        assertNull(pane.getCorner(ScrollPaneConstants.UPPER_LEADING_CORNER));
        assertNull(pane.getCorner(ScrollPaneConstants.UPPER_TRAILING_CORNER));
        assertEquals(3, pane.getComponentCount());
        Component lowerLeft = new JButton();
        Component lowerRight = new JButton();
        Component upperLeft = new JButton();
        Component upperRight = new JButton();
        Component lowerLeading = new JButton();
        Component lowerTrailing = new JButton();
        Component upperLeading = new JButton();
        Component upperTrailing = new JButton();
        pane.setCorner(ScrollPaneConstants.LOWER_LEFT_CORNER, lowerLeft);
        assertTrue(propertyChangeController.isChanged(ScrollPaneConstants.LOWER_LEFT_CORNER));
        assertEquals(4, pane.getComponentCount());
        propertyChangeController.reset();
        pane.setCorner(ScrollPaneConstants.LOWER_RIGHT_CORNER, lowerRight);
        assertTrue(propertyChangeController.isChanged(ScrollPaneConstants.LOWER_RIGHT_CORNER));
        assertEquals(5, pane.getComponentCount());
        propertyChangeController.reset();
        pane.setCorner(ScrollPaneConstants.UPPER_LEFT_CORNER, upperLeft);
        assertTrue(propertyChangeController.isChanged(ScrollPaneConstants.UPPER_LEFT_CORNER));
        assertEquals(6, pane.getComponentCount());
        propertyChangeController.reset();
        pane.setCorner(ScrollPaneConstants.UPPER_RIGHT_CORNER, upperRight);
        assertTrue(propertyChangeController.isChanged(ScrollPaneConstants.UPPER_RIGHT_CORNER));
        assertEquals(7, pane.getComponentCount());
        assertEquals(lowerLeft, pane.getCorner(ScrollPaneConstants.LOWER_LEFT_CORNER));
        assertEquals(lowerRight, pane.getCorner(ScrollPaneConstants.LOWER_RIGHT_CORNER));
        assertEquals(upperLeft, pane.getCorner(ScrollPaneConstants.UPPER_LEFT_CORNER));
        assertEquals(upperRight, pane.getCorner(ScrollPaneConstants.UPPER_RIGHT_CORNER));
        propertyChangeController.reset();
        pane.setCorner(ScrollPaneConstants.LOWER_LEADING_CORNER, lowerLeading);
        assertTrue(propertyChangeController.isChanged(ScrollPaneConstants.LOWER_LEFT_CORNER));
        assertEquals(7, pane.getComponentCount());
        propertyChangeController.reset();
        pane.setCorner(ScrollPaneConstants.LOWER_TRAILING_CORNER, lowerTrailing);
        assertTrue(propertyChangeController.isChanged(ScrollPaneConstants.LOWER_RIGHT_CORNER));
        assertEquals(7, pane.getComponentCount());
        propertyChangeController.reset();
        pane.setCorner(ScrollPaneConstants.UPPER_LEADING_CORNER, upperLeading);
        assertTrue(propertyChangeController.isChanged(ScrollPaneConstants.UPPER_LEFT_CORNER));
        assertEquals(7, pane.getComponentCount());
        propertyChangeController.reset();
        pane.setCorner(ScrollPaneConstants.UPPER_TRAILING_CORNER, upperTrailing);
        assertTrue(propertyChangeController.isChanged(ScrollPaneConstants.UPPER_RIGHT_CORNER));
        assertEquals(7, pane.getComponentCount());
        assertEquals(lowerLeading, pane.getCorner(ScrollPaneConstants.LOWER_LEFT_CORNER));
        assertEquals(lowerTrailing, pane.getCorner(ScrollPaneConstants.LOWER_RIGHT_CORNER));
        assertEquals(upperLeading, pane.getCorner(ScrollPaneConstants.UPPER_LEFT_CORNER));
        assertEquals(upperTrailing, pane.getCorner(ScrollPaneConstants.UPPER_RIGHT_CORNER));
        testExceptionalCase(new IllegalArgumentCase() {
            @Override
            public void exceptionalAction() throws Exception {
                pane.setCorner("anything", null);
            }
        });
        pane.setCorner(ScrollPaneConstants.UPPER_RIGHT_CORNER, new JButton());
        assertEquals(7, pane.getComponentCount());
        pane.setCorner(ScrollPaneConstants.UPPER_RIGHT_CORNER, null);
        assertEquals(6, pane.getComponentCount());
        JButton b = new JButton();
        propertyChangeController.reset();
        pane.setCorner(ScrollPaneConstants.UPPER_RIGHT_CORNER, b);
        assertTrue(propertyChangeController.isChanged(ScrollPaneConstants.UPPER_RIGHT_CORNER));
        assertEquals(7, pane.getComponentCount());
        propertyChangeController.reset();
        pane.setCorner(ScrollPaneConstants.UPPER_RIGHT_CORNER, b);
        assertFalse(propertyChangeController.isChanged(ScrollPaneConstants.UPPER_RIGHT_CORNER));
        assertEquals(7, pane.getComponentCount());
        propertyChangeController.reset();
        pane.remove(6);
        pane.setCorner(ScrollPaneConstants.UPPER_RIGHT_CORNER, b);
        assertFalse(propertyChangeController.isChanged(ScrollPaneConstants.UPPER_RIGHT_CORNER));
        assertEquals(7, pane.getComponentCount());
    }

    public void testSetComponentOrientation() throws Exception {
        assertTrue(pane.getComponentOrientation().isLeftToRight());
        assertTrue(pane.getVerticalScrollBar().getComponentOrientation().isLeftToRight());
        assertTrue(pane.getHorizontalScrollBar().getComponentOrientation().isLeftToRight());
        pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
        assertFalse(pane.getComponentOrientation().isLeftToRight());
        assertFalse(pane.getVerticalScrollBar().getComponentOrientation().isLeftToRight());
        assertFalse(pane.getHorizontalScrollBar().getComponentOrientation().isLeftToRight());
    }

    public void testSetIsWhellScrollingEnabled() throws Exception {
        assertTrue(pane.isWheelScrollingEnabled());
        pane.setWheelScrollingEnabled(false);
        assertFalse(pane.isWheelScrollingEnabled());
        assertTrue(propertyChangeController.isChanged("wheelScrollingEnabled"));
    }

    public void testGetAccessibleContext() throws Exception {
        assertTrue(pane.getAccessibleContext() instanceof JScrollPane.AccessibleJScrollPane);
    }

    public void testIsOpaque() throws Exception {
        assertTrue(pane.isOpaque());
    }

    private class TestLayout extends ScrollPaneLayout {
        private static final long serialVersionUID = 1L;

        private JScrollPane syncScrollPane;

        @Override
        public void syncWithScrollPane(final JScrollPane sp) {
            super.syncWithScrollPane(sp);
            syncScrollPane = sp;
        }

        public JScrollPane getSyncScrollPane() {
            return syncScrollPane;
        }
    }
}
TOP

Related Classes of javax.swing.JScrollPaneTest$TestLayout

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.