diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ChannelChooserPanel.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ChannelChooserPanel.java index 84303f0b58d436b0dfa21fc588c9cbf8d82de19a..02aae0b84ecc5799c3e0b6c365bffefd55b03067 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ChannelChooserPanel.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/ChannelChooserPanel.java @@ -109,6 +109,9 @@ public class ChannelChooserPanel extends LayoutContainer private List<ChannelSelectionListener> channelSelectionListeners = new ArrayList<ChannelSelectionListener>(); + private Map<String, IntensityRange> intensitiesPerChannel = + new HashMap<String, IntensityRange>(); + private final Listener<BaseEvent> selectionChangeListener = new Listener<BaseEvent>() { @Override @@ -123,15 +126,15 @@ public class ChannelChooserPanel extends LayoutContainer @Override public void handleEvent(BaseEvent be) { + String channelCode = getSelectedValues().get(0); InternalImageTransformationInfo selectedTransformation = transformationsComboBox.getSimpleValue().getItem(); String transformationCode = selectedTransformation.getCode(); - defaultChannelState.setDefaultTransformation(getSelectedValues().get(0), - transformationCode); + defaultChannelState.setDefaultTransformation(channelCode, transformationCode); changeTransformationSettingsButtonVisibility(true, false); IntensityRange intensityRange = - defaultChannelState.tryGetIntensityRange(getSelectedValues().get(0)); + defaultChannelState.tryGetIntensityRange(channelCode); notifySelectionListeners(getSelectedValues(), tryGetSelectedTransformationCode(false), intensityRange); @@ -145,6 +148,7 @@ public class ChannelChooserPanel extends LayoutContainer .getBlackPoint() + " - " + intensityRange.getWhitePoint()) + "]"; + ChannelChooserPanel.this.intensitiesPerChannel.put(channelCode, intensityRange); } transformationsComboBox.setToolTip(updatedTooltip); } @@ -187,8 +191,9 @@ public class ChannelChooserPanel extends LayoutContainer { UserDefinedRescalingSettingsDialog dialog = new UserDefinedRescalingSettingsDialog(messageProvider, - defaultChannelState, getSelectedValues().get(0)); - dialog.addListener(Events.Hide, transformationSelection); + intensitiesPerChannel, defaultChannelState, + getSelectedValues().get(0)); + dialog.addListener(Events.OnChange, transformationSelection); dialog.show(); } }); @@ -403,7 +408,7 @@ public class ChannelChooserPanel extends LayoutContainer updateTransformationComboBox(); notifySelectionListeners(selection, tryGetSelectedTransformationCode(false), - defaultChannelState.tryGetIntensityRange(selectedComboValue)); + tryGetSelectedIntensityRange()); } public String tryGetSelectedTransformationCode(boolean force) @@ -425,7 +430,7 @@ public class ChannelChooserPanel extends LayoutContainer public IntensityRange tryGetSelectedIntensityRange() { - return defaultChannelState.tryGetIntensityRange(getSelectedValues().get(0)); + return intensitiesPerChannel.get(getSelectedValues().get(0)); } private static String transformCode(String code) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/UserDefinedRescalingSettingsDialog.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/UserDefinedRescalingSettingsDialog.java index e05c6767bb5e9ae46087110efeddc9cada740fe6..654640cb3a71b0d0d4208ad4fb62634d8bbd4f3c 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/UserDefinedRescalingSettingsDialog.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/UserDefinedRescalingSettingsDialog.java @@ -16,6 +16,8 @@ package ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.detailviewers; +import java.util.Map; + import com.extjs.gxt.ui.client.event.BaseEvent; import com.extjs.gxt.ui.client.event.Events; import com.extjs.gxt.ui.client.event.Listener; @@ -49,6 +51,7 @@ public class UserDefinedRescalingSettingsDialog extends Dialog private final String channelCode; public UserDefinedRescalingSettingsDialog(IMessageProvider messageProvider, + Map<String, IntensityRange> intensitiesPerChannel, IDefaultChannelState defaultChannelState, String channelCode) { super(); @@ -66,7 +69,7 @@ public class UserDefinedRescalingSettingsDialog extends Dialog maxTextField = new IntegerField(messageProvider.getMessage(Dict.RESCALING_DIALOG_MAX), true); - setInitialValues(); + setInitialValues(intensitiesPerChannel); Grid grid = new Grid(2, 2); grid.setWidget(0, 0, labelMin); @@ -89,12 +92,12 @@ public class UserDefinedRescalingSettingsDialog extends Dialog }); } - private void setInitialValues() + private void setInitialValues(Map<String, IntensityRange> intensitiesPerChannel) { minTextField.setValue(0); - maxTextField.setValue(255); + maxTextField.setValue(65535); - IntensityRange range = defaultChannelState.tryGetIntensityRange(channelCode); + IntensityRange range = intensitiesPerChannel.get(channelCode); if (range != null) { minTextField.setValue(range.getBlackPoint()); @@ -112,7 +115,7 @@ public class UserDefinedRescalingSettingsDialog extends Dialog { super.onButtonPressed(button); updateIntensityRescaling(); - + fireEvent(Events.OnChange); hide(); } else {