Print

Print


Author: [log in to unmask]
Date: Fri Mar  6 21:51:57 2015
New Revision: 2321

Log:
Add class with trigger diagnostics tables.

Added:
    java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/TriggerDiagnosticsPanel.java

Added: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/TriggerDiagnosticsPanel.java
 =============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/TriggerDiagnosticsPanel.java	(added)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/TriggerDiagnosticsPanel.java	Fri Mar  6 21:51:57 2015
@@ -0,0 +1,83 @@
+package org.hps.monitoring.application;
+
+import java.awt.BorderLayout;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.JPanel;
+import javax.swing.JTabbedPane;
+
+import org.hps.analysis.trigger.DiagSnapshot;
+import org.hps.monitoring.trigger.ClusterTablePanel;
+import org.hps.monitoring.trigger.DiagnosticUpdatable;
+import org.hps.monitoring.trigger.EfficiencyTablePanel;
+import org.hps.monitoring.trigger.PairTablePanel;
+import org.hps.monitoring.trigger.SinglesTablePanel;
+import org.lcsim.event.EventHeader;
+import org.lcsim.util.Driver;
+
+/**
+ * This is a panel containing the trigger diagnostics tables.
+ * 
+ * @author Jeremy McCormick <[log in to unmask]>
+ */
+public class TriggerDiagnosticsPanel extends JPanel {
+
+    JTabbedPane tabs = new JTabbedPane();
+    ClusterTablePanel clusterPanel = new ClusterTablePanel();
+    SinglesTablePanel singlesPanel = new SinglesTablePanel();
+    PairTablePanel pairsPanel = new PairTablePanel();
+    EfficiencyTablePanel efficiencyPanel = new EfficiencyTablePanel();
+    
+    List<DiagnosticUpdatable> updateList = new ArrayList<DiagnosticUpdatable>();
+    
+    TriggerDiagnosticsPanel() {
+        setLayout(new BorderLayout());
+                       
+        tabs.addTab("Clusters", clusterPanel);
+        tabs.addTab("Singles", singlesPanel);
+        tabs.addTab("Pairs", pairsPanel);
+        tabs.addTab("Efficiency", efficiencyPanel);
+        
+        updateList.add(clusterPanel);
+        updateList.add(singlesPanel);
+        updateList.add(pairsPanel);
+        updateList.add(efficiencyPanel);
+        
+        add(tabs, BorderLayout.CENTER);
+    }
+        
+    /**
+     * Driver for updating the tables.
+     */
+    class TriggerDiagnosticGUIDriver extends Driver {
+
+        // FIXME: Hard-coded collection name.
+        private String diagnosticCollectionName = "DiagnosticSnapshot";
+        
+        @Override
+        public void process(EventHeader event) {
+            System.out.println("TriggerDiagnosticsGUIDriver.process - #" + event.getEventNumber());
+            // Updates are only performed if a diagnostic snapshot object
+            // exists. Otherwise, do nothing.
+            if(event.hasCollection(DiagSnapshot.class, diagnosticCollectionName)) {
+                // Get the snapshot collection.
+                List<DiagSnapshot> snapshotList = event.get(DiagSnapshot.class, diagnosticCollectionName);
+                
+                // Get the snapshot. There will only ever be one.
+                DiagSnapshot snapshot = snapshotList.get(0);
+                
+                // Update the GUI panels.
+                for (DiagnosticUpdatable update : updateList) {
+                    update.updatePanel(snapshot);
+                }
+            } else {
+                System.out.println("no diag snapshot in event");
+            }
+        }
+        
+        void setDiagnosticCollectionName(String name) {
+            diagnosticCollectionName = name;
+        }
+    }  
+}