diff --git a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/CameraTab.java b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/CameraTab.java index d623104..470935f 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/CameraTab.java +++ b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/CameraTab.java @@ -23,9 +23,10 @@ public class CameraTab extends Panel implements ListeningPanel { private Button btnCustomROI_; private Button btnGetCurrentROI_; private ComboBox cmbCameraTriggerMode_; + private ComboBox cmbFirstCamera_; - private TabPanel tabPanel_; - private LightSheetManager model_; + private final TabPanel tabPanel_; + private final LightSheetManager model_; public CameraTab(final LightSheetManager model, final TabPanel tabPanel) { tabPanel_ = Objects.requireNonNull(tabPanel); @@ -39,6 +40,7 @@ private void createUserInterface() { final Panel pnlROI = new Panel("Imaging ROI"); final Panel pnlCameraTrigger = new Panel("Camera Trigger Mode"); + final Panel pnlFirstCamera = new Panel("First Camera"); final Label lblXOffset = new Label("X Offset:"); final Label lblYOffset = new Label("Y Offset:"); @@ -59,7 +61,10 @@ private void createUserInterface() { final CameraLibrary camLib = CameraLibrary.fromString(camera.getDeviceLibrary()); cmbCameraTriggerMode_ = new ComboBox(CameraMode.getAvailableModes(camLib), - model_.acquisitions().settings().cameraMode().toString()); + model_.acquisitions().settings().cameraMode().toString()); + + cmbFirstCamera_ = new ComboBox(model_.devices().getImagingCameraNames(), + model_.devices().getFirstImagingCamera().toString()); pnlROI.add(btnUnchangedROI_, "span 2, wrap"); pnlROI.add(btnFullROI_, ""); @@ -74,10 +79,12 @@ private void createUserInterface() { pnlROI.add(btnGetCurrentROI_, "span 2"); pnlCameraTrigger.add(cmbCameraTriggerMode_, ""); + pnlFirstCamera.add(cmbFirstCamera_, ""); add(lblTitle, "wrap"); add(pnlROI, "wrap"); - add(pnlCameraTrigger, "growx"); + add(pnlCameraTrigger, "wrap, growx"); + add(pnlFirstCamera, "growx"); } private void createEventHandlers() { @@ -91,8 +98,12 @@ private void createEventHandlers() { //System.out.println("getCameraMode: " + model_.acquisitions().getAcquisitionSettings().getCameraMode()); }); - //model_.studio().core().setROI(); + // select primary camera + cmbFirstCamera_.registerListener(e -> { + }); + + //model_.studio().core().setROI(); } @Override diff --git a/src/main/java/org/micromanager/lightsheetmanager/model/DeviceManager.java b/src/main/java/org/micromanager/lightsheetmanager/model/DeviceManager.java index 01fe16c..27d6219 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/DeviceManager.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/DeviceManager.java @@ -28,7 +28,9 @@ import javax.swing.JFrame; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; @@ -265,8 +267,8 @@ public CameraBase getImagingCamera(final int view, final int num) { return (CameraBase)deviceMap_.get(cameraName); } - public CameraBase[] getImagingCameras() { - ArrayList cameraNames = new ArrayList<>(); + public String[] getImagingCameraNames() { + List names = new ArrayList<>(); final LightSheetDeviceManager adapter = model_.devices().adapter(); final int numImagingPaths = adapter.numImagingPaths(); final int numCameras = adapter.numSimultaneousCameras(); @@ -280,10 +282,17 @@ public CameraBase[] getImagingCameras() { if (numCameras > 1) { cameraName += String.valueOf(j + 1); } - cameraNames.add((CameraBase)deviceMap_.get(cameraName)); + names.add(cameraName); } } - return cameraNames.toArray(new CameraBase[0]); + return names.toArray(String[]::new); + } + + public CameraBase[] getImagingCameras() { + return Arrays.stream(getImagingCameraNames()) + .map(name -> (CameraBase)deviceMap_.get(name)) + .filter(Objects::nonNull) + .toArray(CameraBase[]::new); } // public DeviceBase getImagingCamera() {