/* * ALMA - Atacama Large Millimiter Array * (c) European Southern Observatory, 2002 * Copyright by ESO (in the framework of the ALMA collaboration) * and Cosylab 2002, 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., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */ package alma.acs.logging.io; import java.awt.FlowLayout; import javax.swing.BorderFactory; import javax.swing.JCheckBox; import javax.swing.JPanel; import javax.swing.border.TitledBorder; import com.cosylab.logging.LoggingClient; /** * The panel contains the checkboxes to clear the logs * in the table and to disconnect. * * It will be used in the panel to load logs (from URL, * file or the database) * * @author acaproni * */ public class LoadSwitchesPanel extends JPanel { /** * The check box to clear the logs before starting to load logs * (enabled by default) */ private JCheckBox clearLogsCB = null; /** * The checkbox to disconnect before starting to load logs * (enabled by default) */ private JCheckBox disconnectCB = null; // The logging client private LoggingClient loggingClient=null; /** * Constructor * */ public LoadSwitchesPanel(LoggingClient client) { if (client==null) { throw new IllegalArgumentException("Invalid null LoggingClient!"); } loggingClient=client; initGUI(); } /** * Initialize the panel */ private void initGUI() { clearLogsCB = new JCheckBox("Clear log table",true); disconnectCB = new JCheckBox("Disconnect",true); checkControlsState(); setLayout(new FlowLayout(FlowLayout.LEFT)); add(clearLogsCB); add(disconnectCB); // Add a border TitledBorder border = BorderFactory.createTitledBorder("GUI setup"); this.setBorder(border); } /** * Enable/disable the check boxes depending on the number * of logs in the table and the connection status. */ public void checkControlsState() { // Clear and disable the disconnectCB if the engine is already // disconnected disconnectCB.setSelected(loggingClient.isConnected()); disconnectCB.setEnabled(loggingClient.isConnected()); // Clear and disable the clearLogsCB if there are no logs in the table clearLogsCB.setEnabled(loggingClient.getLCModel1().totalLogNumber()!=0); clearLogsCB.setSelected(loggingClient.getLCModel1().totalLogNumber()!=0); } /** * * @return true if the logs has to be removed from the table */ public boolean clearLogs() { return clearLogsCB.isSelected(); } /** * * @return true if the engine must be disconnected */ public boolean disconnectEngine() { return disconnectCB.isSelected(); } /** * Remove the logs from the table and disconnect the engine * (if the checkboxes are selected). * */ public void execute() { if (disconnectCB.isSelected()) { loggingClient.connect(false); } if (clearLogsCB.isSelected()) { loggingClient.getLCModel1().clearAll(); } } }