Commit in hps-java/src/main on MAIN
java/org/lcsim/hps/monitoring/MonitoringApplication.java+145-761.48 -> 1.49
resources/org/lcsim/hps/steering/SensorOccupancyPlots.lcsim+21added 1.1
java/org/lcsim/hps/monitoring/svt/SensorOccupancyPlotsDriver.java+3-111.4 -> 1.5
+169-87
1 added + 2 modified, total 3 files
add embedded plotting to monitoring; changed occupancy plots to be compatible with the new way

hps-java/src/main/java/org/lcsim/hps/monitoring
MonitoringApplication.java 1.48 -> 1.49
diff -u -r1.48 -r1.49
--- MonitoringApplication.java	17 May 2012 00:18:39 -0000	1.48
+++ MonitoringApplication.java	5 Jun 2012 19:23:46 -0000	1.49
@@ -1,8 +1,36 @@
 package org.lcsim.hps.monitoring;
 
-import static org.lcsim.hps.monitoring.MonitoringCommands.*;
+import static org.lcsim.hps.monitoring.MonitoringCommands.aidaAutoSaveCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.clearLogTableCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.connectCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.disconnectCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.eventBuilderCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.eventRefreshCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.exitCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.loadConnectionCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.loadJobSettingsCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.logLevelCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.logToFileCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.logToTerminalCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.nextCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.pauseCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.resetConnectionSettingsCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.resetDriversCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.resetEventsCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.resetJobSettingsCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.resumeCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.saveConnectionCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.saveJobSettingsCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.saveLogTableCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.savePlotsCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.screenshotCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.setMaxEventsCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.steeringFileCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.steeringResourceCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.updateTimeCmd;
 
 import java.awt.AWTException;
+import java.awt.BorderLayout;
 import java.awt.Dimension;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
@@ -32,6 +60,7 @@
 import java.util.logging.Logger;
 
 import javax.imageio.ImageIO;
+import javax.swing.BorderFactory;
 import javax.swing.JFileChooser;
 import javax.swing.JFrame;
 import javax.swing.JMenu;
@@ -44,6 +73,7 @@
 import javax.swing.JTable;
 import javax.swing.SwingUtilities;
 import javax.swing.Timer;
+import javax.swing.border.EtchedBorder;
 import javax.swing.table.DefaultTableModel;
 
 import org.apache.commons.cli.CommandLine;
@@ -64,13 +94,15 @@
  * calling its main() method.
  *
  * @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: MonitoringApplication.java,v 1.46 2012/05/10 23:39:37 jeremy
