Package javax.swing.plaf.basic

Source Code of javax.swing.plaf.basic.BasicSplitPaneUITest

/*
*  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.
*/
package javax.swing.plaf.basic;

import java.awt.Canvas;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.Rectangle;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JSplitPane;
import javax.swing.JViewport;
import javax.swing.SwingTestCase;

public class BasicSplitPaneUITest extends SwingTestCase {
    private JSplitPane splitPane;

    private BasicSplitPaneUI ui;

    @Override
    protected void setUp() throws Exception {
        splitPane = new JSplitPane();
        ui = new BasicSplitPaneUI();
        splitPane.setUI(ui);
        splitPane.setSize(new Dimension(2000, 1000));
    }

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

    public void testPreferredLayoutSize() throws Exception {
        splitPane.setBorder(BorderFactory.createEmptyBorder(5, 6, 7, 8));
        ui.layoutManager.layoutContainer(splitPane);
        int width = splitPane.getInsets().left + splitPane.getInsets().right
                + ui.layoutManager.components[0].getPreferredSize().width
                + ui.layoutManager.components[1].getPreferredSize().width
                + ui.layoutManager.components[2].getPreferredSize().width;
        int height = splitPane.getInsets().top + splitPane.getInsets().bottom
                + ui.layoutManager.components[0].getPreferredSize().height;
        assertEquals(new Dimension(width, height), ui.layoutManager
                .preferredLayoutSize(splitPane));
        splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
        width = splitPane.getInsets().left + splitPane.getInsets().right
                + ui.layoutManager.components[1].getPreferredSize().width;
        height = splitPane.getInsets().top + splitPane.getInsets().bottom
                + ui.layoutManager.components[0].getPreferredSize().height
                + ui.layoutManager.components[1].getPreferredSize().height
                + ui.layoutManager.components[2].getPreferredSize().height;
        assertEquals(new Dimension(width, height), ui.layoutManager
                .preferredLayoutSize(splitPane));
    }

    public void testMinLayoutSize() throws Exception {
        splitPane.setBorder(BorderFactory.createEmptyBorder(5, 6, 7, 8));
        ui.layoutManager.layoutContainer(splitPane);
        int width = splitPane.getInsets().left + splitPane.getInsets().right
                + ui.layoutManager.components[0].getMinimumSize().width
                + ui.layoutManager.components[1].getMinimumSize().width
                + ui.layoutManager.components[2].getMinimumSize().width;
        int height = splitPane.getInsets().top + splitPane.getInsets().bottom
                + ui.layoutManager.components[0].getMinimumSize().height;
        assertEquals(new Dimension(width, height), ui.layoutManager
                .minimumLayoutSize(splitPane));
        splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
        width = splitPane.getInsets().left + splitPane.getInsets().right
                + ui.layoutManager.components[1].getMinimumSize().width;
        height = splitPane.getInsets().top + splitPane.getInsets().bottom
                + ui.layoutManager.components[0].getMinimumSize().height
                + ui.layoutManager.components[1].getMinimumSize().height
                + ui.layoutManager.components[2].getMinimumSize().height;
        assertEquals(new Dimension(width, height), ui.layoutManager
                .minimumLayoutSize(splitPane));
    }

    public void testCreateUI() throws Exception {
        assertNotNull(BasicSplitPaneUI.createUI(splitPane));
        assertFalse(BasicSplitPaneUI.createUI(splitPane) == BasicSplitPaneUI
                .createUI(splitPane));
    }

    public void testCreatePropertyHandler() throws Exception {
        assertNotNull(ui.createPropertyChangeListener());
        if (isHarmony()) {
            assertFalse(ui.createPropertyChangeListener() == ui.createPropertyChangeListener());
        }
    }

    public void testCreateFocusHandler() throws Exception {
        assertNotNull(ui.createFocusListener());
        if (isHarmony()) {
            assertFalse(ui.createFocusListener() == ui.createFocusListener());
        }
    }

