/* * This file is a part of EpnTAPClient. * This program aims to provide EPN-TAP support for software clients, like CASSIS spectrum analyzer. * See draft specifications: https://voparis-confluence.obspm.fr/pages/viewpage.action?pageId=559861 * Copyright (C) 2016 Institut de Recherche en Astrophysique et Planétologie. * * This program is free software: you can * redistribute it and/or modify it under the terms of the GNU General Public License as published * by the Free Software Foundation, either version 3 of the License, or (at your option) any later * version. This program 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 General Public License for more details. You should have received a copy of * the GNU General Public License along with this program. If not, see * . */ package eu.omp.irap.vespa.epntapclient.votable; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JFrame; import javax.swing.SwingUtilities; import com.google.gson.Gson; import eu.omp.irap.vespa.epntapclient.votable.controller.VOTableController; import eu.omp.irap.vespa.epntapclient.votable.view.VOTableView; /** * Simple class to have a main function to display a voTable from a XML file. * * @author N. Jourdane */ public class VOTableApp { /** The logger for the class VOTableApp. */ protected static final Logger logger = Logger.getLogger(VOTableApp.class.getName()); private static final String WRONG_COMMAND = "Usage: VOtableApp path/to/VOTable.xml\n" + "OR: VOtableApp http://url.to.service/or/registry type language \"YOUR QUERY\""; /** Private constructor to hide the implicit public one. */ private VOTableApp() { } /** * Main function to start the application as standalone. * * @param args The program arguments */ public static void main(final String[] args) { VOTableApp.logger.info("Lauching VOTable app with arguments: " + new Gson().toJson(args)); VOTableController ctrl; if (args.length == 1) { ctrl = new VOTableController(args[0]); } else if (args.length == 3) { ctrl = new VOTableController(args[0], args[1], args[2]); } else { System.console().writer().println(VOTableApp.WRONG_COMMAND); return; } try { ctrl.readTable(); } catch (VOTableException e) { System.out.println("Error: " + e.getMessage()); VOTableApp.logger.log(Level.WARNING, e.getMessage(), e); return; } VOTableView view = new VOTableView(); view.fillTable(ctrl.getColumns(), ctrl.getData()); SwingUtilities.invokeLater(VOTableApp.run(view, args[0])); } private static Runnable run(final VOTableView voTableView, final String title) { return new Runnable() { @Override public void run() { JFrame frame = new JFrame(title); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setContentPane(voTableView); frame.setVisible(true); frame.setSize(800, 600); frame.setLocationRelativeTo(null); } }; } }