- * Exp $
+ * @version $Id: MonitoringApplication.java,v 1.49 2012/06/05 19:23:46 jeremy Exp $
  */
 public class MonitoringApplication {
 
     // Top-level Swing components.
     private JPanel mainPanel;
+    private JPanel leftPanel; 
+    private JPanel rightPanel;
+    private JTabbedPane plotPane;
     private JTabbedPane tabs;
     private ConnectionPanel connectionPanel;
     private ConnectionStatusPanel connectionStatusPanel;
@@ -85,7 +117,7 @@
     private JMenuItem disconnectItem;
     private JMenuItem resetConnectionItem;
     private JMenuItem connectionLoadItem;
-    private JMenuItem connectionSaveItem;
+    //private JMenuItem connectionSaveItem;
     private JMenuItem savePlotsItem;
     private JMenuItem resetDriversItem;
     private JMenuItem logItem;
@@ -146,7 +178,15 @@
     // Format of date field for log.
     private final SimpleDateFormat dateFormat = new SimpleDateFormat("MMMM-dd-yyyy HH:mm:ss.SSS");
     private static final String LCSIM_FAIL_MESSAGE = "Failed to setup LCSim.";
-
+    
+    private static final int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
+    private static final int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;
+    
+    private static final int leftPanelWidth = (int)(screenWidth * 0.33);
+    private static final int rightPanelWidth = (int)(screenWidth * 0.40);
+    
+    private static final int connectionStatusPanelHeight = 50;
+    
     /**
      * Constructor for monitoring application. Users should not need to use
      * this; call main() method instead.
@@ -172,18 +212,36 @@
         // Create the log table GUI component.
         createLogTable();
 
+        // Setup AIDA.
+        setupAida();
+        
         // Log that the application started successfully.
-        log("Application initialized successfully.");
+        log("Application initialized successfully.");       
+    }
+    
+    void setupAida() {
+        MonitoringAnalysisFactory.register();
+        MonitoringPlotFactory.setRootPane(plotPane);
     }
 
     /**
      * Creates all the JPanels for the monitoring GUI.
      */
     private void createPanels() {
-
-        // Main panel for the application.
         mainPanel = new JPanel();
         mainPanel.setLayout(new GridBagLayout());
+        createLeftPanel();
+        createRightPanel();
+    }
+    
+    private void createLeftPanel() {
+        
+        // Lefthand panel containing the three application tabs.
+        leftPanel = new JPanel();
+        leftPanel.setPreferredSize(new Dimension(leftPanelWidth, screenHeight-30));
+        //leftPanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
+        //leftPanel.setMinimumSize(new Dimension(leftPanelWidth, screenHeight-30));
+        leftPanel.setLayout(new GridBagLayout());        
 
         // Connection status panel.
         GridBagConstraints c = new GridBagConstraints();
@@ -192,8 +250,10 @@
         c.anchor = GridBagConstraints.NORTH;
         c.weightx = c.weighty = 1.0;
         c.insets = new Insets(15, 0, 0, 15);
+        c.fill = GridBagConstraints.BOTH;
         connectionStatusPanel = new ConnectionStatusPanel();
-        mainPanel.add(connectionStatusPanel, c);
+        connectionStatusPanel.setPreferredSize(new Dimension(leftPanelWidth-10, connectionStatusPanelHeight));
+        leftPanel.add(connectionStatusPanel, c);
 
         // Event processing buttons.
         c = new GridBagConstraints();
@@ -203,7 +263,7 @@
         c.insets = new Insets(0, 0, 0, 20);
         buttonsPanel = new EventButtonsPanel();
         buttonsPanel.addActionListener(actionListener);
-        mainPanel.add(buttonsPanel, c);
+        leftPanel.add(buttonsPanel, c);
 
         // Contents of the tabs panel.
         connectionPanel = new ConnectionPanel();
@@ -229,9 +289,46 @@
         c.fill = GridBagConstraints.BOTH;
         c.weightx = c.weighty = 1.0;
         c.insets = new Insets(0, 0, 0, 10);
-        mainPanel.add(tabsPanel, c);
+        leftPanel.add(tabsPanel, c);
+                
+        // Layout attributes for left panel.
+        c = new GridBagConstraints();
+        c.gridx = 0;
+        c.gridy = 0;
+        c.weightx = 1.0;
+        c.weighty = 1.0;
+        c.fill = GridBagConstraints.VERTICAL;
+        c.anchor = GridBagConstraints.WEST;
+        c.insets = new Insets(10, 10, 10, 10);
+        mainPanel.add(leftPanel, c);
     }
+    
+    private void createRightPanel() {
+        
+        // Create right-hand panel.
+        rightPanel = new JPanel();
+        rightPanel.setPreferredSize(new Dimension(rightPanelWidth, screenHeight-30));
+        //rightPanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
+        rightPanel.setMinimumSize(new Dimension(rightPanelWidth, screenHeight-30));
+        rightPanel.setLayout(new BorderLayout());        
+        
+        // Create plot pane with empty tabs.
+        plotPane = new JTabbedPane();
+        //plotPane.removeAll();
+        rightPanel.add(plotPane, BorderLayout.CENTER);
 
+        // Set layout of right panel.
+        GridBagConstraints c = new GridBagConstraints();
+        c.gridx = 1;
+        c.gridy = 0;
+        c.fill = GridBagConstraints.BOTH;
+        //c.anchor = GridBagConstraints.NORTHEAST;
+        c.anchor = GridBagConstraints.CENTER;
+        c.weightx = 1.0;
+        c.weighty = 1.0;
+        mainPanel.add(rightPanel, c);
+    }
+    
     private void createMenu() {
 
         menuBar = new JMenuBar();
@@ -239,61 +336,24 @@
         JMenu connectionMenu = new JMenu("Connection");
         connectionMenu.setMnemonic(KeyEvent.VK_C);
         menuBar.add(connectionMenu);
-
-        connectItem = new JMenuItem("Connect");
-        connectItem.setMnemonic(KeyEvent.VK_C);
-        connectItem.setActionCommand(connectCmd);
-        connectItem.addActionListener(actionListener);
-        connectItem.setToolTipText("Connect to ET system using parameters from connection panel.");
-        connectionMenu.add(connectItem);
-
-        disconnectItem = new JMenuItem("Disconnect");
-        disconnectItem.setMnemonic(KeyEvent.VK_D);
-        disconnectItem.setActionCommand(disconnectCmd);
-        disconnectItem.addActionListener(actionListener);
-        disconnectItem.setEnabled(false);
-        disconnectItem.setToolTipText("Disconnect from the current ET session.");
-        connectionMenu.add(disconnectItem);
-
-        resetConnectionItem = new JMenuItem("Reset Connection Settings");
-        resetConnectionItem.setMnemonic(KeyEvent.VK_R);
-        resetConnectionItem.setActionCommand(resetConnectionSettingsCmd);
-        resetConnectionItem.addActionListener(actionListener);
-        resetConnectionItem.setToolTipText("Reset connection settings to defaults.");
-        connectionMenu.add(resetConnectionItem);
-
-        connectionLoadItem = new JMenuItem("Load Connection...");
-        connectionLoadItem.setMnemonic(KeyEvent.VK_L);
-        connectionLoadItem.setActionCommand(loadConnectionCmd);
-        connectionLoadItem.addActionListener(actionListener);
-        connectionLoadItem.setToolTipText("Load connection settings from a saved properties file.");
-        connectionMenu.add(connectionLoadItem);
-
-        connectionSaveItem = new JMenuItem("Save Connection...");
-        connectionSaveItem.setMnemonic(KeyEvent.VK_S);
-        connectionSaveItem.setActionCommand(saveConnectionCmd);
-        connectionSaveItem.addActionListener(actionListener);
-        connectionSaveItem.setToolTipText("Save connection settings to a properties file.");
-        connectionMenu.add(connectionSaveItem);
-
-        JMenuItem exitItem = new JMenuItem("Exit");
-        exitItem.setMnemonic(KeyEvent.VK_X);
-        exitItem.setActionCommand(exitCmd);
-        exitItem.addActionListener(actionListener);
-        exitItem.setToolTipText("Exit from the application.");
-        connectionMenu.add(exitItem);
+        
+        connectItem = addMenuItem("Connect", KeyEvent.VK_C, connectCmd, true, "Connect to ET system using parameters from connection panel.", connectionMenu);
+        disconnectItem = addMenuItem("Disconnect", KeyEvent.VK_D, disconnectCmd, false, "Disconnect from the current ET session.", connectionMenu);        
+        resetConnectionItem = addMenuItem("Reset Connection Settings", KeyEvent.VK_R, resetConnectionSettingsCmd, true, "Reset connection settings to defaults.", connectionMenu);
+        connectionLoadItem = addMenuItem("Load Connection...", KeyEvent.VK_L, loadConnectionCmd, true, "Load connection settings from a saved properties file.", connectionMenu);       
+        addMenuItem("Save Connection...", KeyEvent.VK_S, saveConnectionCmd, true, "Save connection settings to a properties file.", connectionMenu);
+        addMenuItem("Exit", KeyEvent.VK_X, exitCmd, true, "Exit from the application.", connectionMenu);
 
         JMenu eventMenu = new JMenu("Event");
         eventMenu.setMnemonic(KeyEvent.VK_E);
         menuBar.add(eventMenu);
+        
+        addMenuItem("Reset Event Monitor", KeyEvent.VK_E, resetEventsCmd, true, "Reset timer and counters in the event monitor tab.", eventMenu);
 
-        JMenuItem resetEventsItem = new JMenuItem("Reset Event Monitor");
-        resetEventsItem.setMnemonic(KeyEvent.VK_E);
-        resetEventsItem.setActionCommand(resetEventsCmd);
-        resetEventsItem.addActionListener(actionListener);
-        resetEventsItem.setToolTipText("Reset timer and counters in the event monitor tab.");
-        eventMenu.add(resetEventsItem);
-
+        /**
+         * FIXME: Rest of these should be converted to use the addMenuItem() helper method...
+         */
+        
         JMenuItem eventRefreshItem = new JMenuItem("Set Event Refresh...");
         eventRefreshItem.setMnemonic(KeyEvent.VK_V);
         eventRefreshItem.setActionCommand(eventRefreshCmd);
@@ -396,13 +456,19 @@
         saveLogItem.addActionListener(actionListener);
         saveLogItem.setToolTipText("Save the log records to a tab delimited text file.");
         logMenu.add(saveLogItem);
-
-        JMenuItem clearLogItem = new JMenuItem("Clear log");
-        clearLogItem.setMnemonic(KeyEvent.VK_C);
-        clearLogItem.setActionCommand(clearLogTableCmd);
-        clearLogItem.addActionListener(actionListener);
-        clearLogItem.setToolTipText("Clear the log table of all messages.");
-        logMenu.add(clearLogItem);
+                 
+        addMenuItem("Clear log", KeyEvent.VK_C, clearLogTableCmd, true, "Clear the log table of all messages.", logMenu);
+    }
+    
+    private JMenuItem addMenuItem(String label, int mnemonic, String cmd, boolean enabled, String tooltip, JMenu menu) {
+        JMenuItem item = new JMenuItem(label);
+        item.setMnemonic(mnemonic);
+        item.setActionCommand(cmd);
+        item.setEnabled(enabled);
+        item.setToolTipText(tooltip);
+        item.addActionListener(actionListener);
+        menu.add(item);
+        return item;
     }
 
     /**
@@ -448,7 +514,7 @@
         JScrollPane logPane = new JScrollPane(logTable);
         logPane.setPreferredSize(new Dimension(logTableWidth, logTableHeight));
         logPane.setMinimumSize(new Dimension(0, 300));
-        mainPanel.add(logPane, c);
+        leftPanel.add(logPane, c);
     }
 
     /**
@@ -623,7 +689,7 @@
     private void saveJobSettings() {
         JFileChooser fc = new JFileChooser();
         fc.setDialogTitle("Save Job Settings");
-        int r = fc.showSaveDialog(mainPanel);
+        int r = fc.showSaveDialog(leftPanel);
         if (r == JFileChooser.APPROVE_OPTION) {
             File f = fc.getSelectedFile();
             JobSettings settings = jobPanel.getJobSettings();
@@ -641,7 +707,7 @@
     private void loadJobSettings() {
         JFileChooser fc = new JFileChooser();
         fc.setDialogTitle("Load Job Settings");
-        int r = fc.showOpenDialog(mainPanel);
+        int r = fc.showOpenDialog(leftPanel);
         if (r == JFileChooser.APPROVE_OPTION) {
             File f = fc.getSelectedFile();
             try {
@@ -886,7 +952,7 @@
      * @param m The message to display in the dialog box.
      */
     private void showDialog(String m) {
-        JOptionPane.showMessageDialog(mainPanel, m);
+        JOptionPane.showMessageDialog(leftPanel, m);
     }
 
     /**
@@ -1005,7 +1071,7 @@
     private void logToFile() {
         JFileChooser fc = new JFileChooser();
         fc.setDialogTitle("Log File");
-        int fcs = fc.showSaveDialog(this.mainPanel);
+        int fcs = fc.showSaveDialog(mainPanel);
         if (fcs == JFileChooser.APPROVE_OPTION) {
             final File logFile = fc.getSelectedFile();
             if (logFile.exists()) {
@@ -1185,7 +1251,7 @@
     private void chooseScreenshot() {
         JFileChooser fc = new JFileChooser();
         fc.setDialogTitle("Save Screenshot");
-        int r = fc.showSaveDialog(this.mainPanel);
+        int r = fc.showSaveDialog(mainPanel);
         if (r == JFileChooser.APPROVE_OPTION) {
             String fileName = fc.getSelectedFile().getPath();
             int extIndex = fileName.lastIndexOf(".");
@@ -1527,6 +1593,9 @@
 
         // Clear the static AIDA tree in case plots are hanging around from previous sessions.
         resetAidaTree();
+        
+        // Reset the plots tab.
+        this.plotPane.removeAll();
 
         // Get steering resource or file as a String parameter.
         String steering = getSteering();
@@ -1669,7 +1738,7 @@
     private void saveLogToFile() {
         JFileChooser fc = new JFileChooser();
         fc.setDialogTitle("Save Log File");
-        int fcs = fc.showSaveDialog(this.mainPanel);
+        int fcs = fc.showSaveDialog(mainPanel);
         if (fcs == JFileChooser.APPROVE_OPTION) {
             final File logFile = fc.getSelectedFile();
             if (logFile.exists()) {
@@ -1762,7 +1831,7 @@
      */
     private void resetAidaTree() {
         AIDA.defaultInstance().clearAll();
-        log("Reset default AIDA tree.");
+        log("Reset default AIDA tree.");        
     }    
     
     /**

hps-java/src/main/resources/org/lcsim/hps/steering
SensorOccupancyPlots.lcsim added at 1.1
diff -N SensorOccupancyPlots.lcsim
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ SensorOccupancyPlots.lcsim	5 Jun 2012 19:23:47 -0000	1.1
@@ -0,0 +1,21 @@
+<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
+       xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
+    <execute>
+        <driver name="EventMarkerDriver"/>
+        <driver name="SVTSetupDriver"/>
+        <driver name="RawTrackerHitMaker"/>
+        <driver name="SVTOccupancyPlots"/>
+    </execute>    
+    <drivers>
+        <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
+            <eventInterval>1</eventInterval>
+        </driver>
+        <driver name="SVTSetupDriver" type="org.lcsim.hps.recon.tracking.HPSSVTSensorSetup"/>
+        <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver">
+            <rawTrackerHitOutputCollectionName>SVTRawTrackerHits</rawTrackerHitOutputCollectionName>
+        </driver>
+        <driver name="SVTOccupancyPlots" type="org.lcsim.hps.monitoring.svt.SensorOccupancyPlotsDriver">
+            <eventRefreshRate>1</eventRefreshRate>
+        </driver>
+    </drivers>   
+</lcsim>

hps-java/src/main/java/org/lcsim/hps/monitoring/svt
SensorOccupancyPlotsDriver.java 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- SensorOccupancyPlotsDriver.java	17 May 2012 00:15:48 -0000	1.4
+++ SensorOccupancyPlotsDriver.java	5 Jun 2012 19:23:47 -0000	1.5
@@ -34,7 +34,7 @@
  */
 public class SensorOccupancyPlotsDriver extends Driver implements Resettable {
 
-    private String rawTrackerHitCollectionName = "RawTrackerHitMaker_RawTrackerHits";
+    private String rawTrackerHitCollectionName = "SVTRawTrackerHits";
     private String trackerName = "Tracker";
     private AIDA aida = AIDA.defaultInstance();
     private IPlotter plotter;
@@ -82,7 +82,7 @@
 
         // Setup the plotter.
         IAnalysisFactory fac = aida.analysisFactory();
-        plotter = fac.createPlotterFactory().create(detector.getDetectorName() + " : HPS SVT Sensor Occupancy Plots");
+        plotter = fac.createPlotterFactory("SVT").create("Sensor Occupancy Plots");
         IPlotterStyle pstyle = plotter.style();
         pstyle.dataStyle().fillStyle().setColor("green");
         pstyle.dataStyle().markerStyle().setColor("green");
@@ -124,7 +124,6 @@
             hist.setAllowUserInteraction(false);
             hist.setAllowPopupMenus(false);
         }
-        plotter.show();
     }
 
     public void process(EventHeader event) {
@@ -135,7 +134,7 @@
 
             // Increment strip hit count.
             for (RawTrackerHit hit : rawTrackerHits) {
-                int[] strips = occupancyMap.get(hit.getDetectorElement().getName()); // FIXME: Null pointer exception here???
+                int[] strips = occupancyMap.get(hit.getDetectorElement().getName());
                 strips[hit.getIdentifierFieldValue("strip")] += 1;
             }
 
@@ -162,17 +161,10 @@
     private void resetOccupancyMap() {
         occupancyMap = new HashMap<String, int[]>();
         for (SiSensor sensor : sensors) {
-            //System.out.println("putting map entry for --> " + sensor.getName());
             occupancyMap.put(sensor.getName(), new int[640]);
         }
     }
 
-    public void endOfData() {
-        if (plotter != null) {
-            plotter.hide();
-        }
-    }
-    
     public void reset() {
         eventCount = 0;
         resetOccupancyMap();
CVSspam 0.2.12


Use REPLY-ALL to reply to list

To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1