Package javax.swing.plaf.basic

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

/*
*  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 Alexander T. Simbirtsev
* @version $Revision$
* Created on 16.02.2005

*/
package javax.swing.plaf.basic;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.image.BufferedImage;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.InputMap;
import javax.swing.JButton;
import javax.swing.KeyStroke;
import javax.swing.SwingTestCase;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.plaf.BorderUIResource;
import javax.swing.plaf.ColorUIResource;
import javax.swing.plaf.FontUIResource;
import javax.swing.plaf.InputMapUIResource;

public class BasicButtonUITest extends SwingTestCase {
    protected BasicButtonUI ui;

    protected InputMap uiInputMap;

    Border previousBorder;

    @Override
    protected void setUp() throws Exception {
        super.setUp();
        ui = new BasicButtonUI();
        previousBorder = UIManager.getBorder("Button.border");
        uiInputMap = new InputMapUIResource();
        uiInputMap.put(KeyStroke.getKeyStroke("SPACE"), "pressed");
        uiInputMap.put(KeyStroke.getKeyStroke("released SPACE"), "released");
        uiInputMap.put(KeyStroke.getKeyStroke("ENTER"), "pressed");
        uiInputMap.put(KeyStroke.getKeyStroke("released ENTER"), "released");
    }

    @Override
    protected void tearDown() throws Exception {
        UIManager.put("Button.border", previousBorder);
        super.tearDown();
    }

