From e73e5af5696c92abf446d22595d4bdd752924b2b Mon Sep 17 00:00:00 2001 From: Brandon Date: Fri, 21 Nov 2025 15:35:32 -0800 Subject: [PATCH] channels() should return the used channels --- .../api/AcquisitionSettingsSCAPE.java | 8 ++++++++ .../api/ChannelSettings.java | 2 +- .../DefaultAcquisitionSettingsSCAPE.java | 7 +------ .../api/internal/DefaultChannelSettings.java | 20 ++++++++++++------- .../gui/tabs/channels/ChannelTable.java | 1 + .../gui/tabs/channels/ChannelTableModel.java | 2 +- .../gui/tabs/channels/ChannelTablePanel.java | 5 ++++- .../model/channels/ChannelSpec.java | 10 +++++----- .../model/channels/ChannelTableData.java | 2 +- 9 files changed, 35 insertions(+), 22 deletions(-) diff --git a/src/main/java/org/micromanager/lightsheetmanager/api/AcquisitionSettingsSCAPE.java b/src/main/java/org/micromanager/lightsheetmanager/api/AcquisitionSettingsSCAPE.java index c1a2c0aa..cbe8d357 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/api/AcquisitionSettingsSCAPE.java +++ b/src/main/java/org/micromanager/lightsheetmanager/api/AcquisitionSettingsSCAPE.java @@ -2,6 +2,7 @@ import org.micromanager.lightsheetmanager.api.data.AcquisitionMode; import org.micromanager.lightsheetmanager.api.data.CameraMode; +import org.micromanager.lightsheetmanager.api.internal.DefaultChannelSettings; import org.micromanager.lightsheetmanager.api.internal.DefaultScanSettings; import org.micromanager.lightsheetmanager.api.internal.DefaultSheetCalibration; import org.micromanager.lightsheetmanager.api.internal.DefaultSliceCalibration; @@ -116,6 +117,13 @@ interface Builder> extends AcquisitionS */ //Builder copyBuilder(); + /** + * Returns the immutable DefaultChannelSettings instance. + * + * @return immutable DefaultChannelSettings instance. + */ + DefaultChannelSettings channelSettings(); + /** * Returns the immutable DefaultTimingSettings instance. * diff --git a/src/main/java/org/micromanager/lightsheetmanager/api/ChannelSettings.java b/src/main/java/org/micromanager/lightsheetmanager/api/ChannelSettings.java index 8f98825b..4c1858ec 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/api/ChannelSettings.java +++ b/src/main/java/org/micromanager/lightsheetmanager/api/ChannelSettings.java @@ -28,6 +28,6 @@ interface Builder { ChannelSpec[] channels(); - ChannelSpec[] usedChannels(); + ChannelSpec[] allChannels(); } diff --git a/src/main/java/org/micromanager/lightsheetmanager/api/internal/DefaultAcquisitionSettingsSCAPE.java b/src/main/java/org/micromanager/lightsheetmanager/api/internal/DefaultAcquisitionSettingsSCAPE.java index 3435180d..ce82adcf 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/api/internal/DefaultAcquisitionSettingsSCAPE.java +++ b/src/main/java/org/micromanager/lightsheetmanager/api/internal/DefaultAcquisitionSettingsSCAPE.java @@ -349,11 +349,6 @@ private DefaultAcquisitionSettingsSCAPE(Builder builder) { // timePointInterval_, // postMoveDelay_ // ); -// } - -// @Override -// public AcquisitionSettingsDISPIM.Builder copyBuilder() { -// return null; // } /** @@ -361,7 +356,7 @@ private DefaultAcquisitionSettingsSCAPE(Builder builder) { * * @return immutable DefaultChannelSettings instance. */ - //@Override + @Override public DefaultChannelSettings channelSettings() { return channelSettings_; } diff --git a/src/main/java/org/micromanager/lightsheetmanager/api/internal/DefaultChannelSettings.java b/src/main/java/org/micromanager/lightsheetmanager/api/internal/DefaultChannelSettings.java index 628d2be0..31cc781d 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/api/internal/DefaultChannelSettings.java +++ b/src/main/java/org/micromanager/lightsheetmanager/api/internal/DefaultChannelSettings.java @@ -117,19 +117,25 @@ public String[] channelGroups() { } /** - * Returns the channels for the selected channel group. + * Returns the used channels for the selected channel group. * - * @return the channels for the channel group. + * @return the channels for the channel group */ @Override public ChannelSpec[] channels() { - return groups_.getOrDefault(channelGroup_, EMPTY_CHANNELS); + return Arrays.stream(groups_.getOrDefault(channelGroup_, EMPTY_CHANNELS)) + .filter(ChannelSpec::useChannel) + .toArray(ChannelSpec[]::new); } + /** + * Returns all channels for the selected channel group. + * + * @return all channels for the selected channel group + */ @Override - public ChannelSpec[] usedChannels() { - return Arrays.stream(groups_.get(channelGroup_)) - .filter(ChannelSpec::isUsed) - .toArray(ChannelSpec[]::new); + public ChannelSpec[] allChannels() { + return groups_.getOrDefault(channelGroup_, EMPTY_CHANNELS); } + } diff --git a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTable.java b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTable.java index d920fe1c..cb956108 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTable.java +++ b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTable.java @@ -31,6 +31,7 @@ public class ChannelTable extends JScrollPane { public ChannelTable(final LightSheetManager model) { model_ = Objects.requireNonNull(model); + // set the channel group first to get the correct channel array final String channelGroup = model_.acquisitions().settings().channelSettings().channelGroup(); final ChannelSpec[] channels = model_.acquisitions().settings().channelSettings().channels(); diff --git a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTableModel.java b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTableModel.java index 1a2fed5d..715b21c7 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTableModel.java +++ b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTableModel.java @@ -79,7 +79,7 @@ public Object getValueAt(int row, int col) { final ChannelSpec channelSpec = data_.getChannelByIndex(row); switch (col) { case COLUMN_USE: - return channelSpec.isUsed(); + return channelSpec.useChannel(); case COLUMN_PRESET: return channelSpec.getName(); case COLUMN_OFFSET: diff --git a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTablePanel.java b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTablePanel.java index 3b48019e..9c2610f9 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTablePanel.java +++ b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTablePanel.java @@ -74,9 +74,12 @@ private void createEventHandlers() { cmbChannelGroup_.registerListener(e -> { final String channelGroup = cmbChannelGroup_.getSelected(); table_.updatePresetComboBoxes(channelGroup); + // set the channel group to use when we get the channels + model_.acquisitions().settingsBuilder().channelSettingsBuilder().channelGroup(channelGroup); + model_.acquisitions().updateAcquisitionSettings(); + // update the table data model and refresh ui table_.getData().setChannels(channelGroup, model_.acquisitions().settings().channelSettings().channels()); table_.getData().setChannelGroup(channelGroup); - model_.acquisitions().settingsBuilder().channelSettingsBuilder().channelGroup(channelGroup); table_.refreshData(); }); diff --git a/src/main/java/org/micromanager/lightsheetmanager/model/channels/ChannelSpec.java b/src/main/java/org/micromanager/lightsheetmanager/model/channels/ChannelSpec.java index fcc18452..dc9f182b 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/channels/ChannelSpec.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/channels/ChannelSpec.java @@ -32,10 +32,10 @@ public ChannelSpec(final boolean useChannel, final String group, final String na } public ChannelSpec(final ChannelSpec channel) { - this.useChannel_ = channel.useChannel_; - this.group_ = channel.group_; - this.name_ = channel.name_; - this.offset_ = channel.offset_; + useChannel_ = channel.useChannel_; + group_ = channel.group_; + name_ = channel.name_; + offset_ = channel.offset_; } public String getName() { @@ -54,7 +54,7 @@ public void setOffset(final double offset) { offset_ = offset; } - public boolean isUsed() { + public boolean useChannel() { return useChannel_; } diff --git a/src/main/java/org/micromanager/lightsheetmanager/model/channels/ChannelTableData.java b/src/main/java/org/micromanager/lightsheetmanager/model/channels/ChannelTableData.java index d677488c..ad62cbab 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/channels/ChannelTableData.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/channels/ChannelTableData.java @@ -41,7 +41,7 @@ public ChannelSpec[] getChannels() { public ChannelSpec[] getUsedChannels() { return channels_.stream() - .filter(ChannelSpec::isUsed) + .filter(ChannelSpec::useChannel) .toArray(ChannelSpec[]::new); }