Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package org.micromanager.lightsheetmanager.api.data;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

// TODO: account for different naming on each geometry type (SLICE_SCAN_ONLY)

/**
* Acquisition modes for diSPIM and SCAPE.
* Acquisition modes for all microscope geometry types.
*/
public enum AcquisitionMode {
NONE("None"),
Expand All @@ -22,6 +22,16 @@ public enum AcquisitionMode {
SLICE_SCAN_ONLY("Galvo scan"), // for SCAPE
PIEZO_SCAN_ONLY("Piezo scan only");

// Maps GeometryType to a set of valid AcquisitionModes
private static final Map<GeometryType, List<AcquisitionMode>> MODES_BY_GEOMETRY_TYPE = Map.of(
GeometryType.SCAPE, List.of(NO_SCAN, STAGE_SCAN, SLICE_SCAN_ONLY),
GeometryType.DISPIM, List.of(NO_SCAN, STAGE_SCAN, SLICE_SCAN_ONLY) // TODO: add all valid modes
);

private static final List<AcquisitionMode> STAGE_SCAN_MODES = List.of(
STAGE_SCAN, STAGE_SCAN_INTERLEAVED, STAGE_SCAN_UNIDIRECTIONAL
);

private final String text_;

private static final Map<String, AcquisitionMode> stringToEnum =
Expand Down Expand Up @@ -52,16 +62,11 @@ public static String[] toArray() {
* @param isStageScanning {@code true} if stage scanning
* @return an array of strings
*/
public static String[] getValidKeys(final boolean isStageScanning) {
final ArrayList<AcquisitionMode> keys = new ArrayList<>();
keys.add(NO_SCAN);
if (isStageScanning) {
keys.add(STAGE_SCAN);
}
keys.add(SLICE_SCAN_ONLY);
return keys.stream()
public static String[] getValidKeys(final GeometryType geometry, final boolean isStageScanning) {
final List<AcquisitionMode> baseModes = MODES_BY_GEOMETRY_TYPE.getOrDefault(geometry, List.of());
return baseModes.stream()
.filter(mode -> isStageScanning || !STAGE_SCAN_MODES.contains(mode))
.map(AcquisitionMode::toString)
.toArray(String[]::new);

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import java.util.concurrent.Future;
import javax.swing.SwingUtilities;
import org.micromanager.Studio;
import org.micromanager.lightsheetmanager.api.data.GeometryType;
import org.micromanager.lightsheetmanager.api.internal.DefaultAcquisitionSettingsSCAPE;
import org.micromanager.lightsheetmanager.gui.components.ListeningPanel;
import org.micromanager.lightsheetmanager.gui.data.Icons;
Expand Down Expand Up @@ -161,7 +162,8 @@ private void createUserInterface() {

// acquisition mode combo box
final boolean isUsingScanSettings = model_.devices().isUsingStageScanning();
cmbAcquisitionModes_ = new ComboBox(AcquisitionMode.getValidKeys(isUsingScanSettings),
final GeometryType geometryType = model_.devices().getDeviceAdapter().getMicroscopeGeometry();
cmbAcquisitionModes_ = new ComboBox(AcquisitionMode.getValidKeys(geometryType, isUsingScanSettings),
acqSettings.acquisitionMode().toString(),
180, 24);

Expand Down
Loading