diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/AnalysisProcedureChooser.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/AnalysisProcedureChooser.java index c06040f87b0e3fda3b8183348e60f0fc17e88037..7f038694017f19f55e9128a38d7948d006bf5b4a 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/AnalysisProcedureChooser.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/AnalysisProcedureChooser.java @@ -34,6 +34,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericCon import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.IScreeningClientServiceAsync; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.Dict; +import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.ScreeningDisplaySettingsManager; /** * An UI panel for selecting analysis procedures. @@ -143,14 +144,24 @@ class AnalysisProcedureChooser extends HorizontalPanel } } - private void setInitialSelection(String analysisProcedureOrNull) + private void setInitialSelection(String value) { + String analysisProcedureOrNull = value; + if (StringUtils.isBlank(analysisProcedureOrNull)) + { + analysisProcedureOrNull = getDefaultAnalysisProcedure(); + } + String comboBoxValue = analysisCodeToComboBoxValue(analysisProcedureOrNull); - if (UNSPECIFIED_ANALYSIS_PROCEDURE.equals(comboBoxValue)) + + if (UNSPECIFIED_ANALYSIS_PROCEDURE.equals(comboBoxValue) + || analysisProceduresComboBox.findModel(comboBoxValue) == null) { comboBoxValue = getFirstValueFromCombo(); } + analysisProceduresComboBox.setSimpleValue(comboBoxValue); + } private String getFirstValueFromCombo() @@ -161,15 +172,33 @@ class AnalysisProcedureChooser extends HorizontalPanel private void selectionChanged() { String selection = analysisProceduresComboBox.getSimpleValue(); - notifySelectionListener(selection); + String analysisProcedureOrNull = comboBoxValueToAnalysisProcedure(selection); + notifySelectionListener(analysisProcedureOrNull); + setDefaultAnalysisProcedure(analysisProcedureOrNull); } - private void notifySelectionListener(String selection) + private void notifySelectionListener(String analysisProcedureOrNull) { - String analysisProcedureOrNull = comboBoxValueToAnalysisProcedure(selection); selectionListener.analysisProcedureSelected(analysisProcedureOrNull); } + private String getDefaultAnalysisProcedure() + { + ScreeningDisplaySettingsManager screeningDisplaySettingsManager = + new ScreeningDisplaySettingsManager(viewContext); + return screeningDisplaySettingsManager.getDefaultAnalysisProcedure(); + } + + private void setDefaultAnalysisProcedure(String analysisProcedureOrNull) + { + if (StringUtils.isNotBlank(analysisProcedureOrNull)) + { + ScreeningDisplaySettingsManager screeningDisplaySettingsManager = + new ScreeningDisplaySettingsManager(viewContext); + screeningDisplaySettingsManager.setDefaultAnalysisProcedure(analysisProcedureOrNull); + } + } + private String analysisCodeToComboBoxValue(String analysisProcedureOrNull) { return StringUtils.isBlank(analysisProcedureOrNull) ? UNSPECIFIED_ANALYSIS_PROCEDURE