001/*
002 *    GeoAPI - Java interfaces for OGC/ISO standards
003 *    http://www.geoapi.org
004 *
005 *    Copyright (C) 2011-2019 Open Geospatial Consortium, Inc.
006 *    All Rights Reserved. http://www.opengeospatial.org/ogc/legal
007 *
008 *    Permission to use, copy, and modify this software and its documentation, with
009 *    or without modification, for any purpose and without fee or royalty is hereby
010 *    granted, provided that you include the following on ALL copies of the software
011 *    and documentation or portions thereof, including modifications, that you make:
012 *
013 *    1. The full text of this NOTICE in a location viewable to users of the
014 *       redistributed or derivative work.
015 *    2. Notice of any changes or modifications to the OGC files, including the
016 *       date changes were made.
017 *
018 *    THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE
019 *    NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
020 *    TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT
021 *    THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY
022 *    PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
023 *
024 *    COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
025 *    CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
026 *
027 *    The name and trademarks of copyright holders may NOT be used in advertising or
028 *    publicity pertaining to the software without specific, written prior permission.
029 *    Title to copyright in this software and any associated documentation will at all
030 *    times remain with copyright holders.
031 */
032package org.opengis.test.runner;
033
034import java.io.Console;
035import java.io.PrintWriter;
036import java.awt.EventQueue;
037import javax.swing.UIManager;
038
039
040/**
041 * Provides the entry point for running the {@code geoapi-conformance} tests.
042 *
043 * @author  Martin Desruisseaux (Geomatys)
044 * @version 3.1
045 * @since   3.1
046 */
047public final class Main {
048    /**
049     * Do not allow instantiation of this class.
050     */
051    private Main() {
052    }
053
054    /**
055     * The application entry point. Current implementation {@linkplain #startSwingApplication()
056     * starts the Swing application}. Future versions may provides different alternatives based
057     * on the command-line arguments.
058     *
059     * @param arguments  must be an empty string in current version.
060     *        Future versions may accept some command-line arguments.
061     */
062    @SuppressWarnings("UseOfSystemOutOrSystemErr")
063    public static void main(final String[] arguments) {
064        if (arguments.length == 0) {
065            try {
066                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
067            } catch (Exception e) {
068                // Ignore - keep the default L&F.
069            }
070            startSwingApplication();
071        } else {
072            final Console console = System.console();
073            final PrintWriter out = (console != null) ? console.writer() : new PrintWriter(System.out, true);
074            out.println("Usage: java -jar geoapi-conformance.jar");
075            out.flush();
076        }
077    }
078
079    /**
080     * Starts the swing application.
081     */
082    public static void startSwingApplication() {
083        final MainFrame frame = new MainFrame();
084        frame.setVisible(true);
085        EventQueue.invokeLater(frame);
086    }
087}