    public void testSetOrientation() throws Exception {
        propertyChangeController = new PropertyChangeController();
        splitPane.addPropertyChangeListener(propertyChangeController);
        ui = (BasicSplitPaneUI) splitPane.getUI();
        assertEquals(JSplitPane.HORIZONTAL_SPLIT, splitPane.getOrientation());
        assertEquals(JSplitPane.HORIZONTAL_SPLIT, ui.getOrientation());
        ui.setOrientation(JSplitPane.VERTICAL_SPLIT);
        assertEquals(JSplitPane.VERTICAL_SPLIT, ui.getOrientation());
        assertFalse(JSplitPane.VERTICAL_SPLIT == splitPane.getOrientation());
        ui.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
        propertyChangeController.reset();
        splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
        assertTrue(propertyChangeController.isChanged("orientation"));
        assertEquals(JSplitPane.VERTICAL_SPLIT, ui.getOrientation());
        assertEquals(JSplitPane.VERTICAL_SPLIT, splitPane.getOrientation());
    }

    public void testSetContinuousLayout() throws Exception {
        propertyChangeController = new PropertyChangeController();
        splitPane.addPropertyChangeListener(propertyChangeController);
        assertFalse(splitPane.isContinuousLayout());
        assertFalse(ui.isContinuousLayout());
        ui.setContinuousLayout(true);
        assertTrue(ui.isContinuousLayout());
        assertFalse(splitPane.isContinuousLayout());
        ui.setContinuousLayout(false);
        assertFalse(ui.isContinuousLayout());
        assertFalse(splitPane.isContinuousLayout());
        propertyChangeController.reset();
        splitPane.setContinuousLayout(true);
        assertTrue(propertyChangeController.isChanged("continuousLayout"));
        assertTrue(ui.isContinuousLayout());
        assertTrue(splitPane.isContinuousLayout());
    }

    public void testSetLastDragLocation() throws Exception {
        assertEquals(-1, ui.getLastDragLocation());
        ui.setLastDragLocation(40);
        assertEquals(40, ui.getLastDragLocation());
    }

    // Regression for HARMONY-2771
    public void testGetLastDragLocation() throws Exception {
        assertEquals(0, new BasicSplitPaneUI().getLastDragLocation());
    }

    public void testGetDivider() throws Exception {
        assertNotNull(ui.getDivider());
        assertNull(new BasicSplitPaneUI().getDivider());
    }

    public void testGetSplitPane() throws Exception {
        assertNotNull(ui.getSplitPane());
        assertTrue(splitPane == ui.getSplitPane());
        assertNull(new BasicSplitPaneUI().getSplitPane());
    }

    public void testCreateDefaultNonContinuousLayoutDivider() throws Exception {
        assertTrue(ui.createDefaultNonContinuousLayoutDivider() instanceof Canvas);
    }

    public void testCreateDefaultDivider() throws Exception {
        assertNotNull(ui.createDefaultDivider());
    }

    public void testSetNonContinuousLayoutDivider() throws Exception {
        Component component = new Component() {
            private static final long serialVersionUID = 1L;
        };
        ui.setNonContinuousLayoutDivider(component);
        assertTrue(component == ui.getNonContinuousLayoutDivider());
        assertFalse(ui.layoutManager.components[0] == component);
        assertFalse(ui.layoutManager.components[1] == component);
        assertFalse(ui.layoutManager.components[2] == component);
        assertTrue(ui.nonContinuousLayoutDivider == component);
    }

