Skip to content

Commit eda580d

Browse files
Allow for File Selection
1 parent cc88905 commit eda580d

1 file changed

Lines changed: 41 additions & 7 deletions

File tree

view-simulation-results/src/main/java/org/vcell/N5/reduction/GUI/images/ImagesToMeasure.java

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,30 @@
22

33
import ij.ImagePlus;
44
import ij.WindowManager;
5+
import ij.io.Opener;
6+
import ij.io.RoiDecoder;
57
import org.vcell.N5.retrieving.SimResultsLoader;
68

79
import javax.swing.*;
810
import javax.swing.border.Border;
911
import javax.swing.border.CompoundBorder;
1012
import javax.swing.border.EtchedBorder;
1113
import java.awt.*;
14+
import java.awt.event.ActionEvent;
15+
import java.awt.event.ActionListener;
16+
import java.io.File;
1217
import java.util.ArrayList;
1318

1419
public 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

Comments
 (0)