/* * 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.view; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFormattedTextField; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import eu.omp.irap.vespa.epntapclient.utils.Queries; import eu.omp.irap.vespa.epntapclient.votable.controller.VOTableException; /** * @author N. Jourdane */ public class RequestView extends JPanel implements ActionListener { /** The logger for this class. */ private static final Logger logger = LogManager.getLogger(RequestView.class); /** The serial version UID (affected with a random number). */ private static final long serialVersionUID = 1262856496809315405L; /** The EPN-TAP main view. */ private EpnTapMainView mainView; /** The text area where the user put the query. */ private JTextArea queryArea; /** The height of the buttons panel. */ private static final int BUTTON_PANEL_HEIGHT = 15; /** * Method constructor * * @param mainView The EPN-TAP main view. */ public RequestView(EpnTapMainView mainView) { this.mainView = mainView; setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); this.add(buildParamPanel(), this); this.add(buildQueryPanel(), this); this.add(buildButtonPanel(), this); } /** * @return A JPanel containing graphical elements for the service parameters. */ private static JPanel buildParamPanel() { JPanel paramPanel = new JPanel(new GridLayout(0, 2)); paramPanel.setBorder(BorderFactory.createTitledBorder("Query parameters")); // Target name JLabel targetNameLabel = new JLabel("Target name"); paramPanel.add(targetNameLabel); JTextField targetName = new JTextField(10); targetName.setToolTipText("The target name, for example 'Jupiter'."); paramPanel.add(targetName); // Time JLabel timeLabel = new JLabel("Time (min, max)"); paramPanel.add(timeLabel); JPanel timePanel = new JPanel(new GridLayout(0, 2)); JFormattedTextField minTime = new JFormattedTextField(new Float(0.0)); minTime.setToolTipText("The minimum time, for example '0.01'."); timePanel.add(minTime); JFormattedTextField maxTime = new JFormattedTextField(new Float(0.0)); maxTime.setToolTipText("The maximum time, for example '1.50'."); timePanel.add(maxTime); paramPanel.add(timePanel); // Data product type JLabel productTypeLabel = new JLabel("Data product type"); paramPanel.add(productTypeLabel); JTextField productType = new JTextField(10); productType.setToolTipText("The product type, for example '...'."); paramPanel.add(productType); // Spectral range JLabel spectralRangeLabel = new JLabel("Spectral range"); paramPanel.add(spectralRangeLabel); JTextField spectralRange = new JTextField(10); spectralRange.setToolTipText("The spectral range, for example '...'."); paramPanel.add(spectralRange); return paramPanel; } /** * @return A JPanel containing graphical elements for the query. */ private JPanel buildQueryPanel() { JPanel queryPanel = new JPanel(); queryPanel.setBorder(BorderFactory.createTitledBorder("Query for the selected service(s)")); queryArea = new JTextArea(Queries.SAMPLE_AMDA_QUERY); queryArea.setToolTipText("The query sent to the service(s)."); queryArea.setLineWrap(true); queryPanel.setLayout(new BorderLayout()); queryPanel.add(queryArea, BorderLayout.CENTER); return queryPanel; } /** * @return A JPanel containing the button(s). */ private JPanel buildButtonPanel() { JPanel buttonPanel = new JPanel(); JButton btnSend = new JButton("Send query"); btnSend.setName("btnSend"); btnSend.addActionListener(this); buttonPanel.add(btnSend); buttonPanel.setMaximumSize( new Dimension(EpnTapMainView.RIGHT_PANEL_WIDTH, BUTTON_PANEL_HEIGHT)); return buttonPanel; } @Override public void actionPerformed(ActionEvent evt) { if (((JButton) evt.getSource()).getName() == "btnSend") { try { mainView.getController().sendQuery(queryArea.getText()); } catch (VOTableException e) { logger.error("Can not send query when clicking on the send button.", e); } } } }