Skip to content

Commit 9f077b6

Browse files
authored
Merge pull request #322 from bls337/main
start adding in support for duration labels, not done yet
2 parents 3770b7f + ce979a2 commit 9f077b6

File tree

9 files changed

+216
-26
lines changed

9 files changed

+216
-26
lines changed

src/main/java/org/micromanager/lightsheetmanager/api/AcquisitionSettingsSCAPE.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ interface Builder<T extends AcquisitionSettings.Builder<T>> extends AcquisitionS
9494
*
9595
* @param timePointInterval the time point interval in seconds.
9696
*/
97-
T timePointInterval(final int timePointInterval);
97+
T timePointInterval(final double timePointInterval);
9898

9999
/**
100100
* Sets the delay after a move when using multiple positions.
@@ -278,7 +278,7 @@ interface Builder<T extends AcquisitionSettings.Builder<T>> extends AcquisitionS
278278
*
279279
* @return the time point interval in seconds.
280280
*/
281-
int timePointInterval();
281+
double timePointInterval();
282282

283283
/**
284284
* Returns the post move delay in milliseconds.

src/main/java/org/micromanager/lightsheetmanager/api/internal/DefaultAcquisitionSettingsSCAPE.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public static class Builder extends DefaultAcquisitionSettings.Builder<Builder>
3232
private boolean useAdvancedTiming_ = false;
3333

3434
private int numTimePoints_ = 1;
35-
private int timePointInterval_ = 0;
35+
private double timePointInterval_ = 0.0;
3636
private int postMoveDelay_ = 0;
3737

3838
private int numChannels_ = 0;
@@ -199,7 +199,7 @@ public Builder numTimePoints(final int numTimePoints) {
199199
* @param timePointInterval the time point interval in seconds.
200200
*/
201201
@Override
202-
public Builder timePointInterval(final int timePointInterval) {
202+
public Builder timePointInterval(final double timePointInterval) {
203203
timePointInterval_ = timePointInterval;
204204
return this;
205205
}
@@ -342,7 +342,7 @@ public String toString() {
342342
private final boolean useAdvancedTiming_;
343343

344344
private final int numTimePoints_;
345-
private final int timePointInterval_;
345+
private final double timePointInterval_;
346346
private final int postMoveDelay_;
347347

348348
private final int numChannels_;
@@ -606,7 +606,7 @@ public int numTimePoints() {
606606
* @return the time point interval in seconds.
607607
*/
608608
@Override
609-
public int timePointInterval() {
609+
public double timePointInterval() {
610610
return timePointInterval_;
611611
}
612612

src/main/java/org/micromanager/lightsheetmanager/gui/tabs/AcquisitionTab.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,14 +98,15 @@ private void createUserInterface() {
9898
final Panel pnlCenter = new Panel();
9999
pnlRight_ = new Panel();
100100

101+
// durations
102+
pnlDurations_ = new VolumeDurationPanel(model_);
103+
101104
pnlVolumeSettings_ = new VolumeSettingsPanel(model_);
102105

103106
// switch between these two panels
104107
pnlSliceSettings_ = new SliceSettingsPanel(model_);
105108
pnlAdvancedTiming_ = new AdvancedTimingPanel(model_);
106109

107-
// durations
108-
pnlDurations_ = new VolumeDurationPanel(model_);
109110

110111
// multiple positions
111112
cbxUseMultiplePositions_ = new CheckBox(

src/main/java/org/micromanager/lightsheetmanager/gui/tabs/acquisition/TimePointsPanel.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ private void createUserInterface() {
4040
lblTimePointInterval_ = new Label("Interval [s]:");
4141
spnNumTimePoints_ = Spinner.createIntegerSpinner(
4242
acqSettings.numTimePoints(), 1, Integer.MAX_VALUE,1);
43-
spnTimePointInterval_ = Spinner.createIntegerSpinner(
44-
acqSettings.timePointInterval(), 0, Integer.MAX_VALUE, 1);
43+
spnTimePointInterval_ = Spinner.createDoubleSpinner(
44+
acqSettings.timePointInterval(), 0.1, Double.MAX_VALUE, 0.1);
4545

4646
add(lblNumTimePoints_, "");
4747
add(spnNumTimePoints_, "wrap");
@@ -54,13 +54,13 @@ private void createEventHandlers() {
5454

5555
spnNumTimePoints_.registerListener(e -> {
5656
model_.acquisitions().settingsBuilder().numTimePoints(spnNumTimePoints_.getInt());
57-
//updateDurationLabels();
57+
model_.acquisitions().updateDurationLabels();
5858
//System.out.println("getNumTimePoints: " + model_.acquisitions().getAcquisitionSettings().getNumTimePoints());
5959
});
6060

6161
spnTimePointInterval_.registerListener(e -> {
62-
model_.acquisitions().settingsBuilder().timePointInterval(spnTimePointInterval_.getInt());
63-
//updateDurationLabels();
62+
model_.acquisitions().settingsBuilder().timePointInterval(spnTimePointInterval_.getDouble());
63+
model_.acquisitions().updateDurationLabels();
6464
//System.out.println("getTimePointInterval: " + model_.acquisitions().getAcquisitionSettings().getTimePointInterval());
6565
});
6666
}

src/main/java/org/micromanager/lightsheetmanager/gui/tabs/acquisition/VolumeDurationPanel.java

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.micromanager.lightsheetmanager.gui.components.Panel;
55
import org.micromanager.lightsheetmanager.LightSheetManager;
66

7+
import javax.swing.JLabel;
78
import java.util.Objects;
89

910
public class VolumeDurationPanel extends Panel {
@@ -16,23 +17,21 @@ public class VolumeDurationPanel extends Panel {
1617
private Label lblVolumeTimeValue_;
1718
private Label lblTotalTimeValue_;
1819

19-
private final LightSheetManager model_;
20-
2120
public VolumeDurationPanel(final LightSheetManager model) {
2221
super("Durations");
23-
model_ = Objects.requireNonNull(model);
22+
Objects.requireNonNull(model)
23+
.acquisitions().setVolumeDurationPanel(this);
2424
createUserInterface();
25-
createEventHandlers();
2625
}
2726

2827
private void createUserInterface() {
29-
lblSliceTime_ = new Label("Slice");
28+
lblSliceTime_ = new Label("Slice:");
3029
lblVolumeTime_ = new Label("Volume:");
3130
lblTotalTime_ = new Label("Total:");
3231

33-
lblSliceTimeValue_ = new Label("0.0");
34-
lblVolumeTimeValue_ = new Label("0.0");
35-
lblTotalTimeValue_ = new Label("0.0");
32+
lblSliceTimeValue_ = new Label("0.000 ms");
33+
lblVolumeTimeValue_ = new Label("0.000 ms");
34+
lblTotalTimeValue_ = new Label("0.000 s");
3635

3736
add(lblSliceTime_, "");
3837
add(lblSliceTimeValue_, "wrap");
@@ -42,7 +41,21 @@ private void createUserInterface() {
4241
add(lblTotalTimeValue_, "");
4342
}
4443

45-
private void createEventHandlers() {
44+
public void setDurationText(final String sliceTime, final String volumeTime, final String totalTime) {
45+
lblSliceTimeValue_.setText(sliceTime);
46+
lblVolumeTimeValue_.setText(volumeTime);
47+
lblTotalTimeValue_.setText(totalTime);
48+
}
49+
50+
public JLabel getSliceDurationLabel() {
51+
return lblSliceTimeValue_;
52+
}
53+
54+
public JLabel getVolumeDurationLabel() {
55+
return lblVolumeTimeValue_;
56+
}
4657

58+
public JLabel getTotalDurationLabel() {
59+
return lblTotalTimeValue_;
4760
}
4861
}

src/main/java/org/micromanager/lightsheetmanager/gui/tabs/acquisition/VolumeSettingsPanel.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class VolumeSettingsPanel extends Panel {
2020
private Spinner spnSliceStepSize_;
2121
private Spinner spnNumSlices_;
2222

23-
private LightSheetManager model_;
23+
private final LightSheetManager model_;
2424

2525
public VolumeSettingsPanel(final LightSheetManager model) {
2626
super("Volume Settings");
@@ -50,7 +50,7 @@ private void createUserInterface() {
5050
final Label lblFirstView = new Label("First view:");
5151
final Label lblViewDelay = new Label("Delay before view [ms]:");
5252
final Label lblSlicesPerView = new Label("Slices per view:");
53-
final Label lblSliceStepSize = new Label("Slice step size [\u00B5m]:");
53+
final Label lblSliceStepSize = new Label("Slice step size [µm]:");
5454

5555
// if the number of sides has changed and the firstView or numViews is larger
5656
// than the number of sides, default to 1.
@@ -71,7 +71,7 @@ private void createUserInterface() {
7171
spnSliceStepSize_ = Spinner.createDoubleSpinner(
7272
volumeSettings.sliceStepSize(), 0.0, Double.MAX_VALUE, 0.1);
7373
spnNumSlices_ = Spinner.createIntegerSpinner(
74-
volumeSettings.slicesPerView(), 0, Integer.MAX_VALUE, 1);
74+
volumeSettings.slicesPerView(), 1, Integer.MAX_VALUE, 1);
7575

7676
switch (geometryType) {
7777
case DISPIM:
@@ -114,11 +114,13 @@ private void createEventHandlers() {
114114
spnViewDelay_.registerListener(e -> {
115115
model_.acquisitions().settingsBuilder().volumeSettingsBuilder()
116116
.delayBeforeView(spnViewDelay_.getDouble());
117+
model_.acquisitions().updateDurationLabels();
117118
});
118119

119120
spnNumSlices_.registerListener(e -> {
120121
model_.acquisitions().settingsBuilder().volumeSettingsBuilder()
121122
.slicesPerView(spnNumSlices_.getInt());
123+
model_.acquisitions().updateDurationLabels();
122124
});
123125

124126
spnSliceStepSize_.registerListener(e -> {

src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngine.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.micromanager.lightsheetmanager.api.AcquisitionManager;
1919
import org.micromanager.lightsheetmanager.api.internal.DefaultAcquisitionSettingsSCAPE;
2020
import org.micromanager.lightsheetmanager.LightSheetManagerFrame;
21+
import org.micromanager.lightsheetmanager.gui.tabs.acquisition.VolumeDurationPanel;
2122
import org.micromanager.lightsheetmanager.model.autofocus.AutofocusMM;
2223
import org.micromanager.lightsheetmanager.model.DataStorage;
2324
import org.micromanager.lightsheetmanager.LightSheetManager;
@@ -49,6 +50,7 @@ public abstract class AcquisitionEngine implements AcquisitionManager, MMAcquist
4950
protected Pipeline curPipeline_;
5051
protected long nextWakeTime_ = -1;
5152

53+
protected VolumeDurationPanel pnlVolumeDurations_;
5254

5355
// TODO: remove later, hacky method to stop position updater for now
5456
protected LightSheetManagerFrame frame_;
@@ -80,6 +82,12 @@ public AcquisitionEngine(final LightSheetManager model) {
8082

8183
public abstract void recalculateSliceTiming();
8284

85+
public abstract void updateDurationLabels();
86+
87+
public void setVolumeDurationPanel(final VolumeDurationPanel panel) {
88+
pnlVolumeDurations_ = panel;
89+
}
90+
8391
public void setFrame(final LightSheetManagerFrame frame) {
8492
frame_ = Objects.requireNonNull(frame);
8593
}

src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineDISPIM.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -698,7 +698,12 @@ public void recalculateSliceTiming() {
698698
// TODO: update gui (but not in the model)
699699
}
700700

701-
public DefaultTimingSettings.Builder getTimingFromPeriodAndLightExposure() {
701+
@Override
702+
public void updateDurationLabels() {
703+
704+
}
705+
706+
public DefaultTimingSettings.Builder getTimingFromPeriodAndLightExposure() {
702707
// uses algorithm Jon worked out in Octave code; each slice period goes like this:
703708
// 1. camera readout time (none if in overlap mode, 0.25ms in pseudo-overlap)
704709
// 2. any extra delay time

0 commit comments

Comments
 (0)