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; + } + } +}