Print

Print


Author: [log in to unmask]
Date: Wed Apr  1 13:27:06 2015
New Revision: 2649

Log:
Fix saving plot tab to file.  HPSJAVA-479

Modified:
    java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/PlotInfoPanel.java
    java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/PlotPanel.java
    java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/model/RunModel.java

Modified: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/PlotInfoPanel.java
 =============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/PlotInfoPanel.java	(original)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/PlotInfoPanel.java	Wed Apr  1 13:27:06 2015
@@ -76,7 +76,7 @@
         Dimension filler = new Dimension(0, 10);
         
         // Save button.
-        saveButton = new JButton("Save Plots ...");
+        saveButton = new JButton("Save Current Plot Tab ...");
         saveButton.setActionCommand(Commands.SAVE_SELECTED_PLOTS);
         saveButton.setAlignmentX(CENTER_ALIGNMENT);
         leftPanel.add(saveButton);

Modified: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/PlotPanel.java
 =============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/PlotPanel.java	(original)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/PlotPanel.java	Wed Apr  1 13:27:06 2015
@@ -1,19 +1,24 @@
 package org.hps.monitoring.application;
 
 import hep.aida.IPlotter;
+import hep.aida.jfree.plotter.Plotter;
 
 import java.awt.BorderLayout;
 import java.awt.Component;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.IOException;
 
+import javax.imageio.ImageIO;
 import javax.swing.JFileChooser;
 import javax.swing.JPanel;
 import javax.swing.JTabbedPane;
+import javax.swing.filechooser.FileNameExtensionFilter;
 
 import org.hps.monitoring.application.util.DialogUtil;
+import org.hps.monitoring.plotting.ExportPdf;
 import org.hps.monitoring.plotting.MonitoringPlotFactory;
 
 /**
@@ -39,7 +44,7 @@
      * Get the indices of the current selected tabs.
      * @return The indices of the current tabs.
      */
