LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

HPS-SVN Home

HPS-SVN Home

HPS-SVN  November 2014

HPS-SVN November 2014

Subject:

r1438 - in /java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui: PDataEventViewer.java PEventViewer.java PassiveViewer.java

From:

[log in to unmask]

Reply-To:

Notification of commits to the hps svn repository <[log in to unmask]>

Date:

Wed, 5 Nov 2014 14:12:14 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (380 lines)

Author: mccaky
Date: Wed Nov  5 06:12:11 2014
New Revision: 1438

Log:
Updated passive event display classes. Removed original key-bindings and added full menu support. Added filter panel access to PDataEventViewer to allow for cluster highlighting in monitoring application.

Modified:
    java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PDataEventViewer.java
    java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PEventViewer.java
    java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PassiveViewer.java

Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PDataEventViewer.java
 =============================================================================
--- java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PDataEventViewer.java	(original)
+++ java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PDataEventViewer.java	Wed Nov  5 06:12:11 2014
@@ -1,7 +1,17 @@
 package org.hps.monitoring.ecal.eventdisplay.ui;
 
 import java.awt.Point;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
 import java.io.IOException;
+import java.util.List;
+
+import javax.swing.JFrame;
+import javax.swing.JMenuItem;
+import javax.swing.KeyStroke;
 
 import org.hps.monitoring.ecal.eventdisplay.util.CrystalDataSet;
 import org.hps.monitoring.ecal.eventdisplay.util.EcalWiringManager;
@@ -39,6 +49,10 @@
     private static final int FIELD_CHANNEL = 10;
     private static final int FIELD_GAIN = 11;
     
+    // Filter panel components.
+    private JFrame filterWindow;
+    private CrystalFilterPanel filterPanel;
+    
     /**
      * Initializes a new <code>DataFileViewer</code> that reads from
      * the given event manager for event data and the given hardware
@@ -60,6 +74,59 @@
         for(String fieldName : fieldNames) {
             addStatusField(fieldName);
         }
+        
+        // Instantiate the crystal filter panel.
+        filterPanel = new CrystalFilterPanel(ewm);
+        filterWindow = new JFrame("Event Display Crystal Filter");
+        filterWindow.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
+        filterWindow.add(filterPanel);
+        filterWindow.pack();
+        filterWindow.setResizable(false);
+        
+        // Add a new view menu option to display the filter panel.
+        JMenuItem menuFilter = new JMenuItem("Show Filter", KeyEvent.VK_F);
+        menuFilter.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, ActionEvent.CTRL_MASK));
+        menuFilter.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) { filterWindow.setVisible(true); }
+        });
+        menu[MENU_VIEW].addSeparator();
+        menu[MENU_VIEW].add(menuFilter);
+        
+        // Add an action listener to note when the filter window applies
+        // a crystal filter.
+        filterPanel.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+            	// Suppress panel redrawing until the highlights are set.
+            	ecalPanel.setSuppressRedraw(true);
+            	
+                // Clear the panel highlighting.
+                ecalPanel.clearHighlight();
+                
+                // If the filter panel is active, highlight the crystals
+                // that passed the filter.
+                if(filterPanel.isActive()) {
+                    // Get the list of filtered crystals.
+                    List<Point> filterList = filterPanel.getFilteredCrystals();
+                    
+                    // Highlight each of the filtered crystals.
+                    for(Point crystal : filterList) {
+                        ecalPanel.setCrystalHighlight(toPanelPoint(crystal), java.awt.Color.WHITE);
+                    }
+                }
+                
+                // Redraw the highlights.
+                ecalPanel.setSuppressRedraw(false);
+                ecalPanel.repaint();
+            }
+        });
+        
+        // Kill the filter window on system close.
+        addWindowListener(new WindowAdapter() {
+            @Override
+            public void windowClosed(WindowEvent e) { filterWindow.dispose(); }
+        });
     }
     
     @Override

Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PEventViewer.java
 =============================================================================
--- java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PEventViewer.java	(original)
+++ java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PEventViewer.java	Wed Nov  5 06:12:11 2014
@@ -1,15 +1,7 @@
 package org.hps.monitoring.ecal.eventdisplay.ui;
 
-import java.awt.Color;
 import java.awt.Point;
-import java.awt.event.KeyEvent;
-import java.awt.event.KeyListener;
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.IOException;
 import java.util.ArrayList;
-
-import javax.imageio.ImageIO;
 
 import org.hps.monitoring.ecal.eventdisplay.event.Association;
 import org.hps.monitoring.ecal.eventdisplay.event.Cluster;
@@ -23,25 +15,10 @@
  */
 public class PEventViewer extends PassiveViewer {
     private static final long serialVersionUID = -7479125553259270894L;
-    // Stores whether the background color is set or not.
-    private boolean background = false;
     // Stores cluster objects.
     protected ArrayList<Cluster> clusterList = new ArrayList<Cluster>();
     // Stores hit objects.
     protected ArrayList<EcalHit> hitList = new ArrayList<EcalHit>();
-    
-    /**
-     * Creates a passive viewer for displaying hits and clusters in
-     * an event.
-     * @param fieldValues - Any additional status fields to display.
-     */
-    public PEventViewer() {
-        // Initialize the superclass.
-        super();
-        
-        // Set the key bindings.
-        addKeyListener(new EcalKeyListener());
-    }
     
     @Override
     public void addHit(EcalHit hit) { hitList.add(hit); }
@@ -105,67 +82,4 @@
         // Update the status panel to account for the new event.
         updateStatusPanel();
     }