    public void testAddComponentToLayout() throws Exception {
        assertEquals(3, ui.layoutManager.components.length);
        JViewport viewport = new JViewport();
        ui.layoutManager.addLayoutComponent(JSplitPane.BOTTOM, viewport);
        assertFalse(ui.layoutManager.components[0] == viewport);
        assertTrue(ui.layoutManager.components[1] == viewport);
        assertFalse(ui.layoutManager.components[2] == viewport);
        ui.layoutManager.addLayoutComponent(JSplitPane.BOTTOM, new JButton());
        assertFalse(ui.layoutManager.components[1] == viewport);
        ui.layoutManager.addLayoutComponent(JSplitPane.RIGHT, viewport);
        assertFalse(ui.layoutManager.components[0] == viewport);
        assertTrue(ui.layoutManager.components[1] == viewport);
        assertFalse(ui.layoutManager.components[2] == viewport);
        ui.layoutManager.addLayoutComponent(JSplitPane.BOTTOM, new JButton());
        ui.layoutManager.addLayoutComponent(JSplitPane.TOP, viewport);
        assertTrue(ui.layoutManager.components[0] == viewport);
        assertFalse(ui.layoutManager.components[1] == viewport);
        assertFalse(ui.layoutManager.components[2] == viewport);
        ui.layoutManager.addLayoutComponent(JSplitPane.TOP, new JButton());
        assertFalse(ui.layoutManager.components[0] == viewport);
        ui.layoutManager.addLayoutComponent(JSplitPane.LEFT, viewport);
        assertTrue(ui.layoutManager.components[0] == viewport);
        assertFalse(ui.layoutManager.components[1] == viewport);
        assertFalse(ui.layoutManager.components[2] == viewport);
        ui.layoutManager.removeLayoutComponent(new JButton());
        assertNotNull(ui.layoutManager.components[0]);
        assertNotNull(ui.layoutManager.components[1]);
        assertNotNull(ui.layoutManager.components[2]);
        ui.layoutManager.removeLayoutComponent(ui.layoutManager.components[2]);
        assertNotNull(ui.layoutManager.components[0]);
        assertNotNull(ui.layoutManager.components[1]);
        assertNull(ui.layoutManager.components[2]);
        ui.layoutManager.removeLayoutComponent(ui.layoutManager.components[1]);
        assertNotNull(ui.layoutManager.components[0]);
        assertNull(ui.layoutManager.components[1]);
        assertNull(ui.layoutManager.components[2]);
        ui.layoutManager.removeLayoutComponent(ui.layoutManager.components[0]);
        assertNull(ui.layoutManager.components[0]);
        assertNull(ui.layoutManager.components[1]);
        assertNull(ui.layoutManager.components[2]);
        try {
            ui.layoutManager.addLayoutComponent("a", viewport);
            fail("IllegalArgumentException should be thrown");
        } catch (IllegalArgumentException e) {
        }
    }

    public void testGetComponentPreferredSize() throws Exception {
        assertEquals(ui.layoutManager.components[0].getPreferredSize().width, ui.layoutManager
                .getPreferredSizeOfComponent(ui.layoutManager.components[0]));
        splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
        assertEquals(ui.layoutManager.components[0].getPreferredSize().height, ui.layoutManager
                .getPreferredSizeOfComponent(ui.layoutManager.components[0]));
    }

    public void testGetComponentSize() throws Exception {
        ui.layoutManager.layoutContainer(splitPane);
        assertEquals(ui.layoutManager.components[0].getSize().width, ui.layoutManager
                .getSizeOfComponent(ui.layoutManager.components[0]));
        splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
        assertEquals(ui.layoutManager.components[0].getSize().height, ui.layoutManager
                .getSizeOfComponent(ui.layoutManager.components[0]));
    }

    public void testGetAvailableSize() throws Exception {
        splitPane.setSize(1000, 2000);
        splitPane.setBorder(BorderFactory.createEmptyBorder(5, 10, 15, 20));
        assertEquals(splitPane.getSize().width - 10 - 20, ui.layoutManager.getAvailableSize(
                splitPane.getSize(), splitPane.getInsets()));
        splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
        assertEquals(splitPane.getSize().height - 5 - 15, ui.layoutManager.getAvailableSize(
                splitPane.getSize(), splitPane.getInsets()));
    }