-    int[] getSelectedTabs() {
+    int[] getSelectedTabIndices() {
         int[] indices = new int[2];
         indices[0] = plotPane.getSelectedIndex();
         Component component = plotPane.getSelectedComponent();
@@ -49,9 +54,13 @@
         return indices;
     }
     
+    Component getSelectedTab() {
+        return ((JTabbedPane) plotPane.getSelectedComponent()).getSelectedComponent();
+    }
+    
     public void actionPerformed(ActionEvent event) {
         if (event.getActionCommand().equals(Commands.SAVE_SELECTED_PLOTS)) {
-            int[] indices = getSelectedTabs();
+            int[] indices = getSelectedTabIndices();
             IPlotter plotter = MonitoringPlotFactory.getPlotterRegistry().find(indices[0], indices[1]);
             if (plotter != null) {
                 savePlotter(plotter);
@@ -61,20 +70,26 @@
         }
     }
             
-    static final String DEFAULT_FORMAT = "png";
     void savePlotter(IPlotter plotter) {
         JFileChooser fc = new JFileChooser();
         fc.setAcceptAllFileFilterUsed(false);
         fc.setDialogTitle("Save Plots - " + plotter.title());
         fc.setCurrentDirectory(new File("."));
+        fc.setAcceptAllFileFilterUsed(false);
+        fc.setFileFilter(new FileNameExtensionFilter("PNG file", "png"));
+        fc.addChoosableFileFilter(new FileNameExtensionFilter("JPG file", "jpg"));
+        fc.addChoosableFileFilter(new FileNameExtensionFilter("GIF file", "gif"));
         int r = fc.showSaveDialog(this);
         if (r == JFileChooser.APPROVE_OPTION) {                        
             String path = fc.getSelectedFile().getPath();
-            if (path.lastIndexOf(".") == -1) {
-                path += "." + DEFAULT_FORMAT;
+            FileNameExtensionFilter filter = (FileNameExtensionFilter) fc.getFileFilter();
+            if (!path.endsWith("." + filter.getExtensions()[0])) {
+                path += "." + filter.getExtensions()[0];
             }
+            BufferedImage image = ExportPdf.getImage(getSelectedTab());
             try {
-                plotter.writeToFile(path);
+                ImageIO.write(image, filter.getExtensions()[0], new File(path));
+                DialogUtil.showInfoDialog(this, "Plots Saved", "Plots from panel were saved to" + '\n' + path);
             } catch (IOException e) {
                 e.printStackTrace();
                 DialogUtil.showErrorDialog(this, "Error Saving Plots", "There was an error saving the plots.");

Modified: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/model/RunModel.java
 =============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/model/RunModel.java	(original)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/model/RunModel.java	Wed Apr  1 13:27:06 2015
@@ -42,11 +42,19 @@
         this.runNumber = runNumber;
         this.firePropertyChange(RUN_NUMBER_PROPERTY, oldValue, this.runNumber);
     }
+    
+    public int getRunNumber() {
+        return this.runNumber;
+    }
 
     public void setStartDate(Date startDate) {
         Date oldValue = this.startDate;
         this.startDate = startDate;
         this.firePropertyChange(START_DATE_PROPERTY, oldValue, this.startDate);
+    }
+    
+    public Date getStartDate() {
+        return startDate;
     }
 
     public void setEndDate(Date endDate) {
@@ -54,11 +62,19 @@
         this.endDate = endDate;
         this.firePropertyChange(END_DATE_PROPERTY, oldValue, this.endDate);
     }
+    
+    public Date getEndDate() {
+        return endDate;
+    }
 
     public void setRunLength(int runLength) {
         Integer oldValue = this.runLength;
         this.runLength = runLength;
         this.firePropertyChange(RUN_LENGTH_PROPERTY, oldValue, this.runLength);
+    }
+    
+    public int getRunLength() {
+        return runLength;
     }
 
     public void computeRunLength() {
@@ -74,11 +90,19 @@
         this.totalEvents = totalEvents;
         this.firePropertyChange(TOTAL_EVENTS_PROPERTY, oldValue, this.totalEvents);
     }
+    
+    public int getTotalEvents() {
+        return totalEvents;
+    }
 
     public void setEventsReceived(int eventsReceived) {
         Integer oldValue = this.eventsReceived;
         this.eventsReceived = eventsReceived;
         this.firePropertyChange(EVENTS_RECEIVED_PROPERTY, oldValue, this.eventsReceived);
+    }
+    
+    public int getEventsReceived() {
+        return eventsReceived;
     }
 
     public void setElapsedTime(int elapsedTime) {
@@ -86,11 +110,19 @@
         this.elapsedTime = elapsedTime;
         this.firePropertyChange(ELAPSED_TIME_PROPERTY, oldValue, this.elapsedTime);
     }
+    
+    public int getElapsedTime() {
+        return elapsedTime;
+    }
 
     public void setDataReceived(double dataReceived) {
         Double oldValue = this.dataReceived;
         this.dataReceived = dataReceived;
         this.firePropertyChange(DATA_RECEIVED_PROPERTY, oldValue, this.dataReceived);
+    }
+    
+    public double getDataReceived() {
+        return dataReceived;
     }
 
     public void addDataReceived(double addDataReceived) {
@@ -103,16 +135,28 @@
         this.firePropertyChange(EVENT_NUMBER_PROPERTY, oldValue, this.eventNumber);
     }
     
+    public int getEventNumber() {
+        return eventNumber;
+    }
+    
     public void setDataRate(double dataRate) {
         Double oldValue = this.dataRate;
         this.dataRate = dataRate;
         this.firePropertyChange(DATA_RATE_PROPERTY, oldValue, this.dataRate);
+    }
+    
+    public double getDataRate() {
+        return dataRate;
     }
         
     public void setEventRate(double eventRate) {
         Double oldValue = this.eventRate;
         this.eventRate = eventRate;
         this.firePropertyChange(EVENT_RATE_PROPERTY, oldValue, this.eventRate);
+    }
+    
+    public double getEventRate() {
+        return eventRate;
     }
     
     public void reset() {
@@ -124,5 +168,5 @@
         setRunNumber(0);
         setStartDate(null);
         setTotalEvents(0);
-    }
+    }    
 }