Print

Print


Commit in hps-java/src/main/java/org/lcsim/hps/monitoring on MAIN
ConnectionPanel.java+40-401.5 -> 1.6
MonitoringApplication.java+46-111.1 -> 1.2
MonitoringExample.java+117-1111.1 -> 1.2
SensorOccupancyPlotsDriver.java+11.5 -> 1.6
+204-162
4 modified files
more work on monitoring system

hps-java/src/main/java/org/lcsim/hps/monitoring
ConnectionPanel.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- ConnectionPanel.java	27 Mar 2012 03:18:21 -0000	1.5
+++ ConnectionPanel.java	27 Mar 2012 04:13:37 -0000	1.6
@@ -24,9 +24,6 @@
 
 // TODO Add status field of (connected|disconnected|connecting|timed out)
 class ConnectionPanel extends JPanel implements ActionListener {
-
-	//private JPanel fieldsPanel;
-	//private JPanel buttonsPanel;
 	
 	private JTextField etNameField;
     private JTextField hostField;
@@ -43,22 +40,15 @@
                     
     private ConnectionParameters connectionParameters;
         
-    private boolean connectPressed = false;
+    private boolean connectRequested = false;    
+    private boolean disconnectRequested = false;
 
     ConnectionPanel() {
-        
+            	
         // Starting GUI values will be assigned from default connection parameters. 
         connectionParameters = new ConnectionParameters();
         
-        setLayout(new GridBagLayout());
-        
-        // Panel for labels and values.
-        //GridBagConstraints c = new GridBagConstraints();
-        //c.gridx = 0;
-        //c.gridy = 0;
-        //JPanel fieldsPanel = new JPanel();
-        //fieldsPanel.setLayout(new GridBagLayout());
-        //add(fieldsPanel, c);        
+        setLayout(new GridBagLayout());        
                      
         //
         // Define the fields.
@@ -260,7 +250,7 @@
         setConnectionParameters(new ConnectionParameters());
     }
 
-    public ConnectionParameters getConnectionParameters() {
+    ConnectionParameters getConnectionParameters() {
         connectionParameters = new ConnectionParameters();
         connectionParameters.etName = etNameField.getText();
         connectionParameters.host = hostField.getText();
@@ -308,9 +298,9 @@
          
     public void actionPerformed(ActionEvent e) {
     	if ("connect".equals(e.getActionCommand())) {
-    		connect();
+    		setConnectRequested();
     	} else if ("disconnect".equals(e.getActionCommand())) {
-    		disconnect();
+    		setDisconnectRequested();    		
     	} else if ("saveConnection".equals(e.getActionCommand())) {
     		save();
     	} else if ("loadConnection".equals(e.getActionCommand())) {
@@ -320,24 +310,38 @@
     	}
     }
     
-    private void connect() {
-    	connectPressed = true;
-    	/*
-		connectButton.setEnabled(false);
-		disconnectButton.setEnabled(true);
-		loadButton.setEnabled(false);
-		resetButton.setEnabled(false);
-		*/
-    }
-    
-    private void disconnect() {
-    	connectPressed = false;
-    	/*
-		connectButton.setEnabled(true);
-		disconnectButton.setEnabled(false);
-		loadButton.setEnabled(true);
-		resetButton.setEnabled(true);
-		*/
+    private void setConnectRequested() {
+    	connectRequested = true;
+    	disconnectRequested = false;
+    	enableConnectionPanel(false);
+    }
+    
+    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);
+        statNameField.setEnabled(e);
+        chunkField.setEnabled(e);
+        qSizeField.setEnabled(e);
+        positionField.setEnabled(e);
+        ppositionField.setEnabled(e);
+        waitComboBox.setEnabled(e);
+        waitTimeField.setEnabled(e);
+    }
+    
+    boolean connectRequested() {
+    	return this.connectRequested;
+    }
+    
+    boolean disconnectRequested() {
+    	return this.disconnectRequested;
     }
     
     private void save() {
@@ -361,11 +365,7 @@
     private void reset() {
     	setConnectionParameters(new ConnectionParameters());
     }
-        
-    public boolean connectPressed() {
-    	return this.connectPressed;
-    }
-        
+                
     private void writePropertiesFile(File file) {
     	Properties prop = new Properties();
     	prop.setProperty("host", hostField.getText());

hps-java/src/main/java/org/lcsim/hps/monitoring
MonitoringApplication.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- MonitoringApplication.java	27 Mar 2012 03:18:21 -0000	1.1
+++ MonitoringApplication.java	27 Mar 2012 04:13:37 -0000	1.2
@@ -19,6 +19,7 @@
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
 
+//TODO Add connection status field = disconnected | connected | connecting
 public class MonitoringApplication extends JPanel implements ActionListener {
 	
 	private JTabbedPane tabs;
@@ -29,6 +30,16 @@
 	
 	private JMenuBar menuBar;
 	
+	JMenuItem connectItem;
+	JMenuItem disconnectItem;
+	JMenuItem resetConnectionItem;
+	JMenuItem connectionLoadItem;
+	JMenuItem connectionSaveItem;
+	JMenuItem exitItem;
+	JMenuItem resetEventsItem;
+	JMenuItem savePlotsItem;
+	JMenuItem resetDriversItem;
+	
 	final String connectCmd = "connect";
 	final String disconnectCmd = "disconnect";
 	final String saveConnectionCmd = "saveConnection";
@@ -54,37 +65,37 @@
 		JMenu connectionMenu = new JMenu("Connection");
 		menuBar.add(connectionMenu);
 		
-		JMenuItem connectItem = new JMenuItem("Connect");
+		connectItem = new JMenuItem("Connect");
 		connectItem.setMnemonic(KeyEvent.VK_C);
 		connectItem.setActionCommand(connectCmd);
 		connectItem.addActionListener(this);
 		connectionMenu.add(connectItem);
 		
-		JMenuItem disconnectItem = new JMenuItem("Disconnect");
+		disconnectItem = new JMenuItem("Disconnect");
 		disconnectItem.setMnemonic(KeyEvent.VK_D);
 		disconnectItem.setActionCommand(disconnectCmd);
 		disconnectItem.addActionListener(this);
 		connectionMenu.add(disconnectItem);
 		
-		JMenuItem resetConnectionItem = new JMenuItem("Reset Connection Settings");
+		resetConnectionItem = new JMenuItem("Reset Connection Settings");
 		resetConnectionItem.setMnemonic(KeyEvent.VK_R);
 		resetConnectionItem.setActionCommand(resetConnectionSettingsCmd);
 		resetConnectionItem.addActionListener(this);
 		connectionMenu.add(resetConnectionItem);
 				
-		JMenuItem connectionLoadItem = new JMenuItem("Load Connection...");
+		connectionLoadItem = new JMenuItem("Load Connection...");
 		connectionLoadItem.setMnemonic(KeyEvent.VK_L);
 		connectionLoadItem.setActionCommand(loadConnectionCmd);
 		connectionLoadItem.addActionListener(this);
 		connectionMenu.add(connectionLoadItem);
 		
-		JMenuItem connectionSaveItem = new JMenuItem("Save Connection...");
+		connectionSaveItem = new JMenuItem("Save Connection...");
 		connectionSaveItem.setMnemonic(KeyEvent.VK_S);
 		connectionSaveItem.setActionCommand(saveConnectionCmd);
 		connectionSaveItem.addActionListener(this);
 		connectionMenu.add(connectionSaveItem);
 		
-		JMenuItem exitItem = new JMenuItem("Exit");
+		exitItem = new JMenuItem("Exit");
 		exitItem.setMnemonic(KeyEvent.VK_X);
 		exitItem.setActionCommand(exitCmd);
 		exitItem.addActionListener(this);
@@ -93,7 +104,7 @@
 		JMenu eventMenu = new JMenu("Event");
 		menuBar.add(eventMenu);
 		
-		JMenuItem resetEventsItem = new JMenuItem("Reset Event Monitor");
+		resetEventsItem = new JMenuItem("Reset Event Monitor");
 		resetEventsItem.setMnemonic(KeyEvent.VK_E);
 		resetEventsItem.setActionCommand(resetEventsCmd);
 		resetEventsItem.addActionListener(this);
@@ -102,13 +113,13 @@
 		JMenu jobMenu = new JMenu("Job");
 		menuBar.add(jobMenu);
 		
-		JMenuItem savePlotsItem = new JMenuItem("Save Plots to AIDA File...");
+		savePlotsItem = new JMenuItem("Save Plots to AIDA File...");
 		savePlotsItem.setMnemonic(KeyEvent.VK_P);
 		savePlotsItem.setActionCommand("savePlots");
 		savePlotsItem.addActionListener(this);
 		jobMenu.add(savePlotsItem);		
 		
-		JMenuItem resetDriversItem = new JMenuItem("Reset LCSim Drivers");
+		resetDriversItem = new JMenuItem("Reset LCSim Drivers");
 		resetDriversItem.setMnemonic(KeyEvent.VK_D);
 		resetDriversItem.setActionCommand("resetDrivers");
 		resetDriversItem.addActionListener(this);
@@ -135,7 +146,7 @@
 		this.mgr = mgr;
 	}
 		
-	synchronized private void savePlots() {
+	synchronized void savePlots() {
         JFileChooser fc = new JFileChooser();
         int r = fc.showSaveDialog(this);
         if (r == JFileChooser.APPROVE_OPTION) {
@@ -148,7 +159,7 @@
         }
     }
 	
-	synchronized private void resetDrivers() {
+	synchronized void resetDrivers() {
 		 for (Driver driver : mgr.getDriverExecList()) {
 			 if (driver instanceof Resettable) {
 				 ((Resettable) driver).reset();
@@ -183,6 +194,30 @@
 	private void exit() {
 		System.exit(0);
 	}
+	
+	void disconnect() {		
+		// Enable or disable appropriate menu items.
+		connectItem.setEnabled(true);
+		disconnectItem.setEnabled(false);
+		resetConnectionItem.setEnabled(true);
+		connectionLoadItem.setEnabled(true);		
+		savePlotsItem.setEnabled(false);
+		
+		// Reset the LCSim Drivers, which should destroy Plotters.
+		resetDrivers();
+		
+		// Reenable the ConnectionPanel.
+		connectionPanel.enableConnectionPanel(true);
+	}
+	
+	void connect() {		
+		// Enable or disable appropriate menu items.
+		connectItem.setEnabled(false);
+		disconnectItem.setEnabled(true);
+		resetConnectionItem.setEnabled(false);
+		connectionLoadItem.setEnabled(false);
+		savePlotsItem.setEnabled(true);
+	}
 			
 	ConnectionPanel getConnectionPanel() {
 		return connectionPanel;

hps-java/src/main/java/org/lcsim/hps/monitoring
MonitoringExample.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- MonitoringExample.java	27 Mar 2012 03:18:21 -0000	1.1
+++ MonitoringExample.java	27 Mar 2012 04:13:37 -0000	1.2
@@ -21,14 +21,9 @@
 import org.lcsim.util.DriverAdapter;
 
 /**
- * This class is an example of an event consumer for an ET system.
- * 
- * Based on Carl Timmer's apps.Consumer class from jevio 4.0 release.
- *
+ * This is an example monitoring application using the classes from the org.lcsim.hps.monitoring package. 
  * @author Jeremy McCormick
  */
-// TODO Move the code that wraps Driver and event loop into the JobControlManager.
-// TODO Add connection status field = disconnected | connected | connecting
 public class MonitoringExample {
     
     private static final String defaultDetectorName = "HPS-Test-JLAB-v4pt0";
@@ -59,109 +54,120 @@
     	jobPanel.setDetectorName(defaultDetectorName);
     	jobPanel.setSteeringFile(defaultSteeringFile);
     	
-        // Wait for connection via GUI.
-        ConnectionPanel connectionPanel = gui.getConnectionPanel();
-        while (!connectionPanel.connectPressed()) {
-        	try { Thread.sleep(1000); } catch (InterruptedException e)  {};
-        }        
-        ConnectionParameters cn = connectionPanel.getConnectionParameters();
-        
-        // Try block is mostly for EtExceptions and friends.
-        try {        	
-        	       
-        	// Setup connection to ET system.
-        	EtConnection et = EtConnection.makeEtConnection(cn);
-        	EtSystem sys = et.getEtSystem();
-        	EtAttachment att = et.getEtAttachment();   
-        	                        
-            // Job manager to run LCSim.
-            String steeringFile = jobPanel.getSteeringFile();
-            jobMgr = new JobControlManager();
-            jobMgr.checkInputFiles(false);
-            InputStream is = this.getClass().getResourceAsStream(steeringFile);
-            jobMgr.setup(is);
-            
-            // Set ref to JobControlManager in GUI so resetting works.
-            gui.setJobControlManager(jobMgr);
-                                    
-            // Make a DriverAdapter for wrapping event loop.
-            DriverAdapter driverAdapter = jobMgr.getDriverAdapter();
-                                    
-            // Call wrapper to startOfData() on DriverAdapter.
-            driverAdapter.configure(null);
-                        
-            // Make the builder for creating LCSim events from EVIO data.
-            String detectorName = jobPanel.getDetectorName();
-            LCSimEventBuilder eventBuilder = new LCSimEventBuilder(detectorName);
-            eventBuilder.setDebug(false);
-                                                
-            // Start job timer.
-            EventPanel eventPanel = gui.getEventPanel();
-            eventPanel.updateJobStartTime();
-
-            // array of events
-            EtEvent[] mevs = null;
-            
-            // EtEvent loop.
-            while (true) { 
-                try {           
-                	// Choose wait or sleep mode depending on connection settings.
-                	if (cn.waitMode == WaitMode.WAIT) {
-                		mevs = sys.getEvents(att, Mode.TIMED, Modify.NOTHING, cn.waitTime, cn.chunk);
-                	} else {
-                		mevs = sys.getEvents(att, Mode.SLEEP, Modify.NOTHING, 0, cn.chunk);
-                	}
-                	
-                    // Loop over retrieved EtEvents.
-                    for (EtEvent mev : mevs) {
-
-                    	// Update GUI's event count.
-                    	eventPanel.updateEventCount();                    
-
-                    	// Get EvioEvent and check for errors.
-                    	ByteBuffer buf = mev.getDataBuffer();
-                    	EvioReader reader = new EvioReader(buf);
-                    	EvioEvent evioEvent = null;
-                    	try {
-                    		evioEvent = reader.parseNextEvent();
-                    	} catch (java.nio.BufferUnderflowException e) {
-                    		// Error will be caught by subsequent check on null event.
-                    	}
-                    	if (evioEvent == null) {
-                    		eventPanel.updateBadEventCount();
-                    		continue;
-                    	}
-
-                    	// Create LCSim event from EVIO data.
-                    	EventHeader lcsimEvent = eventBuilder.makeLCSimEvent(evioEvent);
-
-                    	// Make a new event for DriverAdapter.
-                    	RecordSuppliedEvent loopEvent = new RecordSuppliedEvent(new Object(), lcsimEvent);
-
-                    	// Call process methods via Driver Adapter.
-                    	driverAdapter.recordSupplied(loopEvent);
-
-                    	// Update the average event rate.
-                    	eventPanel.updateAverageEventRate();                    
-
-                    	// Update elapsed time.
-                    	eventPanel.updateElapsedTime();
-                }
-                    
-                // Put events back into the ET system.
-                sys.putEvents(att, mevs);   
-                
-                } catch (EtTimeoutException e) {
-                    System.out.println("ET Consumer timed out.");
-                    driverAdapter.finish(null);
-                    System.out.println("Press ENTER to exit ...");
-                    System.console().readLine();
-                    System.exit(0);
-                }
-            }
-        } catch (Exception ex) {
-            System.out.println("Error using ET system as consumer.");
-            ex.printStackTrace();
-        }
-    }      
+    	// Get ConnectionPanel which can be used to connect/disconnect from ET system.
+		ConnectionPanel connectionPanel = gui.getConnectionPanel();
+    	
+    	// GUI loop.  Use 'Exit' command from GUI to quit.
+    	while (true) {
+
+    		// Wait for connection to be requested via GUI.
+    		while (!connectionPanel.connectRequested()) {
+    			try { Thread.sleep(1000); } catch (InterruptedException e)  {};
+    		}        
+    		ConnectionParameters cn = connectionPanel.getConnectionParameters();
+    		    		
+    		// This makes sure applicable menu items are enabled/disabled.
+    		gui.connect();
+
+    		// Try block is mostly for EtExceptions and friends.
+    		try {        	
+
+    			// Setup connection to ET system.
+    			EtConnection et = EtConnection.makeEtConnection(cn);
+    			EtSystem sys = et.getEtSystem();
+    			EtAttachment att = et.getEtAttachment();   
+
+    			// Job manager to run LCSim.
+    			String steeringFile = jobPanel.getSteeringFile();
+    			jobMgr = new JobControlManager();
+    			jobMgr.checkInputFiles(false);
+    			InputStream is = this.getClass().getResourceAsStream(steeringFile);
+    			jobMgr.setup(is);
+
+    			// Set ref to JobControlManager in GUI so resetting works.
+    			gui.setJobControlManager(jobMgr);
+
+    			// Make a DriverAdapter for wrapping event loop.
+    			DriverAdapter driverAdapter = jobMgr.getDriverAdapter();
+
+    			// Call wrapper to startOfData() on DriverAdapter.
+    			driverAdapter.configure(null);
+
+    			// Make the builder for creating LCSim events from EVIO data.
+    			String detectorName = jobPanel.getDetectorName();
+    			LCSimEventBuilder eventBuilder = new LCSimEventBuilder(detectorName);
+    			eventBuilder.setDebug(false);
+
+    			// Start job timer.
+    			EventPanel eventPanel = gui.getEventPanel();
+    			eventPanel.updateJobStartTime();
+
+    			// array of events
+    			EtEvent[] mevs = null;
+
+    			// EtEvent loop.
+    			while (true) { 
+    				try {           
+    					// Choose wait or sleep mode depending on connection settings.
+    					if (cn.waitMode == WaitMode.WAIT) {
+    						mevs = sys.getEvents(att, Mode.TIMED, Modify.NOTHING, cn.waitTime, cn.chunk);
+    					} else {
+    						mevs = sys.getEvents(att, Mode.SLEEP, Modify.NOTHING, 0, cn.chunk);
+    					}
+
+    					// Loop over retrieved EtEvents.
+    					for (EtEvent mev : mevs) {
+
+    						// Update GUI's event count.
+    						eventPanel.updateEventCount();                    
+
+    						// Get EvioEvent and check for errors.
+    						ByteBuffer buf = mev.getDataBuffer();
+    						EvioReader reader = new EvioReader(buf);
+    						EvioEvent evioEvent = null;
+    						try {
+    							evioEvent = reader.parseNextEvent();
+    						} catch (java.nio.BufferUnderflowException e) {
+    							// Error will be caught by subsequent check on null event.
+    						}
+    						if (evioEvent == null) {
+    							eventPanel.updateBadEventCount();
+    							continue;
+    						}
+
+    						// Create LCSim event from EVIO data.
+    						EventHeader lcsimEvent = eventBuilder.makeLCSimEvent(evioEvent);
+
+    						// Supply record to Driver Adapter.
+    						driverAdapter.recordSupplied(new RecordSuppliedEvent(new Object(), lcsimEvent));
+
+    						// Update the average event rate.
+    						eventPanel.updateAverageEventRate();                    
+
+    						// Update elapsed time.
+    						eventPanel.updateElapsedTime();
+    					}
+
+    					// Put events back into the ET system.
+    					sys.putEvents(att, mevs);   
+    					
+    					// Break out of event loop if GUI wants disconnect. 
+    					if (connectionPanel.disconnectRequested()) {
+    						System.out.println("Disconnect requested.  Breaking out of event loop.");
+    						gui.disconnect();
+    						break;
+    					}
+
+    				} catch (EtTimeoutException e) {
+    					System.out.println("ET Consumer timed out.");
+    					driverAdapter.finish(null);
+    					break;
+    				}
+    			}
+    		} catch (Exception ex) {
+    			System.out.println("Error using ET system as consumer.");
+    			ex.printStackTrace();
+    		}
+    	}      
+    }
 }
\ No newline at end of file

hps-java/src/main/java/org/lcsim/hps/monitoring
SensorOccupancyPlotsDriver.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- SensorOccupancyPlotsDriver.java	27 Mar 2012 03:18:21 -0000	1.5
+++ SensorOccupancyPlotsDriver.java	27 Mar 2012 04:13:37 -0000	1.6
@@ -154,6 +154,7 @@
     }
     
     public void reset() {
+    	occuPlotter.hide();
         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