/* * $Id$ * * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle, * Santa Clara, California 95054, U.S.A. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ package org.jdesktop.swingx; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.awt.image.BufferedImageOp; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingConstants; import org.jdesktop.swingx.image.FastBlurFilter; import org.jdesktop.swingx.painter.MattePainter; import org.jdesktop.swingx.painter.Painter; import org.jdesktop.swingx.util.PaintUtils; /** * Visual tests of JXButton issues. * @author rah003 * */ @SuppressWarnings("nls") public class JXButtonVisualCheck extends InteractiveTestCase { /** * Test for issue #761. */ public void interactiveButton() { final JFrame f = new JFrame(); JPanel control = new JPanel(); JButton b = new JButton("Start"); control.add(b); f.add(control, BorderLayout.SOUTH); f.setPreferredSize(new Dimension(400, 400)); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.pack(); f.setVisible(true); } /** * Test for issue 849 */ public void interactiveActionButton() { AbstractAction action = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { //do nothing } }; action.putValue(Action.NAME, "My Action"); action.setEnabled(true); final JFrame f = new JFrame(); f.setSize(300, 200); JPanel jContentPane = new JPanel(); jContentPane.setLayout(new BorderLayout()); jContentPane.add(new JButton(action), BorderLayout.WEST); // Generated jContentPane.add(new JXButton(action), BorderLayout.EAST); f.setContentPane(jContentPane); f.setTitle("JFrame"); f.setVisible(true); } /** * SwingX Issue 1158 */ public void interactiveStatusBarCheck() { final JXButton button = new JXButton("Sample"); MattePainter p = new MattePainter(PaintUtils.BLUE_EXPERIENCE, true); button.setForegroundPainter(p); BufferedImage im; try { im = ImageIO.read(JXButton.class.getResource("plaf/basic/resources/error16.png")); } catch (IOException ignore) { System.out.println(ignore); im = null; } button.setIcon(new ImageIcon(im)); JXFrame frame = wrapInFrame(button, "Painter testing"); frame.setStatusBar(new JXStatusBar()); show(frame); } public void interactiveForegroundCheck() { final JXButton button = new JXButton("Sample"); // MattePainter p = new MattePainter(PaintUtils.AERITH, true); final MattePainter p = new MattePainter(PaintUtils.BLUE_EXPERIENCE, true); p.setFilters(new FastBlurFilter()); button.setForegroundPainter(p); button.addActionListener(new ActionListener(){ private String[] values = new String[] {"Hello", "Goodbye", "SwingLabs", "Turkey Bowl"}; private int index = 1; @Override public void actionPerformed(ActionEvent ae) { button.setText(values[index]); index++; if (index >= values.length) { index = 0; } } }); BufferedImage im; try { im = ImageIO.read(JXButton.class.getResource("plaf/basic/resources/error16.png")); } catch (IOException ignore) { System.out.println(ignore); im = null; } button.setIcon(new ImageIcon(im)); button.addMouseListener(new MouseAdapter() { /** * {@inheritDoc} */ @Override public void mouseEntered(MouseEvent e) { p.setFilters((BufferedImageOp[]) null); } /** * {@inheritDoc} */ @Override public void mouseExited(MouseEvent e) { p.setFilters(new FastBlurFilter()); } }); showInFrame(button, "Painter testing"); } public void interactiveBackgroundCheck() { final JXButton button = new JXButton("Sample"); MattePainter p = new MattePainter(PaintUtils.AERITH, true); button.setBackgroundPainter(p); button.addActionListener(new ActionListener(){ private String[] values = new String[] {"Hello", "Goodbye", "SwingLabs", "Turkey Bowl"}; private int index = 1; @Override public void actionPerformed(ActionEvent ae) { button.setText(values[index]); index++; if (index >= values.length) { index = 0; } } }); BufferedImage im; try { im = ImageIO.read(JXButton.class.getResource("plaf/basic/resources/error16.png")); } catch (IOException ignore) { System.out.println(ignore); im = null; } button.setIcon(new ImageIcon(im)); showInFrame(button, "Painter testing"); } /** * SWINGX-1449: Ensure that the font displays correctly when the background or background painter is set. */ public void interactiveFontAndBackgroundCheck() { Font font = Font.decode("Arial-BOLDITALIC-14"); Color background = Color.LIGHT_GRAY; Painter<?> backgroundPainter = new MattePainter(background); JButton button1 = new JButton("Default"); JButton button2 = new JButton("Font changed"); button2.setFont(font); JButton button3 = new JButton("Background changed"); button3.setBackground(background); JButton button4 = new JButton("Background changed"); button4.setBackground(background); // button4.setBackgroundPainter(backgroundPainter); JButton button5 = new JButton("Font and Background changed"); button5.setFont(font); button5.setBackground(background); JButton button6 = new JButton("Font and Background changed"); button6.setFont(font); button6.setBackground(background); // button6.setBackgroundPainter(backgroundPainter); JXButton xbutton1 = new JXButton("Default"); JXButton xbutton2 = new JXButton("Font changed"); xbutton2.setFont(font); JXButton xbutton3 = new JXButton("Background changed"); xbutton3.setBackground(background); JXButton xbutton4 = new JXButton("BackgroundPainter changed"); xbutton4.setBackgroundPainter(backgroundPainter); JXButton xbutton5 = new JXButton("Font and Background changed"); xbutton5.setFont(font); xbutton5.setBackground(background); JXButton xbutton6 = new JXButton("Font and BackgroundPainter changed"); xbutton6.setFont(font); xbutton6.setBackgroundPainter(backgroundPainter); JPanel panel = new JPanel(new GridLayout(7, 2, 1, 1)); panel.add(new JXLabel(JButton.class.getSimpleName(), SwingConstants.CENTER)); panel.add(new JXLabel(JXButton.class.getSimpleName(), SwingConstants.CENTER)); panel.add(button1); panel.add(xbutton1); panel.add(button2); panel.add(xbutton2); panel.add(button3); panel.add(xbutton3); panel.add(button4); panel.add(xbutton4); panel.add(button5); panel.add(xbutton5); panel.add(button6); panel.add(xbutton6); showInFrame(panel, "Font and Background Check"); } /** * @param args */ public static void main(String[] args) { JXButtonVisualCheck test = new JXButtonVisualCheck(); try { test.runInteractiveTests("interactiveFontAndBackgroundCheck"); } catch (Exception e) { System.err.println("exception when executing interactive tests:"); e.printStackTrace(); } } /** * do nothing test - keep the testrunner happy. */ public void testDummy() { } }