hps-java/src/main/java/org/lcsim/hps/monitoring
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.");
}
/**