    public void testGetPreferredSize() {
        Font font = new FontUIResource(new Font("serif", Font.PLAIN, 24));
        UIManager.put("Button.font", font);
        JButton button1 = new JButton();
        JButton button2 = new JButton("text");
        JButton button3 = new JButton("text");
        JButton button4 = new JButton();
        JButton button5 = new JButton("text");
        JButton button6 = new JButton("text");
        button3.setBorder(new EmptyBorder(10, 10, 10, 10));
        button6.setBorder(null);
        button4.setIcon(new ImageIcon(new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB)));
        button5.setIcon(new ImageIcon(new BufferedImage(30, 30, BufferedImage.TYPE_INT_ARGB)));
        int horInsets = button1.getInsets().left + button1.getInsets().right;
        int vertInsets = button1.getInsets().top + button1.getInsets().bottom;
        int textWidth = button1.getFontMetrics(button1.getFont()).stringWidth("text");
        int textHeight = button1.getFontMetrics(button1.getFont()).getHeight();
        assertEquals("PreferredSize", new Dimension(horInsets, vertInsets), ui
                .getPreferredSize(button1));
        assertEquals("PreferredSize", new Dimension(horInsets + textWidth, vertInsets
                + textHeight), ui.getPreferredSize(button2));
        assertEquals("PreferredSize", new Dimension(horInsets
                + button4.getIcon().getIconWidth(), vertInsets
                + button4.getIcon().getIconHeight()), ui.getPreferredSize(button4));
        int height = vertInsets + Math.max(button5.getIcon().getIconHeight(), textHeight);
        int width = horInsets + textWidth + button5.getIcon().getIconWidth()
                + button5.getIconTextGap();
        assertEquals("PreferredSize", new Dimension(width, height), ui
                .getPreferredSize(button5));
        horInsets = button3.getInsets().left + button3.getInsets().right;
        vertInsets = button3.getInsets().top + button3.getInsets().bottom;
        assertEquals("PreferredSize", new Dimension(horInsets + textWidth, vertInsets
                + textHeight), ui.getPreferredSize(button3));
        horInsets = button6.getInsets().left + button6.getInsets().right;
        vertInsets = button6.getInsets().top + button6.getInsets().bottom;
        assertEquals("PreferredSize", new Dimension(horInsets + textWidth, vertInsets
                + textHeight), ui.getPreferredSize(button6));
    }

    public void testGetMinimumSize() {
        Font font = new FontUIResource(new Font("serif", Font.PLAIN, 24));
        UIManager.put("Button.font", font);
        JButton button1 = new JButton();
        JButton button2 = new JButton("text");
        JButton button3 = new JButton("text");
        JButton button4 = new JButton();
        JButton button5 = new JButton("text");
        button3.setBorder(new EmptyBorder(10, 10, 10, 10));
        button4.setIcon(new ImageIcon(new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB)));
        button5.setIcon(new ImageIcon(new BufferedImage(30, 30, BufferedImage.TYPE_INT_ARGB)));
        int horInsets = button1.getInsets().left + button1.getInsets().right;
        int vertInsets = button1.getInsets().top + button1.getInsets().bottom;
        int textWidth = button1.getFontMetrics(button1.getFont()).stringWidth("text");
        int textHeight = button1.getFontMetrics(button1.getFont()).getHeight();
        assertEquals("MinimumSize", new Dimension(horInsets, vertInsets), ui
                .getMinimumSize(button1));
        assertEquals("MinimumSize", new Dimension(horInsets + textWidth, vertInsets
                + textHeight), ui.getMinimumSize(button2));
        assertEquals("MinimumSize", new Dimension(horInsets + button4.getIcon().getIconWidth(),
                vertInsets + button4.getIcon().getIconHeight()), ui.getMinimumSize(button4));
        int height = vertInsets + Math.max(button5.getIcon().getIconHeight(), textHeight);
        int width = horInsets + textWidth + button5.getIcon().getIconWidth()
                + button5.getIconTextGap();
        assertEquals("MinimumSize", new Dimension(width, height), ui.getMinimumSize(button5));
        horInsets = button3.getInsets().left + button3.getInsets().right;
        vertInsets = button3.getInsets().top + button3.getInsets().bottom;
        assertEquals("MinimumSize", new Dimension(horInsets + textWidth, vertInsets
                + textHeight), ui.getMinimumSize(button3));
    }

    public void testGetMaximumSize() {
        Font font = new FontUIResource(new Font("serif", Font.PLAIN, 24));
        UIManager.put("Button.font", font);
        JButton button1 = new JButton();
        JButton button2 = new JButton("text");
        JButton button3 = new JButton("text");
        JButton button4 = new JButton();
        JButton button5 = new JButton("text");
        button3.setBorder(new EmptyBorder(10, 10, 10, 10));
        button4.setIcon(new ImageIcon(new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB)));
        button5.setIcon(new ImageIcon(new BufferedImage(30, 30, BufferedImage.TYPE_INT_ARGB)));
        int horInsets = button1.getInsets().left + button1.getInsets().right;
        int vertInsets = button1.getInsets().top + button1.getInsets().bottom;
        int textWidth = button1.getFontMetrics(button1.getFont()).stringWidth("text");
        int textHeight = button1.getFontMetrics(button1.getFont()).getHeight();
        assertEquals("MaximumSize", new Dimension(horInsets, vertInsets), ui
                .getMaximumSize(button1));
        assertEquals("MaximumSize", new Dimension(horInsets + textWidth, vertInsets
                + textHeight), ui.getMaximumSize(button2));
        assertEquals("MaximumSize", new Dimension(horInsets + button4.getIcon().getIconWidth(),
                vertInsets + button4.getIcon().getIconHeight()), ui.getMaximumSize(button4));
        int height = vertInsets + Math.max(button5.getIcon().getIconHeight(), textHeight);
        int width = horInsets + textWidth + button5.getIcon().getIconWidth()
                + button5.getIconTextGap();
        assertEquals("MaximumSize", new Dimension(width, height), ui.getMaximumSize(button5));
        horInsets = button3.getInsets().left + button3.getInsets().right;
        vertInsets = button3.getInsets().top + button3.getInsets().bottom;
        assertEquals("MaximumSize", new Dimension(horInsets + textWidth, vertInsets
                + textHeight), ui.getMaximumSize(button3));
    }

    /**
     * uninstallUI() and installUI() are being tested here
     */
    public void testInstallUninstallUI() {
        UIManager.put("Button.focusInputMap", uiInputMap);
        JButton button = new JButton();
        button.setUI(ui);
        assertTrue(
                "there is one property listener",
                button.getPropertyChangeListeners().length == 1
                        && button.getPropertyChangeListeners()[0] instanceof BasicButtonListener);
        assertTrue("there is border", button.getBorder() != null);
        assertTrue("there is one change listener", button.getChangeListeners().length == 1
                && button.getChangeListeners()[0] instanceof BasicButtonListener);
        assertEquals(4, button.getRegisteredKeyStrokes().length);
        ui.uninstallUI(button);
        assertTrue("there are no property listeners",
                button.getPropertyChangeListeners().length == 0);
        assertNull("there ain't no border", button.getBorder());
        assertTrue("there are no change listeners", button.getChangeListeners().length == 0);
        assertTrue("no RegisteredKeyStrokes installed",
                button.getRegisteredKeyStrokes().length == 0);
        assertTrue("opaque", button.isOpaque());
        button.setOpaque(false);
        ui.installUI(button);
        assertTrue(
                "there is one property listener",
                button.getPropertyChangeListeners().length == 1
                        && button.getPropertyChangeListeners()[0] instanceof BasicButtonListener);
        assertTrue("there is border", button.getBorder() != null);
        assertTrue("there is one change listener", button.getChangeListeners().length == 1
                && button.getChangeListeners()[0] instanceof BasicButtonListener);
        assertEquals(4, button.getRegisteredKeyStrokes().length);
        if (isHarmony()) {
            assertFalse(button.isOpaque());
        }
    }

    public void testInstallUninstallUI2() {
        JButton button = new JButton();
        BasicButtonUI buttonUI = new BasicButtonUI();
        assertTrue("opaque", button.isOpaque());
        UIManager.put("Button.background", new ColorUIResource(Color.red));
        UIManager.put("Button.foreground", new ColorUIResource(Color.yellow));
        Font font = new FontUIResource(button.getFont().deriveFont(100f));
        UIManager.put("Button.font", font);
        Border border2 = new BorderUIResource(BorderFactory.createEmptyBorder());
        UIManager.put("Button.border", border2);
        button.setOpaque(false);
        UIManager.put("Button.textIconGap", new Integer(100));
        button.setUI(buttonUI);
        assertEquals(Color.red, button.getBackground());
        assertEquals(Color.yellow, button.getForeground());
        assertEquals(border2, button.getBorder());
        assertEquals(font, button.getFont());
        if (isHarmony()) {
            assertFalse(button.isOpaque());
        }
        Border border1 = BorderFactory.createEmptyBorder();
        button.setBorder(border1);
        button.setUI(buttonUI);
        buttonUI.installUI(button);
        assertEquals(border1, button.getBorder());
        buttonUI.uninstallUI(button);
        if (isHarmony()) {
            assertNull(button.getBackground());
            assertNull(button.getForeground());
        }
        assertNotNull(button.getBorder());
        UIManager.put("Button.background", Color.red);
        button.setUI(buttonUI);
        buttonUI.uninstallUI(button);
        if (!isHarmony()) {
            assertEquals(Color.red, button.getBackground());
            assertNotNull(button.getForeground());
        } else {
            assertNull(button.getBackground());
            assertNull(button.getForeground());
        }
        assertEquals(border1, button.getBorder());
    }

    public void testCreateUI() {
        assertNotNull("created UI is not null", BasicButtonUI.createUI(new JButton()));
        assertTrue("created UI is of the proper class",
                BasicButtonUI.createUI(null) instanceof BasicButtonUI);
        assertSame("created UI is of unique", BasicButtonUI.createUI(null), BasicButtonUI
                .createUI(null));
    }

    public void testCreateButtonListener() {
        JButton button1 = new JButton();
        JButton button2 = new JButton();
        BasicButtonListener res1 = ui.createButtonListener(button1);
        BasicButtonListener res2 = ui.createButtonListener(button2);
        BasicButtonListener res3 = ui.createButtonListener(button2);
        assertNotNull("listener created", res1);
        assertNotNull("listener created", res2);
        assertNotNull("listener created", res3);
        assertTrue("created listeners are unique", res2 != res1);
        assertTrue("created listeners are unique", res2 != res3);
    }

    /**
     * uninstallListeners() and installListeners() are being tested here
     */
    public void testInstallUninstallListeners() {
        JButton button = new JButton();
        button.setUI(ui);
        ui.uninstallListeners(button);
        assertEquals("PropertyChangeListeners", 0, button.getPropertyChangeListeners().length);
        assertEquals("ChangeListeners", 0, button.getChangeListeners().length);
        ui.installListeners(button);
        assertEquals("PropertyChangeListeners", 1, button.getPropertyChangeListeners().length);
        assertEquals("ChangeListeners", 1, button.getChangeListeners().length);
        assertTrue("listeners", button.getPropertyChangeListeners()[0].equals(button
                .getChangeListeners()[0]));
        ui.uninstallListeners(button);
        assertEquals("PropertyChangeListeners", 0, button.getPropertyChangeListeners().length);
        assertEquals("ChangeListeners", 0, button.getChangeListeners().length);
    }

    boolean findKeyStroke(final KeyStroke[] strokes, final KeyStroke stroke) {
        for (int i = 0; i < strokes.length; i++) {
            if (strokes[i].equals(stroke)) {
                return true;
            }
        }
        return false;
    }

    /**
     * uninstallKeyboardActions() and installKeyboardActions() are being tested here
     */
    public void testInstallUninstallKeyboardActions() {
        JButton button = new JButton();
        button.setUI(ui);
        UIManager.put("Button.focusInputMap", uiInputMap);
        ui.uninstallKeyboardActions(button);
        assertEquals("RegisteredKeyStrokes", 0, button.getRegisteredKeyStrokes().length);
        ui.installKeyboardActions(button);
        assertEquals("RegisteredKeyStrokes", 4, button.getRegisteredKeyStrokes().length);
        ui.uninstallKeyboardActions(button);
        assertEquals("RegisteredKeyStrokes", 0, button.getRegisteredKeyStrokes().length);
    }

    /**
     * uninstallDefaults() and installDefaults() are being tested here
     */
    public void testInstallUninstallDefaults() {
        JButton button = new JButton();
        button.setUI(ui);
        ui.uninstallDefaults(button);
        assertNull("border", button.getBorder());
        if (!isHarmony()) {
            assertNotNull("font", button.getFont());
            assertNotNull("margin", button.getFont());
        } else {
            assertNull("font", button.getFont());
            assertNull("margin", button.getFont());
        }
        UIManager.put("Button.textIconGap", new Integer(100));
        UIManager.put("Button.textShiftOffset", new Integer(1000));
        button.setOpaque(false);
        ui.installDefaults(button);
        assertNotNull(button.getBorder());
        if (isHarmony()) {
            assertFalse(button.isOpaque());
        }
        assertEquals(100, ui.getDefaultTextIconGap(button));
        assertTrue(100 != button.getIconTextGap());
        assertEquals(1000, ui.defaultTextShiftOffset);
        Border border = new EmptyBorder(1, 1, 1, 1);
        button.setBorder(border);
        ui.uninstallDefaults(button);
        assertEquals("border ", border, button.getBorder());
    }

    public void testGetDefaultTextIconGap() {
        JButton button = new JButton("text");
        assertEquals("DefaultTextIconGap", 0, ui.getDefaultTextIconGap(button));
        assertEquals("DefaultTextIconGap", 0, ui.getDefaultTextIconGap(null));
    }

    public void testGetPropertyPrefix() {
        assertEquals("prefix", "Button.", ui.getPropertyPrefix());
    }

    /**
     * The test verifies that getTextShiftOffset methods returns
     * Button.textShiftOffset property if the setTextShiftOffset method is
     * called and returns 0 if the clearTextShiftOffset method is called
     */
    @SuppressWarnings( { "boxing", "nls" })
    public void testTextShiftOffest() {

        int oldTextShiftOffset = UIManager.getInt("Button.textShiftOffset");

        UIManager.put("Button.textShiftOffset", 5);

        BasicButtonUI currentUI = new BasicButtonUI();
        currentUI.installUI(new JButton());

        assertEquals(currentUI.getTextShiftOffset(), 0);
        currentUI.setTextShiftOffset();
        assertEquals(currentUI.getTextShiftOffset(), 5);
        currentUI.clearTextShiftOffset();
        assertEquals(currentUI.getTextShiftOffset(), 0);

        UIManager.put("Button.textShiftOffset", oldTextShiftOffset);
    }
}
TOP

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

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.