Author: mccaky Date: Wed Dec 10 17:18:32 2014 New Revision: 1679 Log: Updated event display so that saving a screen shot creates a file selection GUI instead of saving to the directory in which the program was initialized. Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/Viewer.java Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/Viewer.java ============================================================================= --- java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/Viewer.java (original) +++ java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/Viewer.java Wed Dec 10 17:18:32 2014 @@ -22,6 +22,7 @@ import javax.imageio.ImageIO; import javax.swing.JCheckBoxMenuItem; +import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; @@ -635,18 +636,28 @@ // Paint the content pane to image. getContentPane().paint(screenshot.getGraphics()); + JFileChooser chooser = new JFileChooser(); + if(chooser.showSaveDialog(this) == JFileChooser.CANCEL_OPTION) { + return; + } + + // Parse the file name and make sure that it ends in .PNG. + String filepath = chooser.getSelectedFile().getAbsolutePath(); + int index = filepath.lastIndexOf('.'); + if(index == -1) { filepath = filepath + ".png"; } + else { + if(filepath.substring(index + 1).compareTo("png") != 0) { + filepath = filepath.substring(0, index) + ".png"; + } + } + // 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"); - } + File imageFile = new File(filepath); // 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.err.println("Error saving file \"" + imageFile.getName() + "\"."); } System.out.println("Screenshot saved to: " + imageFile.getAbsolutePath()); }