-    
-    /**
-     * The <code>EcalListener</code> class binds keys to actions.
-     * Bound actions include:
-     * b             :: Toggle color-mapping for 0 energy crystals
-     * h             :: Toggle selected crystal highlighting
-     * l             :: Toggle logarithmic versus linear scaling
-     * s             :: Saves the current display to a file
-     **/
-    private class EcalKeyListener implements KeyListener {
-        @Override
-        public void keyPressed(KeyEvent e) { }
-        
-        @Override
-        public void keyReleased(KeyEvent e) {
-            // 'b' toggles the default white background.
-            if(e.getKeyCode() == 66) {
-                if(background) { ecalPanel.setDefaultCrystalColor(null); }
-                else { ecalPanel.setDefaultCrystalColor(Color.GRAY); }
-                background = !background;
-            }
-            
-            // 'h' toggles highlighting the crystal under the cursor.
-            else if(e.getKeyCode() == 72) { ecalPanel.setSelectionHighlighting(!ecalPanel.isSelectionEnabled()); }
-            
-            // 'l' toggles linear or logarithmic scaling.
-            else if(e.getKeyCode() == 76) {
-                if(ecalPanel.isScalingLinear()) { ecalPanel.setScalingLogarithmic(); }
-                else { ecalPanel.setScalingLinear(); }
-            }
-            
-            // 's' saves the panel to a file.
-            else if(e.getKeyCode() == 83) {
-                // Make a new buffered image on which to draw the content pane.
-                BufferedImage screenshot = new BufferedImage(getContentPane().getWidth(),
-                        getContentPane().getHeight(), BufferedImage.TYPE_INT_ARGB);
-                
-                // Paint the content pane to image.
-                getContentPane().paint(screenshot.getGraphics());
-                
-                // Get the lowest available file name.
-                int fileNum = 0;
-                File imageFile = new File("screenshot_" + fileNum + ".png");
-                while(imageFile.exists()) {
-                    fileNum++;
-                    imageFile = new File("screenshot_" + fileNum + ".png");
-                }
-                
-                // Save the image to a PNG file.
-                try { ImageIO.write(screenshot, "PNG", imageFile); }
-                catch(IOException ioe) {
-                    System.err.println("Error saving file \"screenshot.png\".");
-                }
-                System.out.println("Screenshot saved to: " + imageFile.getAbsolutePath());
-            }
-            
-            // Otherwise, print out the key code for the pressed key.
-            else { System.out.printf("Key Code: %d%n", e.getKeyCode()); }
-        }
-        
-        @Override
-        public void keyTyped(KeyEvent e) { }
-    }
 }

Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PassiveViewer.java
 =============================================================================
--- java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PassiveViewer.java	(original)
+++ java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PassiveViewer.java	Wed Nov  5 06:12:11 2014
@@ -1,13 +1,4 @@
 package org.hps.monitoring.ecal.eventdisplay.ui;
-
-import java.awt.Color;
-import java.awt.event.KeyEvent;
-import java.awt.event.KeyListener;
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.IOException;
-
-import javax.imageio.ImageIO;
 
 import org.hps.monitoring.ecal.eventdisplay.event.Cluster;
 import org.hps.monitoring.ecal.eventdisplay.event.EcalHit;
