22
33import ij .ImagePlus ;
44import ij .WindowManager ;
5+ import ij .io .Opener ;
6+ import ij .io .RoiDecoder ;
57import org .vcell .N5 .retrieving .SimResultsLoader ;
68
79import javax .swing .*;
810import javax .swing .border .Border ;
911import javax .swing .border .CompoundBorder ;
1012import javax .swing .border .EtchedBorder ;
1113import java .awt .*;
14+ import java .awt .event .ActionEvent ;
15+ import java .awt .event .ActionListener ;
16+ import java .io .File ;
1217import java .util .ArrayList ;
1318
1419public class ImagesToMeasure extends JPanel {
1520 private final Border lowerEtchedBorder = BorderFactory .createEtchedBorder (EtchedBorder .LOWERED );
16- private JComboBox <String > chosenImage ;
21+ private JComboBox <String > chosenImage = null ;
1722 private final ArrayList <SimResultsLoader > simsToOpen ;
23+ private ImagePlus experimentalImage ;
1824
1925 public ImagesToMeasure (ArrayList <SimResultsLoader > simsToOpen ){
2026 this .simsToOpen = simsToOpen ;
2127
22- setLayout (new BoxLayout ( this , BoxLayout . X_AXIS ));
28+ setLayout (new GridLayout ( 1 , 2 ));
2329 Border border = new CompoundBorder (BorderFactory .createEmptyBorder (5 , 5 , 5 , 5 ),
2430 BorderFactory .createTitledBorder (BorderFactory .createEtchedBorder (), "1. Images To Measure" ));
2531 setBorder (border );
@@ -30,9 +36,34 @@ public ImagesToMeasure(ArrayList<SimResultsLoader> simsToOpen){
3036 private JPanel imageSelectionPanel (){
3137 JPanel jPanel = new JPanel ();
3238 jPanel .setLayout (new BoxLayout (jPanel , BoxLayout .Y_AXIS ));
33- jPanel .add (new JLabel ("Experimental" ));
34- chosenImage = new JComboBox <>(WindowManager .getImageTitles ());
35- jPanel .add (chosenImage );
39+ String [] imageTitles = WindowManager .getImageTitles ();
40+ if (imageTitles .length == 0 ){
41+ JButton openExperimentalImage = new JButton ("Open Experimental Image" );
42+ openExperimentalImage .addActionListener (new ActionListener () {
43+ @ Override
44+ public void actionPerformed (ActionEvent e ) {
45+ JFileChooser fileChooser = new JFileChooser ();
46+ fileChooser .setMultiSelectionEnabled (false );
47+ int choice = fileChooser .showDialog (ImagesToMeasure .this , "Open Image" );
48+ if (choice == JFileChooser .APPROVE_OPTION ){
49+ File file = fileChooser .getSelectedFile ();
50+ experimentalImage = new Opener ().openImage (file .getAbsolutePath ());
51+ jPanel .removeAll ();
52+ jPanel .add (new JLabel ("<HTML><i>Selected Experimental Image</i></HTML>" ));
53+ JList <String > expImageList = new JList <>(new String []{experimentalImage .getTitle ()});
54+ expImageList .setEnabled (false );
55+ expImageList .setVisibleRowCount (4 );
56+ jPanel .add (new JScrollPane (expImageList ));
57+ jPanel .updateUI ();
58+ }
59+ }
60+ });
61+ jPanel .add (new JLabel ("<HTML><i>Experimental</i></HTML>" ));
62+ jPanel .add (openExperimentalImage );
63+ } else {
64+ chosenImage = new JComboBox <>(WindowManager .getImageTitles ());
65+ jPanel .add (chosenImage );
66+ }
3667 return jPanel ;
3768 }
3869
@@ -46,14 +77,17 @@ private JPanel selectedImagesToOpenPanel(){
4677 selectedImagesToOpen .setEnabled (false );
4778 selectedImagesToOpen .setVisibleRowCount (4 );
4879 JScrollPane jScrollPane = new JScrollPane (selectedImagesToOpen );
49- jPanel .add (new JLabel ("Selected Simulations" ));
80+ jPanel .add (new JLabel ("<HTML><i> Selected Simulations</i></HTML> " ));
5081 jPanel .add (jScrollPane );
5182 jPanel .setLayout (new BoxLayout (jPanel , BoxLayout .Y_AXIS ));
5283 return jPanel ;
5384 }
5485
5586 public ImagePlus getChosenExpImage (){
56- return WindowManager .getImage ((String ) chosenImage .getSelectedItem ());
87+ if (chosenImage != null ){
88+ return WindowManager .getImage ((String ) chosenImage .getSelectedItem ());
89+ }
90+ return experimentalImage ;
5791 }
5892
5993}
0 commit comments