package com.indago.iddea.view.component;
import ij.ImagePlus;
import ij.io.Opener;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import net.imglib2.RandomAccessibleInterval;
import net.imglib2.converter.Converters;
import net.imglib2.converter.RealDoubleConverter;
import net.imglib2.img.ImagePlusAdapter;
import net.imglib2.img.Img;
import net.imglib2.type.numeric.real.DoubleType;
import net.imglib2.view.Views;
/**
* SamplePanel for demonstrating IDDEA component.
*
* @author HongKee Moon
* @version 0.1beta
* @since 9/4/13
*/
public class SamplePanel extends JPanel implements ActionListener {
IddeaComponent annotator;
private final JButton bLoad;
private final JButton bLoad2;
private final JButton bLoad3;
public SamplePanel()
{
super(new BorderLayout());
annotator = new IddeaComponent();
annotator.setToolBarLocation(BorderLayout.WEST);
annotator.setToolBarVisible(true);
annotator.setPreferredSize(new Dimension(300, 200));
final JPanel p = new JPanel();
p.setLayout(new FlowLayout());
bLoad = new JButton("Load clown");
bLoad.addActionListener(this);
p.add(bLoad);
bLoad2 = new JButton("Load t1-head");
bLoad2.addActionListener(this);
p.add(bLoad2);
bLoad3 = new JButton("Load confocal-series");
bLoad3.addActionListener(this);
p.add(bLoad3);
add(annotator, BorderLayout.CENTER);
add(p, BorderLayout.NORTH);
}
public static void main( final String[] args ) {
final SamplePanel panel = new SamplePanel();
final JFrame f = new JFrame();
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
f.getContentPane().add(panel);
f.setSize(800, 600);
f.setVisible( true );
}
@Override
public void actionPerformed(final ActionEvent actionEvent) {
if(actionEvent.getSource().equals(bLoad))
{
final File file = new File( "/Users/moon/Documents/clown.tif" );
// open a file with ImageJ
final ImagePlus imp = new Opener().openImage( file.getAbsolutePath() );
// wrap it into an ImgLib image (no copying)
final Img<DoubleType> image = ImagePlusAdapter.wrap(imp);
final RandomAccessibleInterval imgOrig = Converters.convert( ( RandomAccessibleInterval ) Views.interval(image, image),
new RealDoubleConverter(), new DoubleType());
annotator.setPreferredSize(new Dimension(imp.getWidth(), imp.getHeight()));
annotator.setDoubleTypeSourceImage(Views.interval(imgOrig, imgOrig));
}
else if(actionEvent.getSource().equals(bLoad2))
{
final File file = new File( "/Users/moon/Pictures/t1-head.tif" );
// open a file with ImageJ
final ImagePlus imp = new Opener().openImage( file.getAbsolutePath() );
// wrap it into an ImgLib image (no copying)
final Img<DoubleType> image = ImagePlusAdapter.wrap(imp);
final RandomAccessibleInterval imgOrig = Converters.convert( ( RandomAccessibleInterval ) Views.interval(image, image),
new RealDoubleConverter(), new DoubleType());
annotator.setPreferredSize(new Dimension(imp.getWidth(), imp.getHeight()));
annotator.setDoubleTypeSourceImage(Views.interval(imgOrig, imgOrig));
}
else if(actionEvent.getSource().equals(bLoad3))
{
final File file = new File( "/Users/moon/Pictures/confocal-series.tif" );
// open a file with ImageJ
final ImagePlus imp = new Opener().openImage( file.getAbsolutePath() );
// wrap it into an ImgLib image (no copying)
final Img<DoubleType> image = ImagePlusAdapter.wrap(imp);
final RandomAccessibleInterval imgOrig = Converters.convert( ( RandomAccessibleInterval ) Views.interval(image, image),
new RealDoubleConverter(), new DoubleType());
annotator.setPreferredSize(new Dimension(imp.getWidth(), imp.getHeight()));
annotator.setDoubleTypeSourceImage(Views.interval(imgOrig, imgOrig));
}
}
}