@@ -21,41 +12,20 @@
  */
 public abstract class PassiveViewer extends Viewer {
     private static final long serialVersionUID = -7479125553259270894L;
-    // Stores whether the background color is set or not.
-    private boolean background = false;
     
     /**
-     * <b>PassiveViewer</b><br/><br/>
-     * <code>public <b>PassiveViewer</b>(String... fieldValues)</code><br/><br/>
-     * @param fieldValues
-     */
-    public PassiveViewer() {
-        // Initialize the superclass.
-        super();
-        
-        // Set the key bindings.
-        addKeyListener(new EcalKeyListener());
-    }
-    
-    /**
-     * <b>addHit</b><br/><br/>
-     * <code>public void <b>addHit</b>(EcalHit hit)</code><br/><br/>
      * Adds a new hit to the display.
      * @param hit - The hit to be added.
      */
     public abstract void addHit(EcalHit hit);
     
     /**
-     * <b>addCluster</b><br/><br/>
-     * <code>public void <b>addCluster</b>(Cluster cluster)</code><br/><br/>
      * Adds a new cluster to the display.
      * @param cluster - The cluster to be added.
      */
     public abstract void addCluster(Cluster cluster);
     
     /**
-     * <b>resetDisplay</b><br/><br/>
-     * <code>public void <b>resetDisplay</b>()</code><br/><br/>
      * Clears any hits or clusters that have been added to the viewer.
      * Note that this does not automatically update the displayed panel.
      * <code>updateDisplay</code> must be called separately.
@@ -63,8 +33,6 @@
     public abstract void resetDisplay();
     
     /**
-     * <b>setScale</b><br/><br/>
-     * <code>public void <b>setScale</b>(int min, int max)</code><br/><br/>
      * Sets the upper and lower bounds of for the calorimeter display's
      * color mapping scale.
      * @param min - The lower bound.
@@ -76,8 +44,6 @@
     }
     
     /**
-     * <b>setScaleMaximum</b><br/><br/>
-     * <code>public void <b>setScaleMaximum</b>(int max)</code><br/><br/>
      * Sets the upper bound for the calorimeter display's color mapping
      * scale.
      * @param max - The upper bound.
@@ -85,8 +51,6 @@
     public void setScaleMaximum(int max) { ecalPanel.setScaleMaximum(max); }
     
     /**
-     * <b>setScaleMinimum</b><br/><br/>
-     * <code>public void <b>setScaleMinimum</b>(int min)</code><br/><br/>
      * Sets the lower bound for the calorimeter display's color mapping
      * scale.
      * @param min - The lower bound.
@@ -94,70 +58,8 @@
     public void setScaleMinimum(int min) { ecalPanel.setScaleMinimum(min); }
     
     /**
-     * <b>updateDisplay</b><br/><br/>
-     * <code>public void <b>updateDisplay</b>()</code><br/><br/>
      * Displays the hits and clusters added by the <code>addHit</code>
      * and <code>addCluster</code> methods.
      */
     public abstract void updateDisplay();
-    
-    /**
-     * The <code>EcalListener</code> class binds keys to actions.
-     * Bound actions include:
-     * b             :: Toggle color-mapping for 0 energy crystals
-     * h             :: Toggle selected crystal highlighting
-     * l             :: Toggle logarithmic versus linear scaling
-     * s             :: Saves the current display to a file
-     **/
-    private class EcalKeyListener implements KeyListener {
-        public void keyPressed(KeyEvent e) { }
-        
-        public void keyReleased(KeyEvent e) {
-            // 'b' toggles the default white background.
-            if(e.getKeyCode() == 66) {
-                if(background) { ecalPanel.setDefaultCrystalColor(null); }
-                else { ecalPanel.setDefaultCrystalColor(Color.GRAY); }
-                background = !background;
-            }
-            
-            // 'h' toggles highlighting the crystal under the cursor.
-            else if(e.getKeyCode() == 72) { ecalPanel.setSelectionHighlighting(!ecalPanel.isSelectionEnabled()); }
-            
-            // 'l' toggles linear or logarithmic scaling.
-            else if(e.getKeyCode() == 76) {
-                if(ecalPanel.isScalingLinear()) { ecalPanel.setScalingLogarithmic(); }
-                else { ecalPanel.setScalingLinear(); }
-            }
-            
-            // 's' saves the panel to a file.
-            else if(e.getKeyCode() == 83) {
-                // Make a new buffered image on which to draw the content pane.
-                BufferedImage screenshot = new BufferedImage(getContentPane().getWidth(),
-                        getContentPane().getHeight(), BufferedImage.TYPE_INT_ARGB);
-                
-                // Paint the content pane to image.
-                getContentPane().paint(screenshot.getGraphics());
-                
-                // Get the lowest available file name.
-                int fileNum = 0;
-                File imageFile = new File("screenshot_" + fileNum + ".png");
-                while(imageFile.exists()) {
-                    fileNum++;
-                    imageFile = new File("screenshot_" + fileNum + ".png");
-                }
-                
-                // Save the image to a PNG file.
-                try { ImageIO.write(screenshot, "PNG", imageFile); }
-                catch(IOException ioe) {
-                    System.err.println("Error saving file \"screenshot.png\".");
-                }
-                System.out.println("Screenshot saved to: " + imageFile.getAbsolutePath());
-            }
-            
-            // Otherwise, print out the key code for the pressed key.
-            else { System.out.printf("Key Code: %d%n", e.getKeyCode()); }
-        }
-        
-        public void keyTyped(KeyEvent e) { }
-    }
 }

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use