Print

Print


Author: [log in to unmask]
Date: Mon Nov 10 14:45:43 2014
New Revision: 1476

Log:
Change the event builder setting from a text field to a combo box that lists all available event builders.

Modified:
    java/trunk/monitoring-app/pom.xml
    java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/JobSettingsPanel.java
    java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/MonitoringApplication.java

Modified: java/trunk/monitoring-app/pom.xml
 =============================================================================
--- java/trunk/monitoring-app/pom.xml	(original)
+++ java/trunk/monitoring-app/pom.xml	Mon Nov 10 14:45:43 2014
@@ -136,5 +136,10 @@
                 </exclusion>
             </exclusions>             
         </dependency>
+        <dependency>
+            <groupId>org.reflections</groupId>
+            <artifactId>reflections</artifactId>
+            <version>0.9.9-RC1</version>
+        </dependency>
     </dependencies>
 </project>

Modified: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/JobSettingsPanel.java
 =============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/JobSettingsPanel.java	(original)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/JobSettingsPanel.java	Mon Nov 10 14:45:43 2014
@@ -1,7 +1,25 @@
 package org.hps.monitoring.gui;
 
-import static org.hps.monitoring.gui.Commands.*;
-import static org.hps.monitoring.gui.model.ConfigurationModel.*;
+import static org.hps.monitoring.gui.Commands.AIDA_AUTO_SAVE_CHANGED;
+import static org.hps.monitoring.gui.Commands.DISCONNECT_ON_END_RUN_CHANGED;
+import static org.hps.monitoring.gui.Commands.DISCONNECT_ON_ERROR_CHANGED;
+import static org.hps.monitoring.gui.Commands.EVENT_BUILDER_CHANGED;
+import static org.hps.monitoring.gui.Commands.LOG_LEVEL_CHANGED;
+import static org.hps.monitoring.gui.Commands.LOG_TO_FILE_CHANGED;
+import static org.hps.monitoring.gui.Commands.STEERING_RESOURCE_CHANGED;
+import static org.hps.monitoring.gui.Commands.STEERING_TYPE_CHANGED;
+import static org.hps.monitoring.gui.model.ConfigurationModel.AIDA_AUTO_SAVE_PROPERTY;
+import static org.hps.monitoring.gui.model.ConfigurationModel.AIDA_FILE_NAME_PROPERTY;
+import static org.hps.monitoring.gui.model.ConfigurationModel.DETECTOR_NAME_PROPERTY;
+import static org.hps.monitoring.gui.model.ConfigurationModel.DISCONNECT_ON_END_RUN_PROPERTY;
+import static org.hps.monitoring.gui.model.ConfigurationModel.DISCONNECT_ON_ERROR_PROPERTY;
+import static org.hps.monitoring.gui.model.ConfigurationModel.EVENT_BUILDER_PROPERTY;
+import static org.hps.monitoring.gui.model.ConfigurationModel.LOG_FILE_NAME_PROPERTY;
+import static org.hps.monitoring.gui.model.ConfigurationModel.LOG_LEVEL_PROPERTY;
+import static org.hps.monitoring.gui.model.ConfigurationModel.LOG_TO_FILE_PROPERTY;
+import static org.hps.monitoring.gui.model.ConfigurationModel.STEERING_FILE_PROPERTY;
+import static org.hps.monitoring.gui.model.ConfigurationModel.STEERING_RESOURCE_PROPERTY;
+import static org.hps.monitoring.gui.model.ConfigurationModel.STEERING_TYPE_PROPERTY;
 
 import java.awt.GridBagLayout;
 import java.awt.Insets;
@@ -15,7 +33,9 @@
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Enumeration;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 import java.util.logging.Level;
@@ -26,12 +46,14 @@
 import javax.swing.JFileChooser;
 import javax.swing.JTextField;
 
+import org.hps.evio.LCSimEventBuilder;
 import org.hps.monitoring.enums.SteeringType;
 import org.hps.monitoring.gui.model.ConfigurationModel;
 import org.jdom.Document;
 import org.jdom.Element;
 import org.jdom.JDOMException;
 import org.jdom.input.SAXBuilder;
