Changeset 7789


Ignore:
Timestamp:
10/13/11 15:54:01 (8 years ago)
Author:
curtis
Message:

Add bounding box toggle and snapshot features.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/projects/visbio-plugins/src/main/java/loci/visbio/OrthoStack.java

    r7788 r7789  
    3939import ij.ImageStack; 
    4040import ij.WindowManager; 
     41import ij.io.FileSaver; 
     42import ij.io.SaveDialog; 
    4143import ij.plugin.PlugIn; 
    4244import ij.process.ImageProcessor; 
     
    4850import java.awt.MediaTracker; 
    4951import java.awt.Toolkit; 
     52import java.awt.event.ActionEvent; 
     53import java.awt.event.ActionListener; 
    5054import java.awt.event.AdjustmentEvent; 
    5155import java.awt.event.AdjustmentListener; 
     
    5357import java.awt.event.WindowListener; 
    5458import java.awt.image.BufferedImage; 
     59import java.io.File; 
    5560import java.rmi.RemoteException; 
    5661 
     62import javax.swing.JButton; 
     63import javax.swing.JCheckBox; 
    5764import javax.swing.JFrame; 
    5865import javax.swing.JLabel; 
     
    8087 * @author Curtis Rueden 
    8188 */ 
    82 public class OrthoStack extends JPanel implements PlugIn, AdjustmentListener, 
    83         WindowListener 
     89public class OrthoStack extends JPanel implements PlugIn, ActionListener, 
     90        AdjustmentListener, WindowListener 
    8491{ 
    8592 
     
    108115        private DoubleSlider angleSlider; 
    109116        private DoubleSlider zoomSlider; 
     117        private JCheckBox boundingBoxToggle; 
     118        private JButton snapshotButton; 
    110119 
    111120        public ImagePlus getImagePlus() { 
     
    194203                zoomSlider.addAdjustmentListener(this); 
    195204 
     205                // create bounding box checkbox 
     206                boundingBoxToggle = new JCheckBox("Show bounding box", true); 
     207                boundingBoxToggle.addActionListener(this); 
     208 
     209                snapshotButton = new JButton("Take snapshot"); 
     210                snapshotButton.addActionListener(this); 
     211 
    196212                // build a panel to house the sliders 
    197213                final JPanel sliderPanel = new JPanel(); 
    198214                final String layout = "fillx,wrap 2"; 
    199215                final String cols = "[pref|200px,fill,grow]"; 
    200                 final String rows = "[pref|pref|pref]"; 
     216                final String rows = "[pref|pref|pref|pref|pref]"; 
    201217                sliderPanel.setLayout(new MigLayout(layout, cols, rows)); 
    202218                sliderPanel.add(stretchLabel); 
     
    206222                sliderPanel.add(zoomLabel); 
    207223                sliderPanel.add(zoomSlider); 
     224                sliderPanel.add(boundingBoxToggle, "span 2"); 
     225                sliderPanel.add(snapshotButton, "span 2"); 
    208226 
    209227                // add components to main panel 
     
    213231 
    214232                updateProjection(); 
     233        } 
     234 
     235        public void setBoundingBox(final boolean selected) { 
     236                try { 
     237                        display.getDisplayRenderer().setBoxOn(selected); 
     238                } 
     239                catch (final RemoteException exc) { 
     240                        IJ.handleException(exc); 
     241                } 
     242                catch (final VisADException exc) { 
     243                        IJ.handleException(exc); 
     244                } 
     245        } 
     246 
     247        public BufferedImage getSnapshot() { 
     248                return display.getImage(); 
     249        } 
     250 
     251        public void saveSnapshot() { 
     252                // prompt for filename to save 
     253                final SaveDialog saveDialog = 
     254                        new SaveDialog("Save Snapshot", imp.getTitle(), ".png"); 
     255                final String directory = saveDialog.getDirectory(); 
     256                final String fileName = saveDialog.getFileName(); 
     257                final File file = new File(directory, fileName); 
     258 
     259                // save snapshot 
     260                final BufferedImage snapshot = getSnapshot(); 
     261                final ImagePlus impSnapshot = new ImagePlus(fileName, snapshot); 
     262                final FileSaver fileSaver = new FileSaver(impSnapshot); 
     263                fileSaver.saveAsPng(file.getPath()); 
    215264        } 
    216265 
     
    236285 
    237286                // add ortho stack to a window frame 
    238                 final JFrame frame = new JFrame(getImagePlus().getTitle()); 
     287                final String title = "Ortho Stack - " + getImagePlus().getTitle(); 
     288                final JFrame frame = new JFrame(title); 
    239289                frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); 
    240290                frame.addWindowListener(this); 
     
    246296                frame.setSize(frame.getWidth(), 9 * screenSize.height / 10); 
    247297                frame.setVisible(true); 
     298        } 
     299 
     300        // -- ActionListener methods -- 
     301 
     302        @Override 
     303        public void actionPerformed(final ActionEvent e) { 
     304                final Object src = e.getSource(); 
     305                if (src == boundingBoxToggle) { 
     306                        setBoundingBox(boundingBoxToggle.isSelected()); 
     307                } 
     308                else if (src == snapshotButton) { 
     309                        saveSnapshot(); 
     310                } 
    248311        } 
    249312 
Note: See TracChangeset for help on using the changeset viewer.