001: /*
002: * GeoTools - OpenSource mapping toolkit
003: * http://geotools.org
004: * (C) 2005-2006, Geotools Project Managment Committee (PMC)
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2.1 of the License, or (at your option) any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: */
016: package org.geotools.gui.swing;
017:
018: // J2SE dependencies
019: import java.util.Locale;
020: import java.awt.Component;
021: import java.awt.HeadlessException;
022: import javax.swing.JFrame;
023:
024: // JUnit dependencies
025: import junit.framework.Test;
026: import junit.framework.TestCase;
027:
028: // Geotools dependencies
029: import org.geotools.resources.Arguments;
030: import org.geotools.resources.Utilities;
031:
032: /**
033: * Base class for test on widgets. Widgets will be displayed only if the test is run
034: * from the main method. Otherwise (i.e. if run from Maven), widgets are invisibles.
035: *
036: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/extension/widgets-swing/src/test/java/org/geotools/gui/swing/TestBase.java $
037: * @version $Id: TestBase.java 20883 2006-08-07 13:48:09Z jgarnett $
038: * @author Martin Desruisseaux
039: */
040: public class TestBase extends TestCase {
041: /**
042: * Set to {@code true} if windows should be visible.
043: */
044: private static boolean display;
045:
046: /**
047: * The location of the next frame to show.
048: */
049: private static volatile int location = 60;
050:
051: /**
052: * Creates a new instance of {@code TestBase}.
053: */
054: public TestBase(final String name) {
055: super (name);
056: }
057:
058: /**
059: * Run the test case from the command line. This method should be invoked
060: * from the {@code main} method in subclasses.
061: */
062: protected static void main(String[] args, final Test suite) {
063: display = true;
064: final Arguments arguments = new Arguments(args);
065: args = arguments.getRemainingArguments(0);
066: Locale.setDefault(arguments.locale);
067: junit.textui.TestRunner.run(suite);
068: }
069:
070: /**
071: * Show a component in a frame. The component will be shown only if the test suite
072: * is executed from the {@link #main main} method.
073: *
074: * @param component The component to show.
075: */
076: protected static void show(final Component component) {
077: show(component, Utilities.getShortClassName(component));
078: }
079:
080: /**
081: * Show a component in a frame. The component will be shown only if the test suite
082: * is executed from the {@link #main main} method.
083: *
084: * @param component The component to show.
085: * @param title The window title.
086: */
087: protected static void show(final Component component,
088: final String title) {
089: if (display)
090: try {
091: final JFrame frame = new JFrame(title);
092: frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
093: frame.getContentPane().add(component);
094: frame.setLocation(location, location);
095: frame.pack();
096: frame.setVisible(true);
097: location += 30;
098: if (false)
099: try {
100: Thread.sleep(500);
101: } catch (InterruptedException exception) {
102: // Ignore
103: }
104: } catch (HeadlessException exception) {
105: // The test is running on a machine without display. Ignore.
106: }
107: }
108: }
|