hps-java/src/main/java/org/lcsim/hps/monitoring
diff -u -r1.12 -r1.13
--- ConnectionPanel.java 8 Apr 2012 23:48:11 -0000 1.12
+++ ConnectionPanel.java 18 Apr 2012 19:52:15 -0000 1.13
@@ -1,16 +1,9 @@
package org.lcsim.hps.monitoring;
-import static org.lcsim.hps.monitoring.MonitoringCommands.connectCmd;
-import static org.lcsim.hps.monitoring.MonitoringCommands.disconnectCmd;
-import static org.lcsim.hps.monitoring.MonitoringCommands.loadConnectionCmd;
-import static org.lcsim.hps.monitoring.MonitoringCommands.resetConnectionSettingsCmd;
-import static org.lcsim.hps.monitoring.MonitoringCommands.saveConnectionCmd;
-
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@@ -28,13 +21,13 @@
import org.jlab.coda.et.enums.Mode;
-class ConnectionPanel extends JPanel implements ActionListener {
+class ConnectionPanel extends JPanel {
JTextField etNameField;
JTextField hostField;
JTextField portField;
- JCheckBox blockingField;
- JCheckBox verboseField;
+ JCheckBox blockingCheckBox;
+ JCheckBox verboseCheckBox;
JTextField statNameField;
JTextField chunkField;
JTextField qSizeField;
@@ -126,8 +119,8 @@
c.gridx = 1;
c.gridy = 3;
c.anchor = GridBagConstraints.EAST;
- blockingField = new JCheckBox();
- add(blockingField, c);
+ blockingCheckBox = new JCheckBox();
+ add(blockingCheckBox, c);
c = new GridBagConstraints();
c.gridx = 0;
@@ -141,8 +134,8 @@
c.gridx = 1;
c.gridy = 4;
c.anchor = GridBagConstraints.EAST;
- verboseField = new JCheckBox();
- add(verboseField, c);
+ verboseCheckBox = new JCheckBox();
+ add(verboseCheckBox, c);
c = new GridBagConstraints();
c.gridx = 0;
@@ -283,8 +276,8 @@
connectionParameters.etName = etNameField.getText();
connectionParameters.host = hostField.getText();
connectionParameters.port = Integer.parseInt(portField.getText());
- connectionParameters.blocking = blockingField.isSelected();
- connectionParameters.verbose = verboseField.isSelected();
+ connectionParameters.blocking = blockingCheckBox.isSelected();
+ connectionParameters.verbose = verboseCheckBox.isSelected();
connectionParameters.statName = statNameField.getText();
connectionParameters.chunk = Integer.parseInt(chunkField.getText());
connectionParameters.qSize = Integer.parseInt(qSizeField.getText());
@@ -326,8 +319,8 @@
etNameField.setText(cn.etName);
hostField.setText(cn.host);
portField.setText(Integer.toString(cn.port));
- blockingField.setSelected(cn.blocking);
- verboseField.setSelected(cn.verbose);
+ blockingCheckBox.setSelected(cn.blocking);
+ verboseCheckBox.setSelected(cn.verbose);
statNameField.setText(cn.statName);
chunkField.setText(Integer.toString(cn.chunk));
qSizeField.setText(Integer.toString(cn.qSize));
@@ -339,34 +332,12 @@
this.connectionParameters = cn;
}
- /*
- void setConnectRequested(boolean b) {
- this.connectRequested = false;
- }
-
- void setDisconnectRequested(boolean b) {
- this.disconnectRequested = false;
- }
-
- private void setConnectRequested() {
- connectRequested = true;
- disconnectRequested = false;
- enableConnectionPanel(false);
- }
- */
-
- // FIXME Somehow this needs to interrupt if events are being fetched in Mode.SLEEP or we will never wake-up.
- //private void setDisconnectRequested() {
- // disconnectRequested = true;
- // connectRequested = false;
- //}
-
void enableConnectionPanel(boolean e) {
etNameField.setEnabled(e);
hostField.setEnabled(e);
portField.setEnabled(e);
- blockingField.setEnabled(e);
- verboseField.setEnabled(e);
+ blockingCheckBox.setEnabled(e);
+ verboseCheckBox.setEnabled(e);
statNameField.setEnabled(e);
chunkField.setEnabled(e);
qSizeField.setEnabled(e);
@@ -377,32 +348,12 @@
prescaleField.setEnabled(e);
}
- //boolean connectRequested() {
- // return this.connectRequested;
- //}
-
- //boolean disconnectRequested() {
- // return this.disconnectRequested;
- //}
-
- // FIXME These strings should be changed to constants. If there are duplications
- // with MonitorinApplication then move to common class like MonitoringCommands.
+ // FIXME: Move the event handling to MonitoringApplication.
public void actionPerformed(ActionEvent e) {
- //if (connectCmd.equals(e.getActionCommand())) {
- // setConnectRequested();
- //} else if (disconnectCmd.equals(e.getActionCommand())) {
- // setDisconnectRequested();
- //} else
- if (saveConnectionCmd.equals(e.getActionCommand())) {
- save();
- } else if (loadConnectionCmd.equals(e.getActionCommand())) {
- load();
- } else if (resetConnectionSettingsCmd.equals(e.getActionCommand())) {
- reset();
- }
+
}
- private void save() {
+ void save() {
JFileChooser fc = new JFileChooser();
int r = fc.showSaveDialog(ConnectionPanel.this);
if (r == JFileChooser.APPROVE_OPTION) {
@@ -411,7 +362,7 @@
}
}
- private void load() {
+ void load() {
JFileChooser fc = new JFileChooser();
int r = fc.showOpenDialog(ConnectionPanel.this);
if (r == JFileChooser.APPROVE_OPTION) {
@@ -420,7 +371,7 @@
}
}
- private void reset() {
+ void reset() {
setConnectionParameters(new ConnectionParameters());
}
@@ -429,8 +380,8 @@
prop.setProperty("etName", etNameField.getText());
prop.setProperty("host", hostField.getText());
prop.setProperty("port", portField.getText());
- prop.setProperty("blocking", blockingField.getText());
- prop.setProperty("verbose", verboseField.getText());
+ prop.setProperty("blocking", Boolean.toString(blockingCheckBox.isSelected()));
+ prop.setProperty("verbose", Boolean.toString(verboseCheckBox.isSelected()));
prop.setProperty("statName", statNameField.getText());
prop.setProperty("chunk", chunkField.getText());
prop.setProperty("qSize", qSizeField.getText());
@@ -467,8 +418,8 @@
etNameField.setText(prop.getProperty("etName"));
hostField.setText(prop.getProperty("host"));
portField.setText(prop.getProperty("port"));
- blockingField.setText(prop.getProperty("blocking"));
- verboseField.setText(prop.getProperty("verbose"));
+ blockingCheckBox.setSelected(Boolean.parseBoolean(prop.getProperty("blocking")));
+ verboseCheckBox.setSelected(Boolean.parseBoolean(prop.getProperty("verbose")));
statNameField.setText(prop.getProperty("statName"));
chunkField.setText(prop.getProperty("chunk"));
qSizeField.setText(prop.getProperty("qSize"));
hps-java/src/main/java/org/lcsim/hps/monitoring
diff -u -r1.6 -r1.7
--- EventPanel.java 13 Apr 2012 00:56:42 -0000 1.6
+++ EventPanel.java 18 Apr 2012 19:52:15 -0000 1.7
@@ -3,8 +3,6 @@
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import javax.swing.JLabel;
@@ -12,7 +10,7 @@
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
-class EventPanel extends JPanel implements ActionListener {
+class EventPanel extends JPanel {
private JTextField eventCounterField; // number of events in this job, can be reset via menu
private JTextField elapsedTimeField; // elapsed time between job start or reset command
@@ -27,7 +25,6 @@
private static final int defaultEventRefresh = 100;
private int eventRefresh = defaultEventRefresh;
- private long jobStartTime;
private int eventCount;
private int badEventCount;
private int sessionSupplied;
@@ -217,7 +214,7 @@
});
}
- void updateAverageEventRate() {
+ void updateAverageEventRate(long jobStartTime) {
if (updateEvent) {
double jobTime = System.currentTimeMillis() - jobStartTime;
if (jobTime > 0) {
@@ -231,25 +228,15 @@
}
}
}
-
- void updateElapsedTime() {
- if (updateEvent) {
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- elapsedTimeField.setText(Long.toString((System.currentTimeMillis() - jobStartTime)/1000));
- }
- });
- }
- }
-
- // FIXME: Move this to MonitoringApplicationActionListener.
- public void actionPerformed(ActionEvent e) {
- String cmd = e.getActionCommand();
- if (MonitoringCommands.resetEventsCmd.equals(cmd)) {
- reset();
- }
+
+ void setElapsedTime(final long time) {
+ SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ elapsedTimeField.setText(Long.toString(time));
+ }
+ });
}
-
+
void setEventRefresh(final int eventRefresh) {
this.eventRefresh = eventRefresh;
SwingUtilities.invokeLater(new Runnable() {
@@ -264,7 +251,6 @@
resetBadEventCount();
resetAverageEventRate();
resetElapsedTime();
- resetJobStartTime();
}
private void resetEventCount() {
@@ -284,10 +270,6 @@
});
}
- private void resetJobStartTime() {
- jobStartTime = System.currentTimeMillis();
- }
-
private void resetAverageEventRate() {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
hps-java/src/main/java/org/lcsim/hps/monitoring
diff -u -r1.18 -r1.19
--- MonitoringApplication.java 17 Apr 2012 23:25:36 -0000 1.18
+++ MonitoringApplication.java 18 Apr 2012 19:52:15 -0000 1.19
@@ -13,6 +13,7 @@
import static org.lcsim.hps.monitoring.MonitoringCommands.savePlotsCmd;
import static org.lcsim.hps.monitoring.MonitoringCommands.screenshotCmd;
import static org.lcsim.hps.monitoring.MonitoringCommands.terminalCmd;
+import static org.lcsim.hps.monitoring.MonitoringCommands.updateTimerCmd;
import java.awt.AWTException;
import java.awt.Dimension;
@@ -42,6 +43,7 @@
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
+import javax.swing.Timer;
import org.jlab.coda.et.EtAttachment;
import org.jlab.coda.et.EtEvent;
@@ -109,6 +111,10 @@
private LCSimEventBuilder eventBuilder;
private MonitoringApplicationActionListener actionListener;
+
+ private Timer timer;
+
+ private long jobStartTime;
public static final class JobParameters {
private String detectorName;
@@ -145,18 +151,6 @@
else if (disconnectCmd.equals(cmd)) {
app.disconnect(ConnectionStatus.DISCONNECTING);
}
- else if (saveConnectionCmd.equals(cmd)) {
- app.connectionPanel.actionPerformed(e);
- }
- else if (loadConnectionCmd.equals(cmd)) {
- app.connectionPanel.actionPerformed(e);
- }
- else if (resetConnectionSettingsCmd.equals(cmd)) {
- app.connectionPanel.actionPerformed(e);
- }
- else if (resetEventsCmd.equals(cmd)) {
- app.eventPanel.actionPerformed(e);
- }
else if (eventRefreshCmd.equals(cmd)) {
app.setEventRefresh();
}
@@ -178,6 +172,21 @@
else if (exitCmd.equals(cmd)) {
app.exit();
}
+ else if (updateTimerCmd.equals(cmd)) {
+ app.updateTime();
+ }
+ else if (resetEventsCmd.equals(cmd)) {
+ app.resetJob();
+ }
+ else if (saveConnectionCmd.equals(e.getActionCommand())) {
+ app.connectionPanel.save();
+ }
+ else if (loadConnectionCmd.equals(e.getActionCommand())) {
+ app.connectionPanel.load();
+ }
+ else if (resetConnectionSettingsCmd.equals(e.getActionCommand())) {
+ app.connectionPanel.reset();
+ }
}
}
@@ -546,6 +555,9 @@
// This is only reset between different jobs (disconnects).
eventPanel.resetSessionSupplied();
+
+ // Start the job timer.
+ startTimer();
// Start the event processing loop.
int status = eventLoop();
@@ -572,6 +584,8 @@
private void stopJob() {
if (jobManager != null)
jobManager.finish();
+ timer.stop();
+ timer = null;
}
private void startEvent() {
@@ -581,10 +595,10 @@
private void endEvent() {
// Update the average event rate.
- eventPanel.updateAverageEventRate();
+ eventPanel.updateAverageEventRate(jobStartTime);
// Update elapsed time.
- eventPanel.updateElapsedTime();
+ //eventPanel.updateElapsedTime();
}
private void badEvent() {
@@ -864,4 +878,21 @@
}
}
}
+
+ private void startTimer() {
+ timer = new Timer(1000, actionListener);
+ timer.setActionCommand(updateTimerCmd);
+ jobStartTime = System.currentTimeMillis();
+ timer.start();
+ }
+
+ private void updateTime() {
+ final long elapsedTime = (System.currentTimeMillis() - jobStartTime)/1000;
+ eventPanel.setElapsedTime(elapsedTime);
+ }
+
+ private void resetJob() {
+ jobStartTime = System.currentTimeMillis();
+ eventPanel.reset();
+ }
}
\ No newline at end of file