Author: [log in to unmask] Date: Thu Mar 5 10:14:30 2015 New Revision: 2263 Log: More updates to monitoring branch. Removed: java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/DataSourcePanel.java Modified: java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/Main.java java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/Commands.java java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/ConnectionStatusPanel.java java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/DataSourceComboBox.java java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/MonitoringApplicationActionListener.java java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/SettingsPanel.java Modified: java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/Main.java ============================================================================= --- java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/Main.java (original) +++ java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/Main.java Thu Mar 5 10:14:30 2015 @@ -16,7 +16,6 @@ /** * This is the front-end for running the monitoring app via a {@link #main(String[])} method. */ -// FIXME: Move to org.hps.monitoring instead of gui package. public class Main { public static void main(String[] args) { @@ -49,54 +48,5 @@ } MonitoringApplication.create(configuration); - } - - /** - * Run the monitoring application from the command line. - * @param args The command line arguments. - */ - /* - public static void main(String[] args) { - - // Set up command line parsing. - Options options = new Options(); - options.addOption(new Option("h", false, "Print help.")); - options.addOption(new Option("c", true, "Load a properties file with configuration parameters.")); - CommandLineParser parser = new PosixParser(); - - // Parse command line arguments. - final CommandLine cl; - try { - cl = parser.parse(options, args); - } catch (ParseException e) { - throw new RuntimeException("Problem parsing command line options.", e); - } - - // Print help and exit. - if (cl.hasOption("h")) { - HelpFormatter help = new HelpFormatter(); - help.printHelp(" ", options); - System.exit(1); - } - - // Run the application on the Swing EDT. - SwingUtilities.invokeLater(new Runnable() { - public void run() { - - // Create the application class. - MonitoringApplication app = new MonitoringApplication(); - - // Load the connection settings. - if (cl.hasOption("c")) { - app.setConfiguration(new Configuration(new File(cl.getOptionValue("c")))); - } - - app.initialize(); - - // Set the app to be visible. - app.setVisible(true); - } - }); - } - */ + } } Modified: java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/Commands.java ============================================================================= --- java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/Commands.java (original) +++ java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/Commands.java Thu Mar 5 10:14:30 2015 @@ -12,11 +12,10 @@ static final String SETTINGS_SHOW = "settingsShow"; static final String OPEN_FILE = "openFile"; + static final String DATA_SOURCE_CHANGED = "dataSourceChanged"; //////////////////////////////////////////// - static final String AIDA_AUTO_SAVE = "aidaAutoSave"; - static final String AIDA_AUTO_SAVE_CHANGED = "aidaAutoSaveChanged"; static final String BLOCKING_CHANGED = "blockingChanged"; static final String CHOOSE_COMPACT_FILE = "chooseCompactFile"; static final String CHOOSE_LOG_FILE = "chooseLogFile"; Modified: java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/ConnectionStatusPanel.java ============================================================================= --- java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/ConnectionStatusPanel.java (original) +++ java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/ConnectionStatusPanel.java Thu Mar 5 10:14:30 2015 @@ -14,7 +14,6 @@ import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; -import javax.swing.SwingUtilities; import org.hps.monitoring.application.model.ConnectionStatusModel; Modified: java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/DataSourceComboBox.java ============================================================================= --- java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/DataSourceComboBox.java (original) +++ java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/DataSourceComboBox.java Thu Mar 5 10:14:30 2015 @@ -1,6 +1,7 @@ package org.hps.monitoring.application; import java.awt.Dimension; +import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; @@ -9,6 +10,7 @@ import javax.swing.JComboBox; import org.hps.monitoring.application.DataSourceComboBox.DataSourceItem; +import org.hps.monitoring.application.model.ConfigurationModel; import org.hps.monitoring.application.model.ConnectionStatusModel; import org.hps.record.enums.DataSourceType; @@ -17,22 +19,33 @@ * @author Jeremy McCormick <[log in to unmask]> * */ -public class DataSourceComboBox extends JComboBox<DataSourceItem> implements PropertyChangeListener { +public class DataSourceComboBox extends JComboBox<DataSourceItem> implements PropertyChangeListener, ActionListener { ConnectionStatusModel connectionModel; + ConfigurationModel configurationModel; - DataSourceComboBox(ConnectionStatusModel connectionModel, ActionListener listener) { + DataSourceComboBox( + ConfigurationModel configurationModel, + ConnectionStatusModel connectionModel, + ActionListener listener) { addActionListener(listener); - setPreferredSize(new Dimension(400, this.getPreferredSize().height)); - this.connectionModel = connectionModel; + setActionCommand(Commands.DATA_SOURCE_CHANGED); + setPreferredSize(new Dimension(400, this.getPreferredSize().height)); + setEditable(false); connectionModel.addPropertyChangeListener(this); + configurationModel.addPropertyChangeListener(this); + this.configurationModel = configurationModel; } public void addItem(DataSourceItem item) { // Do not add duplicates. - if (((DefaultComboBoxModel<DataSourceItem>)getModel()).getIndexOf(item) == -1) { + if (!contains(item)) { super.addItem(item); } + } + + boolean contains(DataSourceItem item) { + return ((DefaultComboBoxModel<DataSourceItem>)getModel()).getIndexOf(item) != -1; } static class DataSourceItem { @@ -42,6 +55,7 @@ DataSourceItem(String name, DataSourceType type) { this.type = type; + this.name = name; } public String toString() { @@ -70,6 +84,71 @@ } else { setEnabled(false); } - } + } else if (evt.getPropertyName().equals(ConfigurationModel.DATA_SOURCE_PATH_PROPERTY)) { + System.out.println("data source path property changed"); + addDataSourceItem(); + } } -} + + public void actionPerformed(ActionEvent evt) { + if (evt.getActionCommand().equals(Commands.DATA_SOURCE_CHANGED)) { + try { + configurationModel.removePropertyChangeListener(this); + DataSourceItem item = (DataSourceItem) getSelectedItem(); + configurationModel.setDataSourceType(item.type); + if (item.type != DataSourceType.ET_SERVER) { + configurationModel.setDataSourcePath(item.name); + } + } finally { + configurationModel.addPropertyChangeListener(this); + } + } + } + + void addDataSourceItem() { + + DataSourceType type = configurationModel.getDataSourceType(); + String path = configurationModel.getDataSourcePath(); + + // Remove an existing ET item in case the settings have changed. + if (hasEtItem()) { + removeEtItem(); + } + + // Always make sure there is an ET server available as a data source. + addItem(new DataSourceItem(getEtName(), DataSourceType.ET_SERVER)); + + // Add a data source for a file. + if (!type.equals(DataSourceType.ET_SERVER)) { + DataSourceItem newItem = new DataSourceItem(path, type); + if (!contains(newItem)) { + addItem(newItem); + setSelectedItem(newItem); + } + } + } + + void removeEtItem() { + for (int i=0; i<this.getItemCount(); i++) { + DataSourceItem item = this.getItemAt(i); + if (item.type == DataSourceType.ET_SERVER) { + this.removeItem(item); + break; + } + } + } + + boolean hasEtItem() { + for (int i=0; i<this.getItemCount(); i++) { + DataSourceItem item = this.getItemAt(i); + if (item.type == DataSourceType.ET_SERVER) { + return true; + } + } + return false; + } + + String getEtName() { + return configurationModel.getEtName() + "@" + configurationModel.getHost() + ":" + configurationModel.getPort(); + } +} Modified: java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/MonitoringApplicationActionListener.java ============================================================================= --- java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/MonitoringApplicationActionListener.java (original) +++ java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/MonitoringApplicationActionListener.java Thu Mar 5 10:14:30 2015 @@ -59,6 +59,7 @@ String cmd = e.getActionCommand(); if (CONNECT.equals(cmd)) { + // FIXME: Can the application run this in a separate thread instead? // Run the start session method on a separate thread. new Thread() { public void run() { Modified: java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java ============================================================================= --- java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java (original) +++ java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java Thu Mar 5 10:14:30 2015 @@ -81,7 +81,11 @@ topPanel.add(sep); // Add the data source combo box. - JComboBox<DataSourceItem> dataSourceComboBox = new DataSourceComboBox(application.connectionModel, application.actionListener); + JComboBox<DataSourceItem> dataSourceComboBox = + new DataSourceComboBox( + application.configurationModel, + application.connectionModel, + application.actionListener); topPanel.add(dataSourceComboBox); // Create the bottom panel. Modified: java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/SettingsPanel.java ============================================================================= --- java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/SettingsPanel.java (original) +++ java/branches/monitoring-app-HPSJAVA-442/src/main/java/org/hps/monitoring/application/SettingsPanel.java Thu Mar 5 10:14:30 2015 @@ -22,7 +22,6 @@ JTabbedPane tabs; JobSettingsPanel jobPanel; ConnectionSettingsPanel connectionPanel; - DataSourcePanel dataSourcePanel; static final String OKAY_COMMAND = "settingsOkay"; JDialog parent; @@ -33,33 +32,25 @@ connectionPanel = new ConnectionSettingsPanel(); jobPanel = new JobSettingsPanel(); - dataSourcePanel = new DataSourcePanel(); // Push configuration to sub-components. connectionPanel.setConfigurationModel(configurationModel); jobPanel.setConfigurationModel(configurationModel); - dataSourcePanel.setConfigurationModel(configurationModel); // Add ActionListener to sub-components. connectionPanel.addActionListener(listener); jobPanel.addActionListener(listener); - dataSourcePanel.addActionListener(listener); this.setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS)); tabs = new JTabbedPane(); tabs.addTab("Connection Settings", connectionPanel); tabs.addTab("Job Settings", jobPanel); - tabs.addTab("Data Source", dataSourcePanel); add(tabs); JButton okayButton = new JButton("Okay"); okayButton.setActionCommand(OKAY_COMMAND); okayButton.addActionListener(this); - - //defaultsButton = new JButton("Defaults"); - //defaultsButton.setActionCommand(Commands.LOAD_DEFAULT_SETTINGS); - //defaultsButton.addActionListener(this); add(Box.createRigidArea(new Dimension(1, 5))); JPanel buttonsPanel = new JPanel(); @@ -70,18 +61,6 @@ add(Box.createRigidArea(new Dimension(1, 5))); } - ConnectionSettingsPanel getConnectionPanel() { - return connectionPanel; - } - - JobSettingsPanel getJobSettingsPanel() { - return jobPanel; - } - - DataSourcePanel getDataSourcePanel() { - return dataSourcePanel; - } - @Override public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals(OKAY_COMMAND)) {