    public void testResetPreferredSizes() throws Exception {
        if (isHarmony()) {
            assertEquals(0, ui.getDividerLocation(splitPane));
            ui.resetToPreferredSizes(splitPane);
            assertEquals(splitPane.getLeftComponent().getPreferredSize().width, ui
                    .getDividerLocation(splitPane));
        }
    }

    public void testMinMaxDividerLocation() throws Exception {
        splitPane.setBorder(BorderFactory.createEmptyBorder(5, 10, 15, 20));
        assertEquals(splitPane.getLeftComponent().getPreferredSize().width
                + splitPane.getInsets().left, ui.getMinimumDividerLocation(splitPane));
        assertEquals(splitPane.getWidth() - splitPane.getDividerSize()
                - splitPane.getRightComponent().getMinimumSize().width
                - splitPane.getInsets().right, ui.getMaximumDividerLocation(splitPane));
    }

    public void testSetDividerLocation() throws Exception {
        ui.setDividerLocation(splitPane, 230);
        assertEquals(-1, splitPane.getDividerLocation());
        assertEquals(0, ui.getDividerLocation(splitPane));
        splitPane.setDividerLocation(20);
        assertEquals(20, splitPane.getDividerLocation());
        assertEquals(0, ui.getDividerLocation(splitPane));
        ui.layoutManager.layoutContainer(splitPane);
        assertEquals(20, ui.getDividerLocation(splitPane));
    }

    public void testGetDividerLocation() throws Exception {
        try { // Regression test for HARMONY-2661
            ui.getDividerLocation(null);
            fail("NullPointerException should have been thrown");
        } catch (NullPointerException e) {
            // Expected
        }
    }

    public void testInitialLocation() throws Exception {
        splitPane.setSize(1000, 2000);
        splitPane.setBorder(BorderFactory.createEmptyBorder(5, 10, 15, 20));
        assertEquals(splitPane.getInsets().left, ui.layoutManager.getInitialLocation(splitPane
                .getInsets()));
        splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
        assertEquals(splitPane.getInsets().top, ui.layoutManager.getInitialLocation(splitPane
                .getInsets()));
    }

    public void testUpdateComponents() throws Exception {
        ui.layoutManager.components[0] = null;
        ui.layoutManager.components[1] = null;
        ui.layoutManager.components[2] = null;
        ui.layoutManager.updateComponents();
        assertEquals(splitPane.getLeftComponent(), ui.layoutManager.components[0]);
        assertEquals(splitPane.getRightComponent(), ui.layoutManager.components[1]);
        assertEquals(ui.getDivider(), ui.layoutManager.components[2]);
    }

    public void testSetComponentToSize() throws Exception {
        JButton b = new JButton();
        b.setSize(new Dimension(20, 30));
        int size = 5;
        int location = 15;
        int cW = 50;
        int cH = 40;
        Insets insets = new Insets(1, 2, 3, 4);
        ui.layoutManager.setComponentToSize(b, size, location, insets, new Dimension(cW, cH));
        assertEquals(
                new Rectangle(location, insets.top, size, cH - insets.top - insets.bottom), b
                        .getBounds());
        splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
        ui.layoutManager.setComponentToSize(b, size, location, insets, new Dimension(cW, cH));
        assertEquals(
                new Rectangle(insets.left, location, cW - insets.left - insets.right, size), b
                        .getBounds());
    }

    public void testGetSizes() { // Regression test for HARMONY-2767
        ui = new BasicSplitPaneUI();
        JComponent component = new JComponent() {};
        assertEquals(new Dimension(0, 0), ui.getPreferredSize(component));
        assertEquals(new Dimension(0, 0), ui.getPreferredSize(null));
        assertEquals(new Dimension(0, 0), ui.getMinimumSize(component));
        assertEquals(new Dimension(0, 0), ui.getMinimumSize(null));
        assertEquals(new Dimension(0, 0), ui.getMaximumSize(component));
        assertEquals(new Dimension(0, 0), ui.getMaximumSize(null));
    }
}
TOP

Related Classes of javax.swing.plaf.basic.BasicSplitPaneUITest

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.