+import org.reflections.Reflections;
 
 /**
  * This is the GUI panel for setting job parameters. It is connected to the global configuration via
@@ -47,7 +69,8 @@
     private JTextField detectorNameField;
     private JCheckBox disconnectOnErrorCheckBox;
     private JCheckBox disconnectOnEndRunCheckBox;
-    private JTextField eventBuilderField;
+    //private JTextField eventBuilderField;
+    private JComboBox<String> eventBuilderComboBox;
     private JTextField logFileNameField;
     private JComboBox<?> logLevelComboBox;
     private JCheckBox logToFileCheckbox;
@@ -59,7 +82,7 @@
     static final String STEERING_PACKAGE = "org/hps/steering/monitoring/";
 
     // FIXME: This should be in the default global config file rather than hard-coded here.
-    static final String DEFAULT_EVENT_BUILDER_CLASS_NAME = "org.hps.evio.LCSimTestRunEventBuilder";
+    static final String DEFAULT_EVENT_BUILDER_CLASS_NAME = "org.hps.evio.LCSimEngRunEventBuilder";
 
     // This will connect the GUI component to the underlying global configuration model.
     ConfigurationModel configurationModel;
@@ -105,10 +128,10 @@
         detectorNameField = addField("Detector Name", 20);
         detectorNameField.addPropertyChangeListener("value", this);
 
-        eventBuilderField = addField("Event Builder Class", 30);
-        eventBuilderField.setActionCommand(Commands.SET_EVENT_BUILDER);
-        eventBuilderField.addPropertyChangeListener("value", this);
-
+        eventBuilderComboBox = addComboBox("LCSim Event Builder", this.findEventBuilderClassNames());
+        eventBuilderComboBox.setActionCommand(Commands.EVENT_BUILDER_CHANGED);
+        eventBuilderComboBox.addActionListener(this);
+        
         logToFileCheckbox = addCheckBox("Log to File", false, false);
         logToFileCheckbox.setEnabled(false);
         logToFileCheckbox.setActionCommand(LOG_TO_FILE_CHANGED);
@@ -157,7 +180,7 @@
      * Attaches the ActionListener from the main app to specific GUI components in this class.
      */
     void addActionListener(ActionListener listener) {
-        eventBuilderField.addActionListener(listener);
+        eventBuilderComboBox.addActionListener(listener);
         logFileNameField.addActionListener(listener);
         logToFileCheckbox.addActionListener(listener);
         steeringResourcesComboBox.addActionListener(listener);
@@ -221,7 +244,7 @@
      * Get the files with extension "lcsim" from all loaded jar files.
      * @return A list of embedded steering file resources.
      */
-    public static String[] getAvailableSteeringFileResources(String packageName) {
+    static String[] getAvailableSteeringFileResources(String packageName) {
         List<String> resources = new ArrayList<String>();
         URL url = JobSettingsPanel.class.getResource("MonitoringApplication.class");
         String scheme = url.getProtocol();
@@ -268,7 +291,9 @@
             configurationModel.setLogLevel(Level.parse((String) logLevelComboBox.getSelectedItem()));
         } else if (AIDA_AUTO_SAVE_CHANGED.equals(e.getActionCommand())) {
             configurationModel.setAidaAutoSave(aidaAutoSaveCheckbox.isSelected());
-        }
+        } else if (EVENT_BUILDER_CHANGED.equals(e.getActionCommand())) {
+            configurationModel.setEventBuilderClassName((String) eventBuilderComboBox.getSelectedItem());
+        } 
     }
 
     /**
@@ -286,8 +311,6 @@
 
         if (source == detectorNameField) {
             configurationModel.setDetectorName(detectorNameField.getText());
-        } else if (source == eventBuilderField) {
-            configurationModel.setEventBuilderClassName(eventBuilderField.getText());
         } else if (source == steeringFileField) {
             configurationModel.setSteeringFile(steeringFileField.getText());
         } else if (source == logFileNameField) {
@@ -315,40 +338,39 @@
 
             if (evt.getPropertyName().equals(DETECTOR_NAME_PROPERTY)) {
                 detectorNameField.setText((String) value);
-            }
-            if (evt.getPropertyName().equals(AIDA_AUTO_SAVE_PROPERTY)) {
+            } else if (evt.getPropertyName().equals(AIDA_AUTO_SAVE_PROPERTY)) {
                 aidaAutoSaveCheckbox.setSelected((Boolean) value);
-            }
-            if (evt.getPropertyName().equals(AIDA_FILE_NAME_PROPERTY)) {
+            } else if (evt.getPropertyName().equals(AIDA_FILE_NAME_PROPERTY)) {
                 aidaSaveFileNameField.setText((String) value);
-            }
-            if (evt.getPropertyName().equals(DISCONNECT_ON_ERROR_PROPERTY)) {
+            } else if (evt.getPropertyName().equals(DISCONNECT_ON_ERROR_PROPERTY)) {
                 disconnectOnErrorCheckBox.setSelected((Boolean) value);
-            }
-            if (evt.getPropertyName().equals(DISCONNECT_ON_END_RUN_PROPERTY)) {
+            } else if (evt.getPropertyName().equals(DISCONNECT_ON_END_RUN_PROPERTY)) {
                 disconnectOnEndRunCheckBox.setSelected((Boolean) value);
-            }
-            if (evt.getPropertyName().equals(EVENT_BUILDER_PROPERTY)) {
-                eventBuilderField.setText((String) value);
-            }
-            if (evt.getPropertyName().equals(LOG_FILE_NAME_PROPERTY)) {
+            } else if (evt.getPropertyName().equals(EVENT_BUILDER_PROPERTY)) {
+                eventBuilderComboBox.setSelectedItem((String) value);
+            } else if (evt.getPropertyName().equals(LOG_FILE_NAME_PROPERTY)) {
                 logFileNameField.setText((String) value);
-            }
-            if (evt.getPropertyName().equals(LOG_LEVEL_PROPERTY)) {
+            } else if (evt.getPropertyName().equals(LOG_LEVEL_PROPERTY)) {
                 logLevelComboBox.setSelectedItem(value.toString());
-            }
-            if (evt.getPropertyName().equals(LOG_TO_FILE_PROPERTY)) {
+            } else if (evt.getPropertyName().equals(LOG_TO_FILE_PROPERTY)) {
                 logToFileCheckbox.setSelected((Boolean) value);
-            }
-            if (evt.getPropertyName().equals(STEERING_TYPE_PROPERTY)) {
+            } else if (evt.getPropertyName().equals(STEERING_TYPE_PROPERTY)) {
                 steeringTypeComboBox.setSelectedIndex(((SteeringType) value).ordinal());
-            }
-            if (evt.getPropertyName().equals(STEERING_FILE_PROPERTY)) {
+            } else if (evt.getPropertyName().equals(STEERING_FILE_PROPERTY)) {
                 steeringFileField.setText(((File) value).getPath());
-            }
-            if (evt.getPropertyName().equals(STEERING_RESOURCE_PROPERTY)) {
+            } else if (evt.getPropertyName().equals(STEERING_RESOURCE_PROPERTY)) {
                 steeringResourcesComboBox.setSelectedItem(value);
             }
         }
     }
+    
+    String[] findEventBuilderClassNames() {
+        Reflections reflections = new Reflections("org.hps");
+        Set<Class<? extends LCSimEventBuilder>> subTypes = reflections.getSubTypesOf(LCSimEventBuilder.class);
+        Set<String> classNames = new HashSet<String>();
+        for (Class<? extends LCSimEventBuilder> type : subTypes) {
+            classNames.add(type.getCanonicalName());
+        }
+        return classNames.toArray(new String[classNames.size()]);        
+    }
 }

Modified: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/MonitoringApplication.java
 =============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/MonitoringApplication.java	(original)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/gui/MonitoringApplication.java	Mon Nov 10 14:45:43 2014
@@ -1708,4 +1708,5 @@
     private static EtConnection fromConfigurationModel(ConfigurationModel config) {
         return EtConnection.createConnection(config.getEtName(), config.getHost(), config.getPort(), config.getBlocking(), config.getQueueSize(), config.getPrescale(), config.getStationName(), config.getStationPosition(), config.getWaitMode(), config.getWaitTime(), config.getChunkSize());
     }
+   
 }