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
Expand Up @@ -12,7 +12,7 @@ public class LightSheetManagerPlugin implements MenuPlugin, SciJavaPlugin {
public static final String copyright = "Applied Scientific Instrumentation (ASI), 2022-2026";
public static final String description = "A plugin to control various types of light sheet microscopes.";
public static final String menuName = "Light Sheet Manager";
public static final String version = "0.5.8";
public static final String version = "0.5.9";

private Studio studio_;
private LightSheetManager model_;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;

// To add a new AcquisitionMode:
// 1) Add a new constant to the enum.
Expand Down Expand Up @@ -63,9 +61,6 @@ public enum AcquisitionMode {
// Display text used in the UI
private final String text_;

private static final Map<String, AcquisitionMode> STRING_TO_ENUM =
Stream.of(values()).collect(Collectors.toMap(Object::toString, e -> e));

AcquisitionMode(final String text) {
text_ = text;
}
Expand Down Expand Up @@ -94,39 +89,13 @@ public boolean isStageScanMode() {
* @param hasStageScanning {@code true} if stage scan hardware is available
* @return a {@code List} of {@link AcquisitionMode} constants
*/
public static List<AcquisitionMode> getValidModes(final GeometryType geometry, final boolean hasStageScanning) {
public static AcquisitionMode[] getValidModes(final GeometryType geometry, final boolean hasStageScanning) {
return Optional.ofNullable(geometry)
.map(MODES_BY_GEOMETRY::get) // returns null if geometry is not in map
.orElse(Collections.emptyList())
.stream()
.filter(mode -> hasStageScanning || !mode.isStageScanMode())
.collect(Collectors.toList());
}

/**
* Return an array of {@code String} labels for a dropdown menu.
*
* @param geometry the microscope {@link GeometryType}
* @param hasStageScanning {@code true} if stage scan hardware is available
* @return an array of strings
*/
public static String[] getLabels(final GeometryType geometry, final boolean hasStageScanning) {
return getValidModes(geometry, hasStageScanning).stream()
.map(AcquisitionMode::toString)
.toArray(String[]::new);
.map(MODES_BY_GEOMETRY::get) // returns null if geometry is not in map
.orElse(Collections.emptyList())
.stream()
.filter(mode -> hasStageScanning || !mode.isStageScanMode())
.toArray(AcquisitionMode[]::new);
}

/**
* Returns the {@link AcquisitionMode} associated with the string label.
* <p>
* If the provided string is {@code null} or does not match any known
* acquisition mode, an empty {@link Optional} is returned.
*
* @param str the string label to convert (Example: "Stage scan")
* @return an {@link Optional} containing the matching {@link AcquisitionMode},
* or an empty {@code Optional} if no match is found.
*/
public static Optional<AcquisitionMode> fromString(final String str) {
return Optional.ofNullable(str).map(STRING_TO_ENUM::get);
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
package org.micromanager.lightsheetmanager.api.data;

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

/**
* The autofocus mode for the general autofocus settings.
*/
Expand All @@ -14,23 +9,10 @@ public enum AutofocusMode {

private final String name_;

private static final Map<String, AutofocusMode> stringToEnum =
Stream.of(values()).collect(Collectors.toMap(Object::toString, e -> e));

AutofocusMode(final String name) {
name_ = name;
}

public static String[] toArray() {
return Arrays.stream(values())
.map(AutofocusMode::toString)
.toArray(String[]::new);
}

public static AutofocusMode fromString(final String symbol) {
return stringToEnum.getOrDefault(symbol, AutofocusMode.FIXED_PIEZO_SWEEP_SLICE);
}

@Override
public String toString() {
return name_;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
package org.micromanager.lightsheetmanager.api.data;

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

/**
* The type of scoring algorithm for the general autofocus settings.
*/
Expand All @@ -23,23 +18,10 @@ public enum AutofocusType {

private final String name_;

private static final Map<String, AutofocusType> stringToEnum =
Stream.of(values()).collect(Collectors.toMap(Object::toString, e -> e));

AutofocusType(final String name) {
name_ = name;
}

public static String[] toArray() {
return Arrays.stream(values())
.map(AutofocusType::toString)
.toArray(String[]::new);
}

public static AutofocusType fromString(final String symbol) {
return stringToEnum.getOrDefault(symbol, AutofocusType.EDGES);
}

@Override
public String toString() {
return name_;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ public enum CameraLibrary {

private final String text_;

private static final Map<String, CameraLibrary> stringToEnum =
Stream.of(values()).collect(Collectors.toMap(Object::toString, e -> e));
private static final Map<String, CameraLibrary> STRING_TO_ENUM =
Stream.of(values()).collect(Collectors.toUnmodifiableMap(Object::toString, e -> e));

CameraLibrary(final String text) {
text_ = text;
Expand All @@ -30,6 +30,6 @@ public String toString() {
}

public static CameraLibrary fromString(final String symbol) {
return stringToEnum.getOrDefault(symbol, CameraLibrary.UNKNOWN);
return STRING_TO_ENUM.getOrDefault(symbol, CameraLibrary.UNKNOWN);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public enum CameraMode {
private final String text_;

private static final Map<String, CameraMode> stringToEnum =
Stream.of(values()).collect(Collectors.toMap(Object::toString, e -> e));
Stream.of(values()).collect(Collectors.toUnmodifiableMap(Object::toString, e -> e));

CameraMode(final String text) {
text_ = text;
Expand All @@ -34,15 +34,6 @@ public static CameraMode fromString(final String symbol) {
return stringToEnum.getOrDefault(symbol, CameraMode.EDGE);
}

/**
* @return an array of Strings containing all possible camera trigger modes.
*/
public static String[] toArray() {
return Arrays.stream(values())
.map(CameraMode::toString)
.toArray(String[]::new);
}

/**
* Does camera support overlap/synchronous mode?
*
Expand Down Expand Up @@ -89,7 +80,7 @@ public static boolean isCameraValid(CameraLibrary camLib) {
return camLib != CameraLibrary.UNKNOWN;
}

public static String[] getAvailableModes(CameraLibrary camLib) {
public static CameraMode[] getAvailableModes(CameraLibrary camLib) {
ArrayList<CameraMode> modes = new ArrayList<>();
if (isCameraValid(camLib)) {
modes.add(CameraMode.EDGE);
Expand All @@ -108,7 +99,7 @@ public static String[] getAvailableModes(CameraLibrary camLib) {
}
return modes.stream()
.map(CameraMode::toString)
.toArray(String[]::new);
.toArray(CameraMode[]::new);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,15 @@
package org.micromanager.lightsheetmanager.api.data;

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

public enum GeometryType {
UNKNOWN("Unknown"),
DISPIM("diSPIM"),
ISPIM("iSPIM"),
OSPIM("oSPIM"),
MESOSPIM("mesoSPIM"),
OPENSPIML("OpenSPIM-L"),
SCAPE("SCAPE");

private static final Map<String, GeometryType> stringToEnum =
Stream.of(values()).collect(Collectors.toMap(Object::toString, e -> e));

private final String label_;

GeometryType(final String label) {
Expand All @@ -27,7 +21,14 @@ public String toString() {
return label_;
}

public static GeometryType fromString(final String symbol) {
return stringToEnum.getOrDefault(symbol, GeometryType.UNKNOWN);
public static GeometryType fromString(final String propertyValue) {
if (propertyValue == null || propertyValue.isEmpty()) {
return UNKNOWN;
}
return Arrays.stream(values())
.filter(g -> g.label_.equalsIgnoreCase(propertyValue))
.findFirst()
.orElse(UNKNOWN);
}

}
Original file line number Diff line number Diff line change
@@ -1,17 +1,11 @@
package org.micromanager.lightsheetmanager.api.data;

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

public enum LightSheetType {
UNKNOWN("Unknown"),
STATIC("Static"),
SCANNED("Scanned");

private static final Map<String, LightSheetType> stringToEnum =
Stream.of(values()).collect(Collectors.toMap(Object::toString, e -> e));

private final String label_;

LightSheetType(final String label) {
Expand All @@ -23,7 +17,14 @@ public String toString() {
return label_;
}

public static LightSheetType fromString(final String symbol) {
return stringToEnum.getOrDefault(symbol, LightSheetType.UNKNOWN);
public static LightSheetType fromString(final String propertyValue) {
if (propertyValue == null || propertyValue.isEmpty()) {
return STATIC;
}
return Arrays.stream(values())
.filter(g -> g.label_.equalsIgnoreCase(propertyValue))
.findFirst()
.orElse(STATIC);
}

}
Original file line number Diff line number Diff line change
@@ -1,21 +1,12 @@
package org.micromanager.lightsheetmanager.api.data;

import java.util.Arrays;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public enum MultiChannelMode {
VOLUME("Every Volume"),
VOLUME_HW("Every Volume (PLogic)"),
SLICE_HW("Every Slice (PLogic)");

private final String text_;

private static final Map<String, MultiChannelMode> STRING_TO_ENUM =
Stream.of(values()).collect(Collectors.toMap(Object::toString, e -> e));

MultiChannelMode(final String text) {
text_ = text;
}
Expand All @@ -25,18 +16,4 @@ public String toString() {
return text_;
}

public static MultiChannelMode getByIndex(final int index) {
return values()[index];
}

public static String[] toArray() {
return Arrays.stream(values())
.map(MultiChannelMode::toString)
.toArray(String[]::new);
}

public static Optional<MultiChannelMode> fromString(final String str) {
return Optional.ofNullable(str).map(STRING_TO_ENUM::get);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,49 +5,22 @@
import java.awt.Dimension;
import java.util.Arrays;

public class ComboBox extends JComboBox<String> {
public class ComboBox<T> extends JComboBox<T> {

private static int defaultWidth = 100;
private static int defaultHeight = 20;

private String selected;
private final String[] labels;

public ComboBox(final String[] labels, final String selected) {
super(labels);
this.labels = labels;
this.selected = selected;
init(defaultWidth, defaultHeight);
}

public ComboBox(final String[] labels, final String selected, final int width, final int height) {
public ComboBox(final T[] labels, final T selected, final int width, final int height) {
super(labels);
this.labels = labels;
this.selected = selected;
init(width, height);
}

private void init(final int width, final int height) {
setAbsoluteSize(width, height);
setSelectedIndex(getIndex(selected));
setSelectedItem(selected);
setFocusable(false); // removes the focus highlight
}

public static void setDefaultSize(final int width, final int height) {
defaultWidth = width;
defaultHeight = height;
}

private int getIndex(final String label) {
return Arrays.asList(labels).indexOf(label);
}

public String getSelected() {
return selected;
@SuppressWarnings("unchecked")
public T getSelected() {
return (T) getSelectedItem();
}

public void setSelected(final String label) {
setSelectedIndex(getIndex(label));
public void setSelected(final T item) {
setSelectedItem(item);
}

public void setAbsoluteSize(final int width, final int height) {
Expand All @@ -58,10 +31,7 @@ public void setAbsoluteSize(final int width, final int height) {
}

public void registerListener(final Method method) {
addActionListener(event -> {
selected = (String)getSelectedItem();
method.run(event);
});
addActionListener(method::run);
}

}
Loading
Loading