Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 609458e5 by Tony Chemit at 2020-07-04T08:32:24+02:00 [LL][Echantillon logbook] Cosmétique (Partie ui ps)- See #1536 - - - - - 11 changed files: - client-datasource-editor-ps/src/main/i18n/getters/jaxx.getter - client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/AbstractSampleUI.jcss - client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/AbstractSampleUIHandler.java - + client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/NonTargetSampleImplHandler.java - client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/NonTargetSampleUI.jaxx - client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/NonTargetSampleUIHandler.java - client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/NonTargetSampleUIModel.java - + client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/TargetSampleImplHandler.java - client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/TargetSampleUI.jaxx - client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/TargetSampleUIHandler.java - client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/TargetSampleUIModel.java Changes: ===================================== client-datasource-editor-ps/src/main/i18n/getters/jaxx.getter ===================================== @@ -5,6 +5,7 @@ observe.Id.ocean observe.Id.sex observe.Id.sizeMeasureType observe.Id.species +observe.Id.weightMeasureType observe.Id.whenArriving observe.Id.whenLeaving observe.action.reset @@ -22,6 +23,7 @@ observe.data.Data.startDate observe.data.Data.vessel observe.data.Data.weightMeasureMethod observe.data.Sample.action.resetDefaultSizeMeasureType.tip +observe.data.Sample.action.resetDefaultWeightMeasureType.tip observe.data.ps.common.GearUseFeatures.action.create.tip observe.data.ps.common.GearUseFeatures.action.create.tip.tip observe.data.ps.common.GearUseFeatures.gear ===================================== client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/AbstractSampleUI.jcss ===================================== @@ -20,45 +20,6 @@ * #L% */ -#acquisitionModeGroup { - selectedValue:{AcquisitionMode.valueOf(tableEditBean.getAcquisitionMode())}; -} - -#acquisitionModePanel { - border:{new TitledBorder(t("observe.data.Data.acquisitionMode"))}; -} - -#acquisitionModeEffectif { - buttonGroup:"acquisitionModeGroup"; - value:{AcquisitionMode.byEffectif}; - text:{AcquisitionMode.byEffectif.toString()}; - selected:{tableEditBean.getAcquisitionMode() == 0}; - enabled:{!tableModel.isEditable() || tableModel.isCreate()}; -} - -#acquisitionModeIndividu { - buttonGroup:"acquisitionModeGroup"; - value:{AcquisitionMode.byIndividu}; - text:{AcquisitionMode.byIndividu.toString()}; - selected:{tableEditBean.getAcquisitionMode() == 1}; - enabled:{!tableModel.isEditable() || tableModel.isCreate()}; -} - -#sizeMeasureTypePanel { - border:{new TitledBorder(t("observe.data.Data.speciesAndSizeMeasure"))}; -} - -#sizeMeasureType { - enabled:{tableEditBean.getSpecies() != null}; -} - -#defaultSizeMeasureType { - actionIcon:combobox-reset2; - toolTipText:"observe.data.Sample.action.resetDefaultSizeMeasureType.tip"; - enabled:{model.getDefaultSizeMeasureType() != null}; - focusable:false; -} - #lengthSourceInformation { disabledIcon: {iconDataObserve}; icon: {iconDataCalcule}; @@ -73,7 +34,7 @@ #weightSourceInformation { disabledIcon: {iconDataObserve}; icon: {iconDataCalcule}; - enabled: {tableEditBean.isIsWeightComputed()}; + enabled: {tableEditBean.getAcquisitionMode() == 1 && tableEditBean.isIsWeightComputed()}; toolTipText:{getWeightDataTip(tableEditBean.isIsWeightComputed())}; } ===================================== client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/AbstractSampleUIHandler.java ===================================== @@ -31,6 +31,7 @@ import fr.ird.observe.dto.data.ps.observation.NonTargetLengthDto; import fr.ird.observe.dto.data.ps.observation.TargetLengthDto; import fr.ird.observe.dto.referential.common.SizeMeasureTypeReference; import fr.ird.observe.dto.referential.common.SpeciesReference; +import fr.ird.observe.dto.referential.common.WeightMeasureTypeReference; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -83,6 +84,7 @@ public abstract class AbstractSampleUIHandler<E extends DataDto, D extends DataD final PropertyChangeListener speciesChanged; private ImmutableMap<String, SizeMeasureTypeReference> sizeMeasureTypeReferenceMap; + private ImmutableMap<String, WeightMeasureTypeReference> weightMeasureTypeReferenceMap; AbstractSampleUIHandler() { super(); @@ -104,6 +106,8 @@ public abstract class AbstractSampleUIHandler<E extends DataDto, D extends DataD void loadSizeMeasureTypes() { List<SizeMeasureTypeReference> sizeMeasureTypeReferences = getModel().getReferenceCache().getReferentialReferences(NonTargetLengthDto.PROPERTY_SIZE_MEASURE_TYPE); sizeMeasureTypeReferenceMap = Maps.uniqueIndex(sizeMeasureTypeReferences, SizeMeasureTypeReference::getId); + List<WeightMeasureTypeReference> weightMeasureTypeReferences = getModel().getReferenceCache().getReferentialReferences(NonTargetLengthDto.PROPERTY_WEIGHT_MEASURE_TYPE); + weightMeasureTypeReferenceMap = Maps.uniqueIndex(weightMeasureTypeReferences, WeightMeasureTypeReference::getId); } Optional<SizeMeasureTypeReference> getSpeciesDefaultSizeMeasureType(SpeciesReference species) { @@ -113,7 +117,19 @@ public abstract class AbstractSampleUIHandler<E extends DataDto, D extends DataD result = sizeMeasureTypeReferenceMap.get(sizeMeasureId); log.info("Use as default size measure type: " + result); } else { - log.info("No default size measure type defined (species is null, or no default size measure definied on it."); + log.info("No default size measure type defined (species is null, or no default size measure defined on it."); + } + return Optional.ofNullable(result); + } + + Optional<WeightMeasureTypeReference> getSpeciesDefaultWeightMeasureType(SpeciesReference species) { + WeightMeasureTypeReference result = null; + if (species != null && species.getSizeMeasureTypeId() != null) { + String weightMeasureId = species.getWeightMeasureTypeId(); + result = weightMeasureTypeReferenceMap.get(weightMeasureId); + log.info("Use as default weight measure type: " + result); + } else { + log.info("No default weight measure type defined (species is null, or no default weight measure defined on it."); } return Optional.ofNullable(result); } ===================================== client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/NonTargetSampleImplHandler.java ===================================== @@ -0,0 +1,116 @@ +package fr.ird.observe.client.datasource.editor.content.data.ps.observation; + +/*- + * #%L + * ObServe :: Client DataSource Editor PS + * %% + * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.datasource.editor.content.data.sample.SampleUIHandler; +import fr.ird.observe.dto.data.ps.observation.NonTargetLengthDto; +import fr.ird.observe.dto.data.ps.observation.NonTargetSampleDto; + +import javax.swing.JComponent; + +public class NonTargetSampleImplHandler extends SampleUIHandler<NonTargetSampleDto, NonTargetLengthDto, NonTargetSampleUI> { + + private final NonTargetSampleUI ui; + + public NonTargetSampleImplHandler(NonTargetSampleUI ui) { + this.ui = ui; + } + + @Override + public NonTargetSampleUIModel getModel() { + return (NonTargetSampleUIModel) super.getModel(); + } + + @Override + protected void onWeightChanged(Float newValue) { + NonTargetSampleUIModel model = getModel(); + model.getTableEditBean().setIsWeightComputed(false); + NonTargetLengthDto tableEditBean = model.getTableEditBean(); + if (newValue == null) { + tableEditBean.setWeightMeasureMethod(null); + } + } + + @Override + protected void onLengthChanged(Float newValue) { + NonTargetSampleUIModel model = getModel(); + model.getTableEditBean().setIsLengthComputed(false); + NonTargetLengthDto tableEditBean = model.getTableEditBean(); + if (newValue == null) { + tableEditBean.setLengthMeasureMethod(null); + } + } + + @Override + protected void onAcquisitionModeChangedToEffectif(boolean createMode, NonTargetLengthDto editBean) { + + // weight not enabled + ui.getWeight().setEnabled(false); +// ui.getWeightMeasureType().setEnabled(false); + ui.getWeightMeasureMethod().setEnabled(false); + + // count enabled + ui.getCount().setEnabled(true); + + if (createMode) { + + // delete any weight value + editBean.setWeight(null); + editBean.setWeightMeasureType(null); + editBean.setWeightMeasureMethod(null); + // delete count (force use to reset it) + editBean.setCount(null); + } + + } + + @Override + protected void onAcquisitionModeChangedToIndividual(boolean createMode, NonTargetLengthDto editBean) { + + // weight enabled + ui.getWeight().setEnabled(true); +// ui.getWeightMeasureType().setEnabled(true); + ui.getWeightMeasureMethod().setEnabled(true); + + // count not enabled (set to one) + ui.getCount().setEnabled(false); + if (createMode) { + // Always set to one + editBean.setCount(1); + editBean.setWeightMeasureType(getModel().getDefaultWeightMeasureType()); + } + } + + @Override + protected void setFormFocusOwner(JComponent requestFocus) { + ui.getHandler().setFormFocusOwner(requestFocus); + } + + @Override + protected JComponent getNewFormFocusOwner(boolean create, boolean modelCreate, boolean unsetSpecies, boolean withPrevious) { + if (create && !withPrevious) { + return ui.getSpecies(); + } + return ui.getSex(); + } +} ===================================== client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/NonTargetSampleUI.jaxx ===================================== @@ -21,17 +21,19 @@ <fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUI beanScope="bean" i18n="fr.ird.observe.dto.data.ps.observation.NonTargetLengthDto" superGenericType='NonTargetSampleDto, NonTargetLengthDto, NonTargetSampleUI' - implements="fr.ird.observe.client.datasource.editor.content.data.table.SortableTableUI" + implements="fr.ird.observe.client.datasource.editor.content.data.sample.SampleUI<NonTargetSampleDto, NonTargetLengthDto, NonTargetSampleUI>, fr.ird.observe.client.datasource.editor.content.data.table.SortableTableUI" contentTitle='{n("observe.data.ps.observation.NonTargetSample.title")}' saveNewEntryText='{n("observe.data.ps.observation.NonTargetSample.action.create")}' saveNewEntryTip='{n("observe.data.ps.observation.NonTargetSample.action.create.tip")}'> <style source="classpath:/fr/ird/observe/client/datasource/editor/content/data/CommonTable.jcss"/> + <style source="classpath:/fr/ird/observe/client/datasource/editor/content/data/sample/CommonSample.jcss"/> <style source="AbstractSampleUI.jcss"/> <import> fr.ird.observe.dto.referential.common.SexReference fr.ird.observe.dto.referential.common.SizeMeasureTypeReference + fr.ird.observe.dto.referential.common.WeightMeasureTypeReference fr.ird.observe.dto.referential.common.SpeciesReference fr.ird.observe.dto.referential.common.LengthMeasureMethodReference fr.ird.observe.dto.referential.common.WeightMeasureMethodReference @@ -55,6 +57,8 @@ <!-- model --> <NonTargetSampleUIModel id='model' constructorParams='this'/> + <NonTargetSampleImplHandler id='sampleHandler' initializer="getContextValue(NonTargetSampleImplHandler.class)"/> + <!-- edit bean --> <NonTargetSampleDto id='bean'/> @@ -76,16 +80,13 @@ </BeanValidator> <ButtonGroup id='acquisitionModeGroup' - onStateChanged='getHandler().updateAcquisitionMode((AcquisitionMode) acquisitionModeGroup.getSelectedValue())'/> + onStateChanged='getSampleHandler().updateAcquisitionMode((AcquisitionMode) acquisitionModeGroup.getSelectedValue())'/> <script><![CDATA[ -public String getWeightDataTip(boolean computed) { - return computed ? t(NonTargetSampleUIHandler.POIDS_COMPUTED_TIP) : t(NonTargetSampleUIHandler.POIDS_OBSERVED_TIP); -} - -public String getLengthDataTip(boolean computed) { - return computed ? t(NonTargetSampleUIHandler.LONGUEUR_COMPUTED_TIP) : t(NonTargetSampleUIHandler.LONGUEUR_OBSERVED_TIP); +@Override +public NonTargetSampleUIModel getSampleModel() { + return getModel(); } ]]> @@ -118,10 +119,19 @@ public String getLengthDataTip(boolean computed) { </cell> <cell> <JPanel layout='{new BorderLayout()}'> - <JaxxComboBox id='sizeMeasureType' genericType='SizeMeasureTypeReference' - constructorParams='this' constraints="BorderLayout.CENTER"/> - <JButton id="defaultSizeMeasureType" constraints="BorderLayout.EAST" - onActionPerformed="getHandler().resetDefaultSizeMeasureType()"/> + <JaxxComboBox id='sizeMeasureType' genericType='SizeMeasureTypeReference' constructorParams='this' constraints="BorderLayout.CENTER"/> + <JButton id="defaultSizeMeasureType" constraints="BorderLayout.EAST"/> + </JPanel> + </cell> + </row> + <row> + <cell> + <JLabel id='weightMeasureTypeLabel' styleClass="i18n"/> + </cell> + <cell> + <JPanel layout='{new BorderLayout()}'> + <JaxxComboBox id='weightMeasureType' genericType='WeightMeasureTypeReference' constructorParams='this' constraints="BorderLayout.CENTER"/> + <JButton id="defaultWeightMeasureType" constraints="BorderLayout.EAST"/> </JPanel> </cell> </row> ===================================== client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/NonTargetSampleUIHandler.java ===================================== @@ -22,7 +22,7 @@ package fr.ird.observe.client.datasource.editor.content.data.ps.observation; import fr.ird.observe.client.constants.AcquisitionMode; -import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableModel; +import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUIHandler; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUILayoutFocusTraversalPolicy; import fr.ird.observe.client.datasource.editor.content.spi.ContentUIReferenceCache; import fr.ird.observe.client.datasource.editor.content.spi.ReferentialReferencesFilter; @@ -44,15 +44,12 @@ import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.runtime.spi.UIHandler; import org.nuiton.validator.NuitonValidatorScope; -import javax.swing.JComponent; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import java.awt.Component; import java.awt.Container; -import java.util.Collections; import java.util.LinkedList; import java.util.List; -import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; import static io.ultreia.java4all.i18n.I18n.t; @@ -61,10 +58,12 @@ import static io.ultreia.java4all.i18n.I18n.t; * @author Tony Chemit - dev@tchemit.fr * @since 1.0 */ -public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetSampleDto, NonTargetLengthDto, NonTargetSampleUI> implements UIHandler<NonTargetSampleUI> { +public class NonTargetSampleUIHandler extends ContentTableUIHandler<NonTargetSampleDto, NonTargetLengthDto, NonTargetSampleUI> implements UIHandler<NonTargetSampleUI> { private static final Logger log = LogManager.getLogger(NonTargetSampleUIHandler.class); + private NonTargetSampleImplHandler sampleHandler; + @Override public NonTargetSampleUIModel getModel() { return ui.getModel(); @@ -73,11 +72,16 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS @Override public void beforeInit(NonTargetSampleUI ui) { super.beforeInit(ui); + sampleHandler = new NonTargetSampleImplHandler(ui); + sampleHandler.beforeInit(ui); + ui.setContextValue(sampleHandler); } @Override public void afterInit(NonTargetSampleUI ui) { super.afterInit(ui); + sampleHandler.init(); + ui.removeContextValue(NonTargetSampleImplHandler.class); } // @Override @@ -202,94 +206,106 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS // // normalement cela est fait quand on fait le setForm (mais ici le setForm est fait trop tôt) // getModel().updateUiWithReferenceSetsFromModel(); - loadSizeMeasureTypes(); + model.loadSizeMeasureTypes(); form.getObject().copy(model.getBean()); } @Override protected void onSelectedRowChanged(int editingRow, NonTargetLengthDto bean, boolean create) { - ContentTableModel<NonTargetSampleDto, NonTargetLengthDto> model = getTableModel(); - if (!model.isEditable()) { - return; - } - NonTargetLengthDto tableEditBean = getModel().getTableEditBean(); - tableEditBean.removePropertyChangeListener(NonTargetLengthDto.PROPERTY_WEIGHT, weightChanged); - tableEditBean.removePropertyChangeListener(NonTargetLengthDto.PROPERTY_LENGTH, lengthChanged); - tableEditBean.removePropertyChangeListener(NonTargetLengthDto.PROPERTY_SPECIES, speciesChanged); - - SpeciesReference species = bean.getSpecies(); - log.debug(prefix + "selected species " + species); - List<SpeciesReference> availableSpecies; - JComponent requestFocus; - Optional<SizeMeasureTypeReference> sizeMeasureType = Optional.empty(); - - if (create) { - - Optional<SizeMeasureTypeReference> defaultSizeMeasureType; - - boolean unsetSpecies = true; - if (model.isCreate()) { - - // on passe le mode de saisie en count - AcquisitionMode acquisitionMode = AcquisitionMode.byEffectif; - - if (editingRow > 0) { - unsetSpecies = false; - // get previous row - NonTargetLengthDto editBean = model.getValueAt(editingRow - 1); - // get previous species - species = editBean.getSpecies(); - // get previous acquisition mode - acquisitionMode = AcquisitionMode.valueOf(editBean.getAcquisitionMode()); - // get previous size measure type - sizeMeasureType = Optional.ofNullable(editBean.getSizeMeasureType()); - } - - updateAcquisitionMode0(acquisitionMode); - - } - - availableSpecies = getModel().getReferenceCache().getReferentialReferences(NonTargetLengthDto.PROPERTY_SPECIES); - - // get default size measure type - defaultSizeMeasureType = getSpeciesDefaultSizeMeasureType(species); - - if (unsetSpecies) { - // unset species (this will not set again species in widget) - species = null; - sizeMeasureType = defaultSizeMeasureType; - requestFocus = ui.getSpecies(); - } else { - requestFocus = ui.getLength(); - } + sampleHandler.onSelectedRowChanged(editingRow, bean, create); - // use default size measure type - ui.getModel().setDefaultSizeMeasureType(defaultSizeMeasureType.orElse(null)); - - } else { - requestFocus = ui.getCount(); - updateAcquisitionMode0(AcquisitionMode.valueOf(bean.getAcquisitionMode())); - availableSpecies = Collections.singletonList(species); - species = null; - sizeMeasureType = Optional.ofNullable(bean.getSizeMeasureType()); - } - - ui.getSizeMeasureType().setSelectedItem(null); - sizeMeasureType.ifPresent(ui.getSizeMeasureType()::setSelectedItem); - - ui.getSpecies().setData(availableSpecies); - if (species != null) { - log.info(String.format("Will set species : %s", species)); - ui.getSpecies().setSelectedItem(null); - ui.getSpecies().setSelectedItem(species); - } - - setFormFocusOwner(requestFocus); - - tableEditBean.addPropertyChangeListener(NonTargetLengthDto.PROPERTY_WEIGHT, weightChanged); - tableEditBean.addPropertyChangeListener(NonTargetLengthDto.PROPERTY_LENGTH, lengthChanged); - tableEditBean.addPropertyChangeListener(NonTargetLengthDto.PROPERTY_SPECIES, speciesChanged); +// ContentTableModel<NonTargetSampleDto, NonTargetLengthDto> model = getTableModel(); +// if (!model.isEditable()) { +// return; +// } +// NonTargetLengthDto tableEditBean = getModel().getTableEditBean(); +// tableEditBean.removePropertyChangeListener(NonTargetLengthDto.PROPERTY_WEIGHT, weightChanged); +// tableEditBean.removePropertyChangeListener(NonTargetLengthDto.PROPERTY_LENGTH, lengthChanged); +// tableEditBean.removePropertyChangeListener(NonTargetLengthDto.PROPERTY_SPECIES, speciesChanged); +// +// SpeciesReference species = bean.getSpecies(); +// log.debug(prefix + "selected species " + species); +// List<SpeciesReference> availableSpecies; +// JComponent requestFocus; +// Optional<SizeMeasureTypeReference> sizeMeasureType = Optional.empty(); +// Optional<WeightMeasureTypeReference> weightMeasureType = Optional.empty(); +// +// if (create) { +// +// Optional<SizeMeasureTypeReference> defaultSizeMeasureType; +// Optional<WeightMeasureTypeReference> defaultWeightMeasureType; +// +// boolean unsetSpecies = true; +// if (model.isCreate()) { +// +// // on passe le mode de saisie en count +// AcquisitionMode acquisitionMode = AcquisitionMode.byEffectif; +// +// if (editingRow > 0) { +// unsetSpecies = false; +// // get previous row +// NonTargetLengthDto editBean = model.getValueAt(editingRow - 1); +// // get previous species +// species = editBean.getSpecies(); +// // get previous acquisition mode +// acquisitionMode = AcquisitionMode.valueOf(editBean.getAcquisitionMode()); +// // get previous size measure type +// sizeMeasureType = Optional.ofNullable(editBean.getSizeMeasureType()); +// weightMeasureType = Optional.ofNullable(editBean.getWeightMeasureType()); +// } +// +// updateAcquisitionMode0(acquisitionMode); +// +// } +// +// availableSpecies = getModel().getReferenceCache().getReferentialReferences(NonTargetLengthDto.PROPERTY_SPECIES); +// +// // get default size measure type +// defaultSizeMeasureType = getSpeciesDefaultSizeMeasureType(species); +// defaultWeightMeasureType = getSpeciesDefaultWeightMeasureType(species); +// +// if (unsetSpecies) { +// // unset species (this will not set again species in widget) +// species = null; +// sizeMeasureType = defaultSizeMeasureType; +// weightMeasureType = defaultWeightMeasureType; +// requestFocus = ui.getSpecies(); +// } else { +// requestFocus = ui.getLength(); +// } +// +// // use default size measure type +// ui.getModel().setDefaultSizeMeasureType(defaultSizeMeasureType.orElse(null)); +// ui.getModel().setDefaultWeightMeasureType(defaultWeightMeasureType.orElse(null)); +// +// } else { +// requestFocus = ui.getCount(); +// updateAcquisitionMode0(AcquisitionMode.valueOf(bean.getAcquisitionMode())); +// availableSpecies = Collections.singletonList(species); +// species = null; +// sizeMeasureType = Optional.ofNullable(bean.getSizeMeasureType()); +// weightMeasureType = Optional.ofNullable(bean.getWeightMeasureType()); +// } +// +// ui.getSizeMeasureType().setSelectedItem(null); +// sizeMeasureType.ifPresent(ui.getSizeMeasureType()::setSelectedItem); +// +// ui.getWeightMeasureType().setSelectedItem(null); +// weightMeasureType.ifPresent(ui.getWeightMeasureType()::setSelectedItem); +// +// ui.getSpecies().setData(availableSpecies); +// if (species != null) { +// log.info(String.format("Will set species : %s", species)); +// ui.getSpecies().setSelectedItem(null); +// ui.getSpecies().setSelectedItem(species); +// } +// +// setFormFocusOwner(requestFocus); +// +// tableEditBean.addPropertyChangeListener(NonTargetLengthDto.PROPERTY_WEIGHT, weightChanged); +// tableEditBean.addPropertyChangeListener(NonTargetLengthDto.PROPERTY_LENGTH, lengthChanged); +// tableEditBean.addPropertyChangeListener(NonTargetLengthDto.PROPERTY_SPECIES, speciesChanged); } @Override @@ -307,66 +323,81 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS saveResult.toDto(bean); } - @Override + // @Override public void resetIsWeightComputed() { getModel().getTableEditBean().setIsWeightComputed(false); ui.getWeight().grabFocus(); } - @Override + // @Override public void resetIsLengthComputed() { getModel().getTableEditBean().setIsLengthComputed(false); ui.getLength().grabFocus(); } - - @Override - protected void onWeightChanged(Float newValue) { - getModel().getTableEditBean().setIsWeightComputed(false); - } - - @Override - protected void onLengthChanged(Float newValue) { - getModel().getTableEditBean().setIsLengthComputed(false); - } - - @Override - protected void onSpeciesChanged(SpeciesReference species) { - - Optional<SizeMeasureTypeReference> oldSizeMeasureType = Optional.ofNullable(getModel().getTableEditBean()).map(NonTargetLengthDto::getSizeMeasureType); - Optional<SizeMeasureTypeReference> sizeMeasureType = getSpeciesDefaultSizeMeasureType(species); - log.debug(prefix + "Default size measure " + sizeMeasureType.orElse(null)); - ui.getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null)); - resetDefaultSizeMeasureType(); - oldSizeMeasureType.ifPresent(sizeMeasureTypeReference -> getModel().getTableEditBean().setSizeMeasureType(sizeMeasureTypeReference)); - } - - public void resetDefaultSizeMeasureType() { - ui.getSizeMeasureType().setSelectedItem(null); - ui.getSizeMeasureType().setSelectedItem(ui.getModel().getDefaultSizeMeasureType()); - } - -// @Override -// protected ContentMode computeWritableContentMode() { -// ContentMode mode = super.computeWritableContentMode(); // -// String selectedId = getSelectedId(); +// @Override +// protected void onWeightChanged(Float newValue) { +// getModel().getTableEditBean().setIsWeightComputed(false); +// } // -// boolean showData = getNonTargetSampleService().canUseNonTargetSample(selectedId); +// @Override +// protected void onLengthChanged(Float newValue) { +// getModel().getTableEditBean().setIsLengthComputed(false); +// } + +// @Override +// protected void onSpeciesChanged(SpeciesReference species) { // -// ui.getModel().setShowData(showData); +// recomputeDefaultSizeMeasureType(species); // -// if (mode == ContentMode.UPDATE && !showData) { +// recomputeDefaultWeightMeasureType(species); +// } // -// // on repasse en mode resteint car on ne peut pas éditer l'écran -// mode = ContentMode.READ; +// @Override +// protected void onWeightChanged(Float newValue) { +// getModel().getTableEditBean().setIsWeightComputed(false); +// } +//// +// @Override +// protected void onWeightChanged(Float newValue) { +// getModel().getTableEditBean().setIsWeightComputed(false); +// } // -// addMessage(ui, -// NuitonValidatorScope.INFO, -// getTypeI18nKey(SetDto.class), -// t("observe.data.ps.observation.Set.message.no.nonTargetDiscarded")); -// } -// return mode; +// @Override +// protected void onLengthChanged(Float newValue) { +// getModel().getTableEditBean().setIsLengthComputed(false); +// } + +// @Override +// protected void onLengthChanged(Float newValue) { +// getModel().getTableEditBean().setIsLengthComputed(false); +// } +// protected void recomputeDefaultWeightMeasureType(SpeciesReference species) { +// Optional<WeightMeasureTypeReference> oldWeightMeasureType = Optional.ofNullable(getModel().getTableEditBean()).map(NonTargetLengthDto::getWeightMeasureType); +// Optional<WeightMeasureTypeReference> weightMeasureType = getSpeciesDefaultWeightMeasureType(species); +// log.debug(String.format("%sDefault weight measure %s", prefix, weightMeasureType.orElse(null))); +// ui.getModel().setDefaultWeightMeasureType(weightMeasureType.orElse(null)); +// resetDefaultWeightMeasureType(); +// oldWeightMeasureType.ifPresent(weightMeasureTypeReference -> getModel().getTableEditBean().setWeightMeasureType(weightMeasureTypeReference)); +// } + +// protected void recomputeDefaultSizeMeasureType(SpeciesReference species) { +// Optional<SizeMeasureTypeReference> oldSizeMeasureType = Optional.ofNullable(getModel().getTableEditBean()).map(NonTargetLengthDto::getSizeMeasureType); +// Optional<SizeMeasureTypeReference> sizeMeasureType = getSpeciesDefaultSizeMeasureType(species); +// log.debug(String.format("%sDefault size measure %s", prefix, sizeMeasureType.orElse(null))); +// ui.getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null)); +// resetDefaultSizeMeasureType(); +// oldSizeMeasureType.ifPresent(sizeMeasureTypeReference -> getModel().getTableEditBean().setSizeMeasureType(sizeMeasureTypeReference)); +// } + +// public void resetDefaultSizeMeasureType() { +// ui.getSizeMeasureType().setSelectedItem(null); +// ui.getSizeMeasureType().setSelectedItem(ui.getModel().getDefaultSizeMeasureType()); +// } +// public void resetDefaultWeightMeasureType() { +// ui.getWeightMeasureType().setSelectedItem(null); +// ui.getWeightMeasureType().setSelectedItem(ui.getModel().getDefaultWeightMeasureType()); // } /** @@ -388,12 +419,14 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS // le weight n'est pas modifiable ui.getWeight().setEnabled(false); ui.getWeightMeasureMethod().setEnabled(false); + ui.getWeightMeasureType().setEnabled(false); // l'count est modifiable ui.getCount().setEnabled(true); if (createMode) { // on supprime le weight (si il a été saisie) editBean.setWeight(null); editBean.setWeightMeasureMethod(null); + editBean.setWeightMeasureType(null); // on supprime aussi l'count (pour forcer la saisie) editBean.setCount(null); } @@ -402,6 +435,7 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS // le weight est pas modifiable ui.getWeight().setEnabled(true); ui.getWeightMeasureMethod().setEnabled(true); + ui.getWeightMeasureType().setEnabled(true); // l'count n'est pas modifiable et est toujours de 1 ui.getCount().setEnabled(false); ===================================== client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/NonTargetSampleUIModel.java ===================================== @@ -22,17 +22,20 @@ package fr.ird.observe.client.datasource.editor.content.data.ps.observation; * #L% */ +import fr.ird.observe.client.constants.AcquisitionMode; import fr.ird.observe.client.datasource.api.ObserveDataSourcesManagerApplicationComponent; import fr.ird.observe.client.datasource.api.ObserveSwingDataSource; import fr.ird.observe.client.datasource.editor.content.ContentMode; +import fr.ird.observe.client.datasource.editor.content.data.sample.SampleUIModel; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableMeta; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableModel; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUI; -import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUIModel; import fr.ird.observe.dto.data.ps.observation.NonTargetLengthDto; import fr.ird.observe.dto.data.ps.observation.NonTargetLengthHelper; import fr.ird.observe.dto.data.ps.observation.NonTargetSampleDto; import fr.ird.observe.dto.referential.common.SizeMeasureTypeReference; +import fr.ird.observe.dto.referential.common.SpeciesReference; +import fr.ird.observe.dto.referential.common.WeightMeasureTypeReference; import fr.ird.observe.navigation.model.select.ObserveSelectModelApplicationComponent; import fr.ird.observe.navigation.model.select.ObserveSelectNode; @@ -47,10 +50,7 @@ import java.util.List; * @author Tony Chemit - dev@tchemit.fr * @since XXX */ -public class NonTargetSampleUIModel extends ContentTableUIModel<NonTargetSampleDto, NonTargetLengthDto> { - - public static final String PROPERTY_DEFAULT_SIZE_MEASURE_TYPE = "defaultSizeMeasureType"; - private SizeMeasureTypeReference defaultSizeMeasureType; +public class NonTargetSampleUIModel extends SampleUIModel<NonTargetSampleDto, NonTargetLengthDto> { public NonTargetSampleUIModel(NonTargetSampleUI ui) { @@ -121,16 +121,6 @@ public class NonTargetSampleUIModel extends ContentTableUIModel<NonTargetSampleD return ObserveSelectModelApplicationComponent.value().getSeine().getSet(); } - public SizeMeasureTypeReference getDefaultSizeMeasureType() { - return defaultSizeMeasureType; - } - - public void setDefaultSizeMeasureType(SizeMeasureTypeReference defaultSizeMeasureType) { - SizeMeasureTypeReference oldValue = getDefaultSizeMeasureType(); - this.defaultSizeMeasureType = defaultSizeMeasureType; - firePropertyChange(PROPERTY_DEFAULT_SIZE_MEASURE_TYPE, oldValue, defaultSizeMeasureType); - } - @Override protected boolean computeShowData(ContentMode contentMode) { String selectedId = getSelectedId(); @@ -138,15 +128,43 @@ public class NonTargetSampleUIModel extends ContentTableUIModel<NonTargetSampleD return mainDataSource.getPsObservationNonTargetSampleService().canUseNonTargetSample(selectedId); } - //FIXME Voir pourquoi c'est le seul modèle qui surcharge ça ??? -// @Override -// public <D extends ReferentialDto, R extends ReferentialDtoReference<D, R>> Optional<Set<R>> tryToGetReferentialReferenceSet(String propertyName) { -// //noinspection unchecked -// ReferentialDtoReferenceSet<R> referenceSet = (ReferentialDtoReferenceSet) getReferentialReferenceSets().get(propertyName); -// Set<R> references = null; -// if (referenceSet != null) { -// references = referenceSet.toSet(); -// } -// return Optional.ofNullable(references); -// } + @Override + public SpeciesReference getSpecies() { + return getTableEditBean().getSpecies(); + } + + @Override + public SizeMeasureTypeReference getSizeMeasureType() { + return getTableEditBean().getSizeMeasureType(); + } + + @Override + public WeightMeasureTypeReference getWeightMeasureType() { + return getTableEditBean().getWeightMeasureType(); + } + + @Override + public int getAcquisitionMode() { + return getTableEditBean().getAcquisitionMode(); + } + + @Override + public void setAcquisitionMode(int acquisitionMode) { + getTableEditBean().setAcquisitionMode(acquisitionMode); + } + + @Override + public AcquisitionMode getDefaultAcquisitionMode() { + return AcquisitionMode.byEffectif; + } + + @Override + public void setWeightMeasureType(WeightMeasureTypeReference weightMeasureType) { + getTableEditBean().setWeightMeasureType(weightMeasureType); + } + + @Override + public void setSizeMeasureType(SizeMeasureTypeReference sizeMeasureType) { + getTableEditBean().setSizeMeasureType(sizeMeasureType); + } } ===================================== client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/TargetSampleImplHandler.java ===================================== @@ -0,0 +1,119 @@ +package fr.ird.observe.client.datasource.editor.content.data.ps.observation; + +/*- + * #%L + * ObServe :: Client DataSource Editor PS + * %% + * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.client.datasource.editor.content.data.sample.SampleUI; +import fr.ird.observe.client.datasource.editor.content.data.sample.SampleUIHandler; +import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUI; +import fr.ird.observe.dto.data.ps.observation.TargetLengthDto; +import fr.ird.observe.dto.data.ps.observation.TargetSampleDto; + +import javax.swing.JComponent; + +public class TargetSampleImplHandler<U extends ContentTableUI<TargetSampleDto, TargetLengthDto, U> & SampleUI<TargetSampleDto, TargetLengthDto, U>> extends SampleUIHandler<TargetSampleDto, TargetLengthDto, U> { + + private final U ui; + + public TargetSampleImplHandler(U ui) { + this.ui = ui; + } + + @Override + public TargetSampleUIModel getModel() { + return (TargetSampleUIModel) super.getModel(); + } + + @Override + protected void onWeightChanged(Float newValue) { + TargetSampleUIModel model = getModel(); + model.getTableEditBean().setIsWeightComputed(false); + TargetLengthDto tableEditBean = model.getTableEditBean(); + if (newValue == null) { + tableEditBean.setWeightMeasureMethod(null); + } + } + + @Override + protected void onLengthChanged(Float newValue) { + TargetSampleUIModel model = getModel(); + model.getTableEditBean().setIsLengthComputed(false); + TargetLengthDto tableEditBean = model.getTableEditBean(); + if (newValue == null) { + tableEditBean.setLengthMeasureMethod(null); + } + } + + @Override + protected void onAcquisitionModeChangedToEffectif(boolean createMode, TargetLengthDto editBean) { + TargetSampleUI ui = (TargetSampleUI) this.ui; + // weight not enabled + ui.getWeight().setEnabled(false); +// ui.getWeightMeasureType().setEnabled(false); + ui.getWeightMeasureMethod().setEnabled(false); + + // count enabled + ui.getCount().setEnabled(true); + + if (createMode) { + + // delete any weight value + editBean.setWeight(null); + editBean.setWeightMeasureType(null); + editBean.setWeightMeasureMethod(null); + // delete count (force use to reset it) + editBean.setCount(null); + } + + } + + @Override + protected void onAcquisitionModeChangedToIndividual(boolean createMode, TargetLengthDto editBean) { + TargetSampleUI ui = (TargetSampleUI) this.ui; + // weight enabled + ui.getWeight().setEnabled(true); +// ui.getWeightMeasureType().setEnabled(true); + ui.getWeightMeasureMethod().setEnabled(true); + + // count not enabled (set to one) + ui.getCount().setEnabled(false); + if (createMode) { + // Always set to one + editBean.setCount(1); + editBean.setWeightMeasureType(getModel().getDefaultWeightMeasureType()); + } + } + + @Override + protected void setFormFocusOwner(JComponent requestFocus) { + ui.getHandler().setFormFocusOwner(requestFocus); + } + + @Override + protected JComponent getNewFormFocusOwner(boolean create, boolean modelCreate, boolean unsetSpecies, boolean withPrevious) { + TargetSampleUI ui = (TargetSampleUI) this.ui; + if (create && !withPrevious) { + return ui.getSpecies(); + } + return ui.getSex(); + } +} ===================================== client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/TargetSampleUI.jaxx ===================================== @@ -21,9 +21,10 @@ <fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUI beanScope="bean" abstract="true" i18n="fr.ird.observe.dto.data.ps.observation.TargetLengthDto" superGenericType='TargetSampleDto, TargetLengthDto, TargetSampleUI' - implements="fr.ird.observe.client.datasource.editor.content.data.table.SortableTableUI"> + implements="fr.ird.observe.client.datasource.editor.content.data.sample.SampleUI<TargetSampleDto, TargetLengthDto, TargetSampleUI>, fr.ird.observe.client.datasource.editor.content.data.table.SortableTableUI"> <style source="classpath:/fr/ird/observe/client/datasource/editor/content/data/CommonTable.jcss"/> + <style source="classpath:/fr/ird/observe/client/datasource/editor/content/data/sample/CommonSample.jcss"/> <style source="AbstractSampleUI.jcss"/> <import> @@ -33,6 +34,7 @@ fr.ird.observe.dto.referential.common.SpeciesReference fr.ird.observe.dto.referential.common.SexReference fr.ird.observe.dto.referential.common.SizeMeasureTypeReference + fr.ird.observe.dto.referential.common.WeightMeasureTypeReference fr.ird.observe.dto.referential.common.LengthMeasureMethodReference fr.ird.observe.dto.referential.common.WeightMeasureMethodReference fr.ird.observe.client.datasource.editor.content.data.table.* @@ -51,6 +53,8 @@ <!-- model --> <TargetSampleUIModel id='model' constructorParams='this'/> + <TargetSampleImplHandler id='sampleHandler' initializer="getContextValue(TargetSampleImplHandler.class)"/> + <!-- edit bean --> <TargetSampleDto id='bean'/> @@ -73,19 +77,16 @@ errorTableModel='{getErrorTableModel()}' context='update' parentValidator='{validator}'/> <ButtonGroup id='acquisitionModeGroup' - onStateChanged='TargetSampleUIHandler.updateModeSaisie(this, (AcquisitionMode) acquisitionModeGroup.getSelectedValue())'/> + onStateChanged='getSampleHandler().updateAcquisitionMode((AcquisitionMode) acquisitionModeGroup.getSelectedValue())'/> <script><![CDATA[ @Override public abstract TargetSampleUIHandler getHandler(); -public String getWeightDataTip(boolean computed) { - return computed ? t(TargetSampleUIHandler.POIDS_COMPUTED_TIP) : t(TargetSampleUIHandler.POIDS_OBSERVED_TIP); -} - -public String getLengthDataTip(boolean computed) { - return computed ? t(TargetSampleUIHandler.LONGUEUR_COMPUTED_TIP) : t(TargetSampleUIHandler.LONGUEUR_OBSERVED_TIP); +@Override +public TargetSampleUIModel getSampleModel() { + return getModel(); } ]]> </script> @@ -114,10 +115,19 @@ public String getLengthDataTip(boolean computed) { </cell> <cell> <JPanel layout='{new BorderLayout()}'> - <JaxxComboBox id='sizeMeasureType' genericType='SizeMeasureTypeReference' - constructorParams='this' constraints="BorderLayout.CENTER"/> - <JButton id="defaultSizeMeasureType" constraints="BorderLayout.EAST" - onActionPerformed="getHandler().resetDefaultSizeMeasureType()"/> + <JaxxComboBox id='sizeMeasureType' genericType='SizeMeasureTypeReference' constructorParams='this' constraints="BorderLayout.CENTER"/> + <JButton id="defaultSizeMeasureType" constraints="BorderLayout.EAST"/> + </JPanel> + </cell> + </row> + <row> + <cell> + <JLabel id='weightMeasureTypeLabel' styleClass="i18n"/> + </cell> + <cell> + <JPanel layout='{new BorderLayout()}'> + <JaxxComboBox id='weightMeasureType' genericType='WeightMeasureTypeReference' constructorParams='this' constraints="BorderLayout.CENTER"/> + <JButton id="defaultWeightMeasureType" constraints="BorderLayout.EAST"/> </JPanel> </cell> </row> @@ -160,7 +170,7 @@ public String getLengthDataTip(boolean computed) { </cell> </row> - <!-- weight individuel --> + <!-- weight --> <row> <cell> <JLabel id='weightLabel' styleClass="i18n"/> ===================================== client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/TargetSampleUIHandler.java ===================================== @@ -22,9 +22,10 @@ package fr.ird.observe.client.datasource.editor.content.data.ps.observation; import fr.ird.observe.client.configuration.WithClientConfig; -import fr.ird.observe.client.constants.AcquisitionMode; +import fr.ird.observe.client.datasource.editor.content.data.sample.SampleUI; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableModel; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUI; +import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUIHandler; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUILayoutFocusTraversalPolicy; import fr.ird.observe.client.datasource.editor.content.spi.ContentUIReferenceCache; import fr.ird.observe.client.datasource.editor.content.spi.ReferentialReferencesFilter; @@ -40,13 +41,13 @@ import fr.ird.observe.dto.referential.common.SpeciesDto; import fr.ird.observe.dto.referential.common.SpeciesReference; import fr.ird.observe.dto.result.SaveResultDto; import fr.ird.observe.spi.DtoModelHelper; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.nuiton.validator.NuitonValidatorScope; -import javax.swing.JComponent; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import java.util.List; -import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; import static io.ultreia.java4all.i18n.I18n.t; @@ -55,7 +56,8 @@ import static io.ultreia.java4all.i18n.I18n.t; * @author Tony Chemit - dev@tchemit.fr * @since 1.0 */ -public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, TargetLengthDto, U>> extends AbstractSampleUIHandler<TargetSampleDto, TargetLengthDto, U> implements WithClientConfig { +public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, TargetLengthDto, U> & SampleUI<TargetSampleDto, TargetLengthDto, U>> extends ContentTableUIHandler<TargetSampleDto, TargetLengthDto, U> implements WithClientConfig { + private static final Logger log = LogManager.getLogger(TargetSampleUIHandler.class); /** * Pour différencier positionner l'invariant de l'écran @@ -64,71 +66,25 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar * @since 1.5 */ private final boolean discarded; + private TargetSampleImplHandler<U> sampleHandler; public TargetSampleUIHandler(boolean discarded) { this.discarded = discarded; } - /** - * Le mode de saisie a été mis à jour. - * - * @param newMode le nouveau de mode de saisie à utiliser - * @since 1.8 - */ - static void updateModeSaisie(TargetSampleUI ui, AcquisitionMode newMode) { - - if (newMode == null) { - - // mode null (cela peut arriver avec les bindings) - return; - } - boolean createMode = ui.getTableModel().isCreate(); - - TargetLengthDto editBean = ui.getTableEditBean(); - switch (newMode) { - - case byEffectif: - - // le weight n'est pas modifiable - ui.getWeight().setEnabled(false); - ui.getWeightMeasureMethod().setEnabled(false); - - // l'count est modifiable - ui.getCount().setEnabled(true); - - if (createMode) { - - // on supprime le weight (si il a été saisie) - editBean.setWeight(null); - editBean.setWeightMeasureMethod(null); - // on supprime aussi l'count (pour forcer la saisie) - editBean.setCount(null); - } - break; - - case byIndividu: - - // le weight est pas modifiable - ui.getWeight().setEnabled(true); - ui.getWeightMeasureMethod().setEnabled(true); - - // l'count n'est pas modifiable et est toujours de 1 - ui.getCount().setEnabled(false); - - - if (createMode) { - - // on positionne l'count à 1 (seule valeur possible) - editBean.setCount(1); - } - break; - } - - if (createMode) { + @Override + public void beforeInit(U ui) { + super.beforeInit(ui); + sampleHandler = new TargetSampleImplHandler<>(ui); + sampleHandler.beforeInit(ui); + ui.setContextValue(sampleHandler); + } - // on propage le mode de saisie dans le bean - editBean.setAcquisitionMode(newMode.ordinal()); - } + @Override + public void afterInit(U ui) { + super.afterInit(ui); + sampleHandler.init(); + ui.removeContextValue(TargetSampleImplHandler.class); } boolean isDiscarded() { @@ -191,11 +147,16 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar log.info(prefix + "Using " + data.size() + " size measure type(s)."); // We need to fill the referential cache (normally this is done in onOpenModel method) getModel().getReferenceCache().loadReferentialReferenceSetsInModel(DtoModelHelper.getOptionalFormDefinition(TargetSampleDto.class).get(), true); - loadSizeMeasureTypes(); + getModel().loadSizeMeasureTypes(); checkSizeMeasureTypes(data); ((TargetSampleUI) ui).getSizeMeasureType().setData(data); } + @Override + public TargetSampleUIModel getModel() { + return (TargetSampleUIModel) super.getModel(); + } + @Override protected boolean onOpenComputeShowData() { return getPsObservationTargetSampleService().canUseTargetSample(getModel().getSelectedId(), discarded); @@ -238,105 +199,113 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar @Override protected void onSelectedRowChanged(int editingRow, TargetLengthDto bean, boolean create) { + sampleHandler.onSelectedRowChanged(editingRow, bean, create); ContentTableModel<TargetSampleDto, TargetLengthDto> model = getTableModel(); - TargetSampleUI ui = (TargetSampleUI) getUi(); +// TargetSampleUI ui = (TargetSampleUI) getUi(); if (!model.isEditable()) { return; } TargetLengthDto tableEditBean = getModel().getTableEditBean(); - tableEditBean.removePropertyChangeListener(TargetLengthDto.PROPERTY_WEIGHT, weightChanged); - tableEditBean.removePropertyChangeListener(TargetLengthDto.PROPERTY_LENGTH, lengthChanged); - tableEditBean.removePropertyChangeListener(TargetLengthDto.PROPERTY_SPECIES, speciesChanged); - - SpeciesReference species = bean.getSpecies(); - - JComponent requestFocus; - - AcquisitionMode acquisitionMode; - Optional<SizeMeasureTypeReference> sizeMeasureType = Optional.empty(); - - if (create) { - - acquisitionMode = AcquisitionMode.byEffectif; - if (model.isCreate()) { - - if (editingRow > 0) { - // on recupere l'species de la ligne precedente - TargetLengthDto editBean = model.getValueAt(editingRow - 1); - species = editBean.getSpecies(); - acquisitionMode = AcquisitionMode.valueOf(editBean.getAcquisitionMode()); - } - - // on utilise le code par defaut de l'espèce - sizeMeasureType = getSpeciesDefaultSizeMeasureType(species); - if (!sizeMeasureType.isPresent()) { - // au cas où, on repasse toujours sur lf - sizeMeasureType = Optional.of(SizeMeasureTypeReference.getLf(ui.getSizeMeasureType().getModel().getData())); - } - ui.getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null)); - } - requestFocus = ui.getSpecies(); - } else { - requestFocus = ui.getCount(); - acquisitionMode = AcquisitionMode.valueOf(bean.getAcquisitionMode()); - sizeMeasureType = Optional.ofNullable(bean.getSizeMeasureType()); - } + sampleHandler.onLengthChanged(tableEditBean.getLength()); + sampleHandler.onWeightChanged(tableEditBean.getWeight()); - ui.getAcquisitionModeGroup().setSelectedValue(null); - ui.getAcquisitionModeGroup().setSelectedValue(acquisitionMode); - - ui.getSizeMeasureType().setSelectedItem(null); - sizeMeasureType.ifPresent(sizeMeasureTypeDtoReferentialReference -> ui.getSizeMeasureType().setSelectedItem(sizeMeasureTypeDtoReferentialReference)); - - // on met a jour l'espece - ui.getSpecies().setSelectedItem(null); - if (species != null) { - log.debug(prefix + "species to use " + species); - ui.getSpecies().setSelectedItem(species); - } - setFormFocusOwner(requestFocus); - - tableEditBean.addPropertyChangeListener(TargetLengthDto.PROPERTY_WEIGHT, weightChanged); - tableEditBean.addPropertyChangeListener(TargetLengthDto.PROPERTY_LENGTH, lengthChanged); - tableEditBean.addPropertyChangeListener(TargetLengthDto.PROPERTY_SPECIES, speciesChanged); +// tableEditBean.removePropertyChangeListener(TargetLengthDto.PROPERTY_WEIGHT, weightChanged); +// tableEditBean.removePropertyChangeListener(TargetLengthDto.PROPERTY_LENGTH, lengthChanged); +// tableEditBean.removePropertyChangeListener(TargetLengthDto.PROPERTY_SPECIES, speciesChanged); +// +// SpeciesReference species = bean.getSpecies(); +// +// JComponent requestFocus; +// +// AcquisitionMode acquisitionMode; +// Optional<SizeMeasureTypeReference> sizeMeasureType = Optional.empty(); +// Optional<WeightMeasureTypeReference> weightMeasureType = Optional.empty(); +// +// if (create) { +// +// acquisitionMode = AcquisitionMode.byEffectif; +// if (model.isCreate()) { +// +// if (editingRow > 0) { +// // on recupere l'species de la ligne precedente +// TargetLengthDto editBean = model.getValueAt(editingRow - 1); +// species = editBean.getSpecies(); +// acquisitionMode = AcquisitionMode.valueOf(editBean.getAcquisitionMode()); +// } +// +// // on utilise le code par defaut de l'espèce +// sizeMeasureType = getSpeciesDefaultSizeMeasureType(species); +// ui.getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null)); +// if (!sizeMeasureType.isPresent()) { +// // au cas où, on repasse toujours sur lf +// sizeMeasureType = Optional.of(SizeMeasureTypeReference.getLf(ui.getSizeMeasureType().getModel().getData())); +// } +// weightMeasureType = getSpeciesDefaultWeightMeasureType(species); +// ui.getModel().setDefaultWeightMeasureType(weightMeasureType.orElse(null)); +// } +// requestFocus = ui.getSpecies(); +// } else { +// requestFocus = ui.getCount(); +// acquisitionMode = AcquisitionMode.valueOf(bean.getAcquisitionMode()); +// sizeMeasureType = Optional.ofNullable(bean.getSizeMeasureType()); +// weightMeasureType = Optional.ofNullable(bean.getWeightMeasureType()); +// } +// +// ui.getAcquisitionModeGroup().setSelectedValue(null); +// ui.getAcquisitionModeGroup().setSelectedValue(acquisitionMode); +// +// ui.getSizeMeasureType().setSelectedItem(null); +// sizeMeasureType.ifPresent(sizeMeasureTypeDtoReferentialReference -> ui.getSizeMeasureType().setSelectedItem(sizeMeasureTypeDtoReferentialReference)); +// +// ui.getWeightMeasureType().setSelectedItem(null); +// weightMeasureType.ifPresent(weightMeasureTypeDtoReferentialReference -> ui.getWeightMeasureType().setSelectedItem(weightMeasureTypeDtoReferentialReference)); +// +// // on met a jour l'espece +// ui.getSpecies().setSelectedItem(null); +// if (species != null) { +// log.debug(prefix + "species to use " + species); +// ui.getSpecies().setSelectedItem(species); +// } +// setFormFocusOwner(requestFocus); +// +// tableEditBean.addPropertyChangeListener(TargetLengthDto.PROPERTY_WEIGHT, weightChanged); +// tableEditBean.addPropertyChangeListener(TargetLengthDto.PROPERTY_LENGTH, lengthChanged); +// tableEditBean.addPropertyChangeListener(TargetLengthDto.PROPERTY_SPECIES, speciesChanged); } - @Override + // @Override public void resetIsWeightComputed() { getModel().getTableEditBean().setIsWeightComputed(false); ((TargetSampleUI) ui).getWeight().grabFocus(); } - @Override + // @Override public void resetIsLengthComputed() { getModel().getTableEditBean().setIsLengthComputed(false); ((TargetSampleUI) ui).getLength().grabFocus(); } - @Override - protected void onSpeciesChanged(SpeciesReference species) { - // on utilise le code par defaut de l'espèce - Optional<SizeMeasureTypeReference> sizeMeasureType = getSpeciesDefaultSizeMeasureType(species); - ((TargetSampleUI) ui).getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null)); - resetDefaultSizeMeasureType(); - } - - @Override - protected void onWeightChanged(Float newValue) { - getModel().getTableEditBean().setIsWeightComputed(false); - } +// @Override +// protected void onSpeciesChanged(SpeciesReference species) { +// // on utilise le code par defaut de l'espèce +// Optional<SizeMeasureTypeReference> sizeMeasureType = getSpeciesDefaultSizeMeasureType(species); +// ((TargetSampleUI) ui).getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null)); +// resetDefaultSizeMeasureType(); +// Optional<WeightMeasureTypeReference> weightMeasureType = getSpeciesDefaultWeightMeasureType(species); +// ((TargetSampleUI) ui).getModel().setDefaultWeightMeasureType(weightMeasureType.orElse(null)); +// resetDefaultWeightMeasureType(); +// } - @Override - protected void onLengthChanged(Float newValue) { - getModel().getTableEditBean().setIsLengthComputed(false); - } +// @Override +// protected void onWeightChanged(Float newValue) { +// getModel().getTableEditBean().setIsWeightComputed(false); +// } - public void resetDefaultSizeMeasureType() { - TargetSampleUI ui = (TargetSampleUI) getUi(); - ui.getSizeMeasureType().setSelectedItem(null); - ui.getSizeMeasureType().setSelectedItem(ui.getModel().getDefaultSizeMeasureType()); - } +// @Override +// protected void onLengthChanged(Float newValue) { +// getModel().getTableEditBean().setIsLengthComputed(false); +// } private void checkSizeMeasureTypes(List<SizeMeasureTypeReference> data) { if (data.size() != 2) { @@ -344,29 +313,4 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar } } -// @Override -// protected ContentMode computeWritableContentMode() { -// ContentMode mode = super.computeWritableContentMode(); -// -// String selectedId = getSelectedId(); -// -// boolean showData = getTargetSampleService().canUseTargetSample(selectedId, discarded); -// -// getModel().setShowData(showData); -// -// if (mode == ContentMode.UPDATE && !showData) { -// -// mode = ContentMode.READ; -// -// addMessage(ui, -// NuitonValidatorScope.INFO, -// getTypeI18nKey(SetDto.class), -// discarded ? -// t("observe.data.ps.observation.Set.message.no.targetCatch") : -// t("observe.data.ps.observation.Set.message.no.targetDiscarded") -// ); -// } -// return mode; -// } - } ===================================== client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/TargetSampleUIModel.java ===================================== @@ -22,17 +22,20 @@ package fr.ird.observe.client.datasource.editor.content.data.ps.observation; * #L% */ +import fr.ird.observe.client.constants.AcquisitionMode; import fr.ird.observe.client.datasource.api.ObserveDataSourcesManagerApplicationComponent; import fr.ird.observe.client.datasource.api.ObserveSwingDataSource; import fr.ird.observe.client.datasource.editor.content.ContentMode; +import fr.ird.observe.client.datasource.editor.content.data.sample.SampleUIModel; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableMeta; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableModel; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUI; -import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUIModel; import fr.ird.observe.dto.data.ps.observation.TargetLengthDto; import fr.ird.observe.dto.data.ps.observation.TargetLengthHelper; import fr.ird.observe.dto.data.ps.observation.TargetSampleDto; import fr.ird.observe.dto.referential.common.SizeMeasureTypeReference; +import fr.ird.observe.dto.referential.common.SpeciesReference; +import fr.ird.observe.dto.referential.common.WeightMeasureTypeReference; import fr.ird.observe.navigation.model.select.ObserveSelectModelApplicationComponent; import fr.ird.observe.navigation.model.select.ObserveSelectNode; @@ -47,10 +50,7 @@ import java.util.List; * @author Tony Chemit - dev@tchemit.fr * @since XXX */ -public class TargetSampleUIModel extends ContentTableUIModel<TargetSampleDto, TargetLengthDto> { - - public static final String PROPERTY_DEFAULT_SIZE_MEASURE_TYPE = "defaultSizeMeasureType"; - private SizeMeasureTypeReference defaultSizeMeasureType; +public class TargetSampleUIModel extends SampleUIModel<TargetSampleDto, TargetLengthDto> { public TargetSampleUIModel(TargetSampleUI ui) { @@ -120,13 +120,43 @@ public class TargetSampleUIModel extends ContentTableUIModel<TargetSampleDto, Ta return mainDataSource.getPsObservationTargetSampleService().canUseTargetSample(selectedId, ((TargetSampleUI)ui).getHandler().isDiscarded()); } - public SizeMeasureTypeReference getDefaultSizeMeasureType() { - return defaultSizeMeasureType; + @Override + public SpeciesReference getSpecies() { + return getTableEditBean().getSpecies(); + } + + @Override + public SizeMeasureTypeReference getSizeMeasureType() { + return getTableEditBean().getSizeMeasureType(); + } + + @Override + public WeightMeasureTypeReference getWeightMeasureType() { + return getTableEditBean().getWeightMeasureType(); + } + + @Override + public int getAcquisitionMode() { + return getTableEditBean().getAcquisitionMode(); } - public void setDefaultSizeMeasureType(SizeMeasureTypeReference defaultSizeMeasureType) { - SizeMeasureTypeReference oldValue = getDefaultSizeMeasureType(); - this.defaultSizeMeasureType = defaultSizeMeasureType; - firePropertyChange(PROPERTY_DEFAULT_SIZE_MEASURE_TYPE, oldValue, defaultSizeMeasureType); + @Override + public void setAcquisitionMode(int acquisitionMode) { + getTableEditBean().setAcquisitionMode(acquisitionMode); + } + + @Override + public AcquisitionMode getDefaultAcquisitionMode() { + return AcquisitionMode.byEffectif; + } + + @Override + public void setWeightMeasureType(WeightMeasureTypeReference weightMeasureType) { + getTableEditBean().setWeightMeasureType(weightMeasureType); + } + + @Override + public void setSizeMeasureType(SizeMeasureTypeReference sizeMeasureType) { + getTableEditBean().setSizeMeasureType(sizeMeasureType); } } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/609458e569676062840eccc58e... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/609458e569676062840eccc58e... You're receiving this email because of your account on gitlab.com.