Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe

Commits:

11 changed files:

Changes:

  • client-datasource-editor-ps/src/main/i18n/getters/jaxx.getter
    ... ... @@ -5,6 +5,7 @@ observe.Id.ocean
    5 5
     observe.Id.sex
    
    6 6
     observe.Id.sizeMeasureType
    
    7 7
     observe.Id.species
    
    8
    +observe.Id.weightMeasureType
    
    8 9
     observe.Id.whenArriving
    
    9 10
     observe.Id.whenLeaving
    
    10 11
     observe.action.reset
    
    ... ... @@ -22,6 +23,7 @@ observe.data.Data.startDate
    22 23
     observe.data.Data.vessel
    
    23 24
     observe.data.Data.weightMeasureMethod
    
    24 25
     observe.data.Sample.action.resetDefaultSizeMeasureType.tip
    
    26
    +observe.data.Sample.action.resetDefaultWeightMeasureType.tip
    
    25 27
     observe.data.ps.common.GearUseFeatures.action.create.tip
    
    26 28
     observe.data.ps.common.GearUseFeatures.action.create.tip.tip
    
    27 29
     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 @@
    20 20
      * #L%
    
    21 21
      */
    
    22 22
     
    
    23
    -#acquisitionModeGroup {
    
    24
    -  selectedValue:{AcquisitionMode.valueOf(tableEditBean.getAcquisitionMode())};
    
    25
    -}
    
    26
    -
    
    27
    -#acquisitionModePanel {
    
    28
    -  border:{new TitledBorder(t("observe.data.Data.acquisitionMode"))};
    
    29
    -}
    
    30
    -
    
    31
    -#acquisitionModeEffectif {
    
    32
    -  buttonGroup:"acquisitionModeGroup";
    
    33
    -  value:{AcquisitionMode.byEffectif};
    
    34
    -  text:{AcquisitionMode.byEffectif.toString()};
    
    35
    -  selected:{tableEditBean.getAcquisitionMode() == 0};
    
    36
    -  enabled:{!tableModel.isEditable() || tableModel.isCreate()};
    
    37
    -}
    
    38
    -
    
    39
    -#acquisitionModeIndividu {
    
    40
    -  buttonGroup:"acquisitionModeGroup";
    
    41
    -  value:{AcquisitionMode.byIndividu};
    
    42
    -  text:{AcquisitionMode.byIndividu.toString()};
    
    43
    -  selected:{tableEditBean.getAcquisitionMode() == 1};
    
    44
    -  enabled:{!tableModel.isEditable() || tableModel.isCreate()};
    
    45
    -}
    
    46
    -
    
    47
    -#sizeMeasureTypePanel {
    
    48
    -  border:{new TitledBorder(t("observe.data.Data.speciesAndSizeMeasure"))};
    
    49
    -}
    
    50
    -
    
    51
    -#sizeMeasureType {
    
    52
    -  enabled:{tableEditBean.getSpecies() != null};
    
    53
    -}
    
    54
    -
    
    55
    -#defaultSizeMeasureType {
    
    56
    -  actionIcon:combobox-reset2;
    
    57
    -  toolTipText:"observe.data.Sample.action.resetDefaultSizeMeasureType.tip";
    
    58
    -  enabled:{model.getDefaultSizeMeasureType() != null};
    
    59
    -  focusable:false;
    
    60
    -}
    
    61
    -
    
    62 23
     #lengthSourceInformation {
    
    63 24
       disabledIcon: {iconDataObserve};
    
    64 25
       icon: {iconDataCalcule};
    
    ... ... @@ -73,7 +34,7 @@
    73 34
     #weightSourceInformation {
    
    74 35
       disabledIcon: {iconDataObserve};
    
    75 36
       icon: {iconDataCalcule};
    
    76
    -  enabled: {tableEditBean.isIsWeightComputed()};
    
    37
    +  enabled: {tableEditBean.getAcquisitionMode() == 1 && tableEditBean.isIsWeightComputed()};
    
    77 38
       toolTipText:{getWeightDataTip(tableEditBean.isIsWeightComputed())};
    
    78 39
     }
    
    79 40
     
    

  • 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;
    31 31
     import fr.ird.observe.dto.data.ps.observation.TargetLengthDto;
    
    32 32
     import fr.ird.observe.dto.referential.common.SizeMeasureTypeReference;
    
    33 33
     import fr.ird.observe.dto.referential.common.SpeciesReference;
    
    34
    +import fr.ird.observe.dto.referential.common.WeightMeasureTypeReference;
    
    34 35
     import org.apache.logging.log4j.LogManager;
    
    35 36
     import org.apache.logging.log4j.Logger;
    
    36 37
     
    
    ... ... @@ -83,6 +84,7 @@ public abstract class AbstractSampleUIHandler<E extends DataDto, D extends DataD
    83 84
         final PropertyChangeListener speciesChanged;
    
    84 85
     
    
    85 86
         private ImmutableMap<String, SizeMeasureTypeReference> sizeMeasureTypeReferenceMap;
    
    87
    +    private ImmutableMap<String, WeightMeasureTypeReference> weightMeasureTypeReferenceMap;
    
    86 88
     
    
    87 89
         AbstractSampleUIHandler() {
    
    88 90
             super();
    
    ... ... @@ -104,6 +106,8 @@ public abstract class AbstractSampleUIHandler<E extends DataDto, D extends DataD
    104 106
         void loadSizeMeasureTypes() {
    
    105 107
             List<SizeMeasureTypeReference> sizeMeasureTypeReferences = getModel().getReferenceCache().getReferentialReferences(NonTargetLengthDto.PROPERTY_SIZE_MEASURE_TYPE);
    
    106 108
             sizeMeasureTypeReferenceMap = Maps.uniqueIndex(sizeMeasureTypeReferences, SizeMeasureTypeReference::getId);
    
    109
    +        List<WeightMeasureTypeReference> weightMeasureTypeReferences = getModel().getReferenceCache().getReferentialReferences(NonTargetLengthDto.PROPERTY_WEIGHT_MEASURE_TYPE);
    
    110
    +        weightMeasureTypeReferenceMap = Maps.uniqueIndex(weightMeasureTypeReferences, WeightMeasureTypeReference::getId);
    
    107 111
         }
    
    108 112
     
    
    109 113
         Optional<SizeMeasureTypeReference> getSpeciesDefaultSizeMeasureType(SpeciesReference species) {
    
    ... ... @@ -113,7 +117,19 @@ public abstract class AbstractSampleUIHandler<E extends DataDto, D extends DataD
    113 117
                 result = sizeMeasureTypeReferenceMap.get(sizeMeasureId);
    
    114 118
                 log.info("Use as default size measure type: " + result);
    
    115 119
             } else {
    
    116
    -            log.info("No default size measure type defined (species is null, or no default size measure definied on it.");
    
    120
    +            log.info("No default size measure type defined (species is null, or no default size measure defined on it.");
    
    121
    +        }
    
    122
    +        return Optional.ofNullable(result);
    
    123
    +    }
    
    124
    +
    
    125
    +    Optional<WeightMeasureTypeReference> getSpeciesDefaultWeightMeasureType(SpeciesReference species) {
    
    126
    +        WeightMeasureTypeReference result = null;
    
    127
    +        if (species != null && species.getSizeMeasureTypeId() != null) {
    
    128
    +            String weightMeasureId = species.getWeightMeasureTypeId();
    
    129
    +            result = weightMeasureTypeReferenceMap.get(weightMeasureId);
    
    130
    +            log.info("Use as default weight measure type: " + result);
    
    131
    +        } else {
    
    132
    +            log.info("No default weight measure type defined (species is null, or no default weight measure defined on it.");
    
    117 133
             }
    
    118 134
             return Optional.ofNullable(result);
    
    119 135
         }
    

  • client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/NonTargetSampleImplHandler.java
    1
    +package fr.ird.observe.client.datasource.editor.content.data.ps.observation;
    
    2
    +
    
    3
    +/*-
    
    4
    + * #%L
    
    5
    + * ObServe :: Client DataSource Editor PS
    
    6
    + * %%
    
    7
    + * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io
    
    8
    + * %%
    
    9
    + * This program is free software: you can redistribute it and/or modify
    
    10
    + * it under the terms of the GNU General Public License as
    
    11
    + * published by the Free Software Foundation, either version 3 of the
    
    12
    + * License, or (at your option) any later version.
    
    13
    + *
    
    14
    + * This program is distributed in the hope that it will be useful,
    
    15
    + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    
    16
    + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    
    17
    + * GNU General Public License for more details.
    
    18
    + *
    
    19
    + * You should have received a copy of the GNU General Public
    
    20
    + * License along with this program.  If not, see
    
    21
    + * <http://www.gnu.org/licenses/gpl-3.0.html>.
    
    22
    + * #L%
    
    23
    + */
    
    24
    +
    
    25
    +import fr.ird.observe.client.datasource.editor.content.data.sample.SampleUIHandler;
    
    26
    +import fr.ird.observe.dto.data.ps.observation.NonTargetLengthDto;
    
    27
    +import fr.ird.observe.dto.data.ps.observation.NonTargetSampleDto;
    
    28
    +
    
    29
    +import javax.swing.JComponent;
    
    30
    +
    
    31
    +public class NonTargetSampleImplHandler extends SampleUIHandler<NonTargetSampleDto, NonTargetLengthDto, NonTargetSampleUI> {
    
    32
    +
    
    33
    +    private final NonTargetSampleUI ui;
    
    34
    +
    
    35
    +    public NonTargetSampleImplHandler(NonTargetSampleUI ui) {
    
    36
    +        this.ui = ui;
    
    37
    +    }
    
    38
    +
    
    39
    +    @Override
    
    40
    +    public NonTargetSampleUIModel getModel() {
    
    41
    +        return (NonTargetSampleUIModel) super.getModel();
    
    42
    +    }
    
    43
    +
    
    44
    +    @Override
    
    45
    +    protected void onWeightChanged(Float newValue) {
    
    46
    +        NonTargetSampleUIModel model = getModel();
    
    47
    +        model.getTableEditBean().setIsWeightComputed(false);
    
    48
    +        NonTargetLengthDto tableEditBean = model.getTableEditBean();
    
    49
    +        if (newValue == null) {
    
    50
    +            tableEditBean.setWeightMeasureMethod(null);
    
    51
    +        }
    
    52
    +    }
    
    53
    +
    
    54
    +    @Override
    
    55
    +    protected void onLengthChanged(Float newValue) {
    
    56
    +        NonTargetSampleUIModel model = getModel();
    
    57
    +        model.getTableEditBean().setIsLengthComputed(false);
    
    58
    +        NonTargetLengthDto tableEditBean = model.getTableEditBean();
    
    59
    +        if (newValue == null) {
    
    60
    +            tableEditBean.setLengthMeasureMethod(null);
    
    61
    +        }
    
    62
    +    }
    
    63
    +
    
    64
    +    @Override
    
    65
    +    protected void onAcquisitionModeChangedToEffectif(boolean createMode, NonTargetLengthDto editBean) {
    
    66
    +
    
    67
    +        // weight not enabled
    
    68
    +        ui.getWeight().setEnabled(false);
    
    69
    +//        ui.getWeightMeasureType().setEnabled(false);
    
    70
    +        ui.getWeightMeasureMethod().setEnabled(false);
    
    71
    +
    
    72
    +        // count enabled
    
    73
    +        ui.getCount().setEnabled(true);
    
    74
    +
    
    75
    +        if (createMode) {
    
    76
    +
    
    77
    +            // delete any weight value
    
    78
    +            editBean.setWeight(null);
    
    79
    +            editBean.setWeightMeasureType(null);
    
    80
    +            editBean.setWeightMeasureMethod(null);
    
    81
    +            // delete count (force use to reset it)
    
    82
    +            editBean.setCount(null);
    
    83
    +        }
    
    84
    +
    
    85
    +    }
    
    86
    +
    
    87
    +    @Override
    
    88
    +    protected void onAcquisitionModeChangedToIndividual(boolean createMode, NonTargetLengthDto editBean) {
    
    89
    +
    
    90
    +        // weight enabled
    
    91
    +        ui.getWeight().setEnabled(true);
    
    92
    +//        ui.getWeightMeasureType().setEnabled(true);
    
    93
    +        ui.getWeightMeasureMethod().setEnabled(true);
    
    94
    +
    
    95
    +        // count not enabled (set to one)
    
    96
    +        ui.getCount().setEnabled(false);
    
    97
    +        if (createMode) {
    
    98
    +            // Always set to one
    
    99
    +            editBean.setCount(1);
    
    100
    +            editBean.setWeightMeasureType(getModel().getDefaultWeightMeasureType());
    
    101
    +        }
    
    102
    +    }
    
    103
    +
    
    104
    +    @Override
    
    105
    +    protected void setFormFocusOwner(JComponent requestFocus) {
    
    106
    +        ui.getHandler().setFormFocusOwner(requestFocus);
    
    107
    +    }
    
    108
    +
    
    109
    +    @Override
    
    110
    +    protected JComponent getNewFormFocusOwner(boolean create, boolean modelCreate, boolean unsetSpecies, boolean withPrevious) {
    
    111
    +        if (create && !withPrevious) {
    
    112
    +            return ui.getSpecies();
    
    113
    +        }
    
    114
    +        return ui.getSex();
    
    115
    +    }
    
    116
    +}

  • client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/NonTargetSampleUI.jaxx
    ... ... @@ -21,17 +21,19 @@
    21 21
     <fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUI beanScope="bean"
    
    22 22
         i18n="fr.ird.observe.dto.data.ps.observation.NonTargetLengthDto"
    
    23 23
         superGenericType='NonTargetSampleDto, NonTargetLengthDto, NonTargetSampleUI'
    
    24
    -    implements="fr.ird.observe.client.datasource.editor.content.data.table.SortableTableUI"
    
    24
    +    implements="fr.ird.observe.client.datasource.editor.content.data.sample.SampleUI&lt;NonTargetSampleDto, NonTargetLengthDto, NonTargetSampleUI&gt;, fr.ird.observe.client.datasource.editor.content.data.table.SortableTableUI"
    
    25 25
         contentTitle='{n("observe.data.ps.observation.NonTargetSample.title")}'
    
    26 26
         saveNewEntryText='{n("observe.data.ps.observation.NonTargetSample.action.create")}'
    
    27 27
         saveNewEntryTip='{n("observe.data.ps.observation.NonTargetSample.action.create.tip")}'>
    
    28 28
     
    
    29 29
       <style source="classpath:/fr/ird/observe/client/datasource/editor/content/data/CommonTable.jcss"/>
    
    30
    +  <style source="classpath:/fr/ird/observe/client/datasource/editor/content/data/sample/CommonSample.jcss"/>
    
    30 31
       <style source="AbstractSampleUI.jcss"/>
    
    31 32
     
    
    32 33
       <import>
    
    33 34
         fr.ird.observe.dto.referential.common.SexReference
    
    34 35
         fr.ird.observe.dto.referential.common.SizeMeasureTypeReference
    
    36
    +    fr.ird.observe.dto.referential.common.WeightMeasureTypeReference
    
    35 37
         fr.ird.observe.dto.referential.common.SpeciesReference
    
    36 38
         fr.ird.observe.dto.referential.common.LengthMeasureMethodReference
    
    37 39
         fr.ird.observe.dto.referential.common.WeightMeasureMethodReference
    
    ... ... @@ -55,6 +57,8 @@
    55 57
       <!-- model -->
    
    56 58
       <NonTargetSampleUIModel id='model' constructorParams='this'/>
    
    57 59
     
    
    60
    +  <NonTargetSampleImplHandler id='sampleHandler' initializer="getContextValue(NonTargetSampleImplHandler.class)"/>
    
    61
    +
    
    58 62
       <!-- edit bean -->
    
    59 63
       <NonTargetSampleDto id='bean'/>
    
    60 64
     
    
    ... ... @@ -76,16 +80,13 @@
    76 80
       </BeanValidator>
    
    77 81
     
    
    78 82
       <ButtonGroup id='acquisitionModeGroup'
    
    79
    -               onStateChanged='getHandler().updateAcquisitionMode((AcquisitionMode) acquisitionModeGroup.getSelectedValue())'/>
    
    83
    +               onStateChanged='getSampleHandler().updateAcquisitionMode((AcquisitionMode) acquisitionModeGroup.getSelectedValue())'/>
    
    80 84
     
    
    81 85
       <script><![CDATA[
    
    82 86
     
    
    83
    -public String getWeightDataTip(boolean computed) {
    
    84
    -    return computed ? t(NonTargetSampleUIHandler.POIDS_COMPUTED_TIP) : t(NonTargetSampleUIHandler.POIDS_OBSERVED_TIP);
    
    85
    -}
    
    86
    -
    
    87
    -public String getLengthDataTip(boolean computed) {
    
    88
    -    return computed ? t(NonTargetSampleUIHandler.LONGUEUR_COMPUTED_TIP) : t(NonTargetSampleUIHandler.LONGUEUR_OBSERVED_TIP);
    
    87
    +@Override
    
    88
    +public NonTargetSampleUIModel getSampleModel() {
    
    89
    +    return getModel();
    
    89 90
     }
    
    90 91
     
    
    91 92
     ]]>
    
    ... ... @@ -118,10 +119,19 @@ public String getLengthDataTip(boolean computed) {
    118 119
                   </cell>
    
    119 120
                   <cell>
    
    120 121
                     <JPanel layout='{new BorderLayout()}'>
    
    121
    -                  <JaxxComboBox id='sizeMeasureType' genericType='SizeMeasureTypeReference'
    
    122
    -                                          constructorParams='this' constraints="BorderLayout.CENTER"/>
    
    123
    -                  <JButton id="defaultSizeMeasureType" constraints="BorderLayout.EAST"
    
    124
    -                           onActionPerformed="getHandler().resetDefaultSizeMeasureType()"/>
    
    122
    +                  <JaxxComboBox id='sizeMeasureType' genericType='SizeMeasureTypeReference' constructorParams='this' constraints="BorderLayout.CENTER"/>
    
    123
    +                  <JButton id="defaultSizeMeasureType" constraints="BorderLayout.EAST"/>
    
    124
    +                </JPanel>
    
    125
    +              </cell>
    
    126
    +            </row>
    
    127
    +            <row>
    
    128
    +              <cell>
    
    129
    +                <JLabel id='weightMeasureTypeLabel' styleClass="i18n"/>
    
    130
    +              </cell>
    
    131
    +              <cell>
    
    132
    +                <JPanel layout='{new BorderLayout()}'>
    
    133
    +                  <JaxxComboBox id='weightMeasureType' genericType='WeightMeasureTypeReference' constructorParams='this' constraints="BorderLayout.CENTER"/>
    
    134
    +                  <JButton id="defaultWeightMeasureType" constraints="BorderLayout.EAST"/>
    
    125 135
                     </JPanel>
    
    126 136
                   </cell>
    
    127 137
                 </row>
    

  • client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/NonTargetSampleUIHandler.java
    ... ... @@ -22,7 +22,7 @@
    22 22
     package fr.ird.observe.client.datasource.editor.content.data.ps.observation;
    
    23 23
     
    
    24 24
     import fr.ird.observe.client.constants.AcquisitionMode;
    
    25
    -import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableModel;
    
    25
    +import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUIHandler;
    
    26 26
     import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUILayoutFocusTraversalPolicy;
    
    27 27
     import fr.ird.observe.client.datasource.editor.content.spi.ContentUIReferenceCache;
    
    28 28
     import fr.ird.observe.client.datasource.editor.content.spi.ReferentialReferencesFilter;
    
    ... ... @@ -44,15 +44,12 @@ import org.apache.logging.log4j.Logger;
    44 44
     import org.nuiton.jaxx.runtime.spi.UIHandler;
    
    45 45
     import org.nuiton.validator.NuitonValidatorScope;
    
    46 46
     
    
    47
    -import javax.swing.JComponent;
    
    48 47
     import javax.swing.JTable;
    
    49 48
     import javax.swing.table.DefaultTableCellRenderer;
    
    50 49
     import java.awt.Component;
    
    51 50
     import java.awt.Container;
    
    52
    -import java.util.Collections;
    
    53 51
     import java.util.LinkedList;
    
    54 52
     import java.util.List;
    
    55
    -import java.util.Optional;
    
    56 53
     
    
    57 54
     import static io.ultreia.java4all.i18n.I18n.n;
    
    58 55
     import static io.ultreia.java4all.i18n.I18n.t;
    
    ... ... @@ -61,10 +58,12 @@ import static io.ultreia.java4all.i18n.I18n.t;
    61 58
      * @author Tony Chemit - dev@tchemit.fr
    
    62 59
      * @since 1.0
    
    63 60
      */
    
    64
    -public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetSampleDto, NonTargetLengthDto, NonTargetSampleUI> implements UIHandler<NonTargetSampleUI> {
    
    61
    +public class NonTargetSampleUIHandler extends ContentTableUIHandler<NonTargetSampleDto, NonTargetLengthDto, NonTargetSampleUI> implements UIHandler<NonTargetSampleUI> {
    
    65 62
     
    
    66 63
         private static final Logger log = LogManager.getLogger(NonTargetSampleUIHandler.class);
    
    67 64
     
    
    65
    +    private NonTargetSampleImplHandler sampleHandler;
    
    66
    +
    
    68 67
         @Override
    
    69 68
         public NonTargetSampleUIModel getModel() {
    
    70 69
             return ui.getModel();
    
    ... ... @@ -73,11 +72,16 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS
    73 72
         @Override
    
    74 73
         public void beforeInit(NonTargetSampleUI ui) {
    
    75 74
             super.beforeInit(ui);
    
    75
    +        sampleHandler = new NonTargetSampleImplHandler(ui);
    
    76
    +        sampleHandler.beforeInit(ui);
    
    77
    +        ui.setContextValue(sampleHandler);
    
    76 78
         }
    
    77 79
     
    
    78 80
         @Override
    
    79 81
         public void afterInit(NonTargetSampleUI ui) {
    
    80 82
             super.afterInit(ui);
    
    83
    +        sampleHandler.init();
    
    84
    +        ui.removeContextValue(NonTargetSampleImplHandler.class);
    
    81 85
         }
    
    82 86
     
    
    83 87
     //    @Override
    
    ... ... @@ -202,94 +206,106 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS
    202 206
     //        // normalement cela est fait quand on fait le setForm (mais ici le setForm est fait trop tôt)
    
    203 207
     //        getModel().updateUiWithReferenceSetsFromModel();
    
    204 208
     
    
    205
    -        loadSizeMeasureTypes();
    
    209
    +        model.loadSizeMeasureTypes();
    
    206 210
             form.getObject().copy(model.getBean());
    
    207 211
     
    
    208 212
         }
    
    209 213
     
    
    210 214
         @Override
    
    211 215
         protected void onSelectedRowChanged(int editingRow, NonTargetLengthDto bean, boolean create) {
    
    212
    -        ContentTableModel<NonTargetSampleDto, NonTargetLengthDto> model = getTableModel();
    
    213
    -        if (!model.isEditable()) {
    
    214
    -            return;
    
    215
    -        }
    
    216
    -        NonTargetLengthDto tableEditBean = getModel().getTableEditBean();
    
    217
    -        tableEditBean.removePropertyChangeListener(NonTargetLengthDto.PROPERTY_WEIGHT, weightChanged);
    
    218
    -        tableEditBean.removePropertyChangeListener(NonTargetLengthDto.PROPERTY_LENGTH, lengthChanged);
    
    219
    -        tableEditBean.removePropertyChangeListener(NonTargetLengthDto.PROPERTY_SPECIES, speciesChanged);
    
    220
    -
    
    221
    -        SpeciesReference species = bean.getSpecies();
    
    222
    -        log.debug(prefix + "selected species " + species);
    
    223
    -        List<SpeciesReference> availableSpecies;
    
    224
    -        JComponent requestFocus;
    
    225
    -        Optional<SizeMeasureTypeReference> sizeMeasureType = Optional.empty();
    
    226
    -
    
    227
    -        if (create) {
    
    228
    -
    
    229
    -            Optional<SizeMeasureTypeReference> defaultSizeMeasureType;
    
    230
    -
    
    231
    -            boolean unsetSpecies = true;
    
    232
    -            if (model.isCreate()) {
    
    233
    -
    
    234
    -                // on passe le mode de saisie en count
    
    235
    -                AcquisitionMode acquisitionMode = AcquisitionMode.byEffectif;
    
    236
    -
    
    237
    -                if (editingRow > 0) {
    
    238
    -                    unsetSpecies = false;
    
    239
    -                    // get previous row
    
    240
    -                    NonTargetLengthDto editBean = model.getValueAt(editingRow - 1);
    
    241
    -                    // get previous species
    
    242
    -                    species = editBean.getSpecies();
    
    243
    -                    // get previous acquisition mode
    
    244
    -                    acquisitionMode = AcquisitionMode.valueOf(editBean.getAcquisitionMode());
    
    245
    -                    // get previous size measure type
    
    246
    -                    sizeMeasureType = Optional.ofNullable(editBean.getSizeMeasureType());
    
    247
    -                }
    
    248
    -
    
    249
    -                updateAcquisitionMode0(acquisitionMode);
    
    250
    -
    
    251
    -            }
    
    252
    -
    
    253
    -            availableSpecies = getModel().getReferenceCache().getReferentialReferences(NonTargetLengthDto.PROPERTY_SPECIES);
    
    254
    -
    
    255
    -            // get default size measure type
    
    256
    -            defaultSizeMeasureType = getSpeciesDefaultSizeMeasureType(species);
    
    257
    -
    
    258
    -            if (unsetSpecies) {
    
    259
    -                // unset species (this will not set again species in widget)
    
    260
    -                species = null;
    
    261
    -                sizeMeasureType = defaultSizeMeasureType;
    
    262
    -                requestFocus = ui.getSpecies();
    
    263
    -            } else {
    
    264
    -                requestFocus = ui.getLength();
    
    265
    -            }
    
    216
    +        sampleHandler.onSelectedRowChanged(editingRow, bean, create);
    
    266 217
     
    
    267
    -            // use default size measure type
    
    268
    -            ui.getModel().setDefaultSizeMeasureType(defaultSizeMeasureType.orElse(null));
    
    269
    -
    
    270
    -        } else {
    
    271
    -            requestFocus = ui.getCount();
    
    272
    -            updateAcquisitionMode0(AcquisitionMode.valueOf(bean.getAcquisitionMode()));
    
    273
    -            availableSpecies = Collections.singletonList(species);
    
    274
    -            species = null;
    
    275
    -            sizeMeasureType = Optional.ofNullable(bean.getSizeMeasureType());
    
    276
    -        }
    
    277
    -
    
    278
    -        ui.getSizeMeasureType().setSelectedItem(null);
    
    279
    -        sizeMeasureType.ifPresent(ui.getSizeMeasureType()::setSelectedItem);
    
    280
    -
    
    281
    -        ui.getSpecies().setData(availableSpecies);
    
    282
    -        if (species != null) {
    
    283
    -            log.info(String.format("Will set species : %s", species));
    
    284
    -            ui.getSpecies().setSelectedItem(null);
    
    285
    -            ui.getSpecies().setSelectedItem(species);
    
    286
    -        }
    
    287
    -
    
    288
    -        setFormFocusOwner(requestFocus);
    
    289
    -
    
    290
    -        tableEditBean.addPropertyChangeListener(NonTargetLengthDto.PROPERTY_WEIGHT, weightChanged);
    
    291
    -        tableEditBean.addPropertyChangeListener(NonTargetLengthDto.PROPERTY_LENGTH, lengthChanged);
    
    292
    -        tableEditBean.addPropertyChangeListener(NonTargetLengthDto.PROPERTY_SPECIES, speciesChanged);
    
    218
    +//        ContentTableModel<NonTargetSampleDto, NonTargetLengthDto> model = getTableModel();
    
    219
    +//        if (!model.isEditable()) {
    
    220
    +//            return;
    
    221
    +//        }
    
    222
    +//        NonTargetLengthDto tableEditBean = getModel().getTableEditBean();
    
    223
    +//        tableEditBean.removePropertyChangeListener(NonTargetLengthDto.PROPERTY_WEIGHT, weightChanged);
    
    224
    +//        tableEditBean.removePropertyChangeListener(NonTargetLengthDto.PROPERTY_LENGTH, lengthChanged);
    
    225
    +//        tableEditBean.removePropertyChangeListener(NonTargetLengthDto.PROPERTY_SPECIES, speciesChanged);
    
    226
    +//
    
    227
    +//        SpeciesReference species = bean.getSpecies();
    
    228
    +//        log.debug(prefix + "selected species " + species);
    
    229
    +//        List<SpeciesReference> availableSpecies;
    
    230
    +//        JComponent requestFocus;
    
    231
    +//        Optional<SizeMeasureTypeReference> sizeMeasureType = Optional.empty();
    
    232
    +//        Optional<WeightMeasureTypeReference> weightMeasureType = Optional.empty();
    
    233
    +//
    
    234
    +//        if (create) {
    
    235
    +//
    
    236
    +//            Optional<SizeMeasureTypeReference> defaultSizeMeasureType;
    
    237
    +//            Optional<WeightMeasureTypeReference> defaultWeightMeasureType;
    
    238
    +//
    
    239
    +//            boolean unsetSpecies = true;
    
    240
    +//            if (model.isCreate()) {
    
    241
    +//
    
    242
    +//                // on passe le mode de saisie en count
    
    243
    +//                AcquisitionMode acquisitionMode = AcquisitionMode.byEffectif;
    
    244
    +//
    
    245
    +//                if (editingRow > 0) {
    
    246
    +//                    unsetSpecies = false;
    
    247
    +//                    // get previous row
    
    248
    +//                    NonTargetLengthDto editBean = model.getValueAt(editingRow - 1);
    
    249
    +//                    // get previous species
    
    250
    +//                    species = editBean.getSpecies();
    
    251
    +//                    // get previous acquisition mode
    
    252
    +//                    acquisitionMode = AcquisitionMode.valueOf(editBean.getAcquisitionMode());
    
    253
    +//                    // get previous size measure type
    
    254
    +//                    sizeMeasureType = Optional.ofNullable(editBean.getSizeMeasureType());
    
    255
    +//                    weightMeasureType = Optional.ofNullable(editBean.getWeightMeasureType());
    
    256
    +//                }
    
    257
    +//
    
    258
    +//                updateAcquisitionMode0(acquisitionMode);
    
    259
    +//
    
    260
    +//            }
    
    261
    +//
    
    262
    +//            availableSpecies = getModel().getReferenceCache().getReferentialReferences(NonTargetLengthDto.PROPERTY_SPECIES);
    
    263
    +//
    
    264
    +//            // get default size measure type
    
    265
    +//            defaultSizeMeasureType = getSpeciesDefaultSizeMeasureType(species);
    
    266
    +//            defaultWeightMeasureType = getSpeciesDefaultWeightMeasureType(species);
    
    267
    +//
    
    268
    +//            if (unsetSpecies) {
    
    269
    +//                // unset species (this will not set again species in widget)
    
    270
    +//                species = null;
    
    271
    +//                sizeMeasureType = defaultSizeMeasureType;
    
    272
    +//                weightMeasureType = defaultWeightMeasureType;
    
    273
    +//                requestFocus = ui.getSpecies();
    
    274
    +//            } else {
    
    275
    +//                requestFocus = ui.getLength();
    
    276
    +//            }
    
    277
    +//
    
    278
    +//            // use default size measure type
    
    279
    +//            ui.getModel().setDefaultSizeMeasureType(defaultSizeMeasureType.orElse(null));
    
    280
    +//            ui.getModel().setDefaultWeightMeasureType(defaultWeightMeasureType.orElse(null));
    
    281
    +//
    
    282
    +//        } else {
    
    283
    +//            requestFocus = ui.getCount();
    
    284
    +//            updateAcquisitionMode0(AcquisitionMode.valueOf(bean.getAcquisitionMode()));
    
    285
    +//            availableSpecies = Collections.singletonList(species);
    
    286
    +//            species = null;
    
    287
    +//            sizeMeasureType = Optional.ofNullable(bean.getSizeMeasureType());
    
    288
    +//            weightMeasureType = Optional.ofNullable(bean.getWeightMeasureType());
    
    289
    +//        }
    
    290
    +//
    
    291
    +//        ui.getSizeMeasureType().setSelectedItem(null);
    
    292
    +//        sizeMeasureType.ifPresent(ui.getSizeMeasureType()::setSelectedItem);
    
    293
    +//
    
    294
    +//        ui.getWeightMeasureType().setSelectedItem(null);
    
    295
    +//        weightMeasureType.ifPresent(ui.getWeightMeasureType()::setSelectedItem);
    
    296
    +//
    
    297
    +//        ui.getSpecies().setData(availableSpecies);
    
    298
    +//        if (species != null) {
    
    299
    +//            log.info(String.format("Will set species : %s", species));
    
    300
    +//            ui.getSpecies().setSelectedItem(null);
    
    301
    +//            ui.getSpecies().setSelectedItem(species);
    
    302
    +//        }
    
    303
    +//
    
    304
    +//        setFormFocusOwner(requestFocus);
    
    305
    +//
    
    306
    +//        tableEditBean.addPropertyChangeListener(NonTargetLengthDto.PROPERTY_WEIGHT, weightChanged);
    
    307
    +//        tableEditBean.addPropertyChangeListener(NonTargetLengthDto.PROPERTY_LENGTH, lengthChanged);
    
    308
    +//        tableEditBean.addPropertyChangeListener(NonTargetLengthDto.PROPERTY_SPECIES, speciesChanged);
    
    293 309
         }
    
    294 310
     
    
    295 311
         @Override
    
    ... ... @@ -307,66 +323,81 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS
    307 323
             saveResult.toDto(bean);
    
    308 324
         }
    
    309 325
     
    
    310
    -    @Override
    
    326
    +    //    @Override
    
    311 327
         public void resetIsWeightComputed() {
    
    312 328
             getModel().getTableEditBean().setIsWeightComputed(false);
    
    313 329
             ui.getWeight().grabFocus();
    
    314 330
         }
    
    315 331
     
    
    316
    -    @Override
    
    332
    +    //    @Override
    
    317 333
         public void resetIsLengthComputed() {
    
    318 334
             getModel().getTableEditBean().setIsLengthComputed(false);
    
    319 335
             ui.getLength().grabFocus();
    
    320 336
         }
    
    321
    -
    
    322
    -    @Override
    
    323
    -    protected void onWeightChanged(Float newValue) {
    
    324
    -        getModel().getTableEditBean().setIsWeightComputed(false);
    
    325
    -    }
    
    326
    -
    
    327
    -    @Override
    
    328
    -    protected void onLengthChanged(Float newValue) {
    
    329
    -        getModel().getTableEditBean().setIsLengthComputed(false);
    
    330
    -    }
    
    331
    -
    
    332
    -    @Override
    
    333
    -    protected void onSpeciesChanged(SpeciesReference species) {
    
    334
    -
    
    335
    -        Optional<SizeMeasureTypeReference> oldSizeMeasureType = Optional.ofNullable(getModel().getTableEditBean()).map(NonTargetLengthDto::getSizeMeasureType);
    
    336
    -        Optional<SizeMeasureTypeReference> sizeMeasureType = getSpeciesDefaultSizeMeasureType(species);
    
    337
    -        log.debug(prefix + "Default size measure " + sizeMeasureType.orElse(null));
    
    338
    -        ui.getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null));
    
    339
    -        resetDefaultSizeMeasureType();
    
    340
    -        oldSizeMeasureType.ifPresent(sizeMeasureTypeReference -> getModel().getTableEditBean().setSizeMeasureType(sizeMeasureTypeReference));
    
    341
    -    }
    
    342
    -
    
    343
    -    public void resetDefaultSizeMeasureType() {
    
    344
    -        ui.getSizeMeasureType().setSelectedItem(null);
    
    345
    -        ui.getSizeMeasureType().setSelectedItem(ui.getModel().getDefaultSizeMeasureType());
    
    346
    -    }
    
    347
    -
    
    348
    -//    @Override
    
    349
    -//    protected ContentMode computeWritableContentMode() {
    
    350
    -//        ContentMode mode = super.computeWritableContentMode();
    
    351 337
     //
    
    352
    -//        String selectedId = getSelectedId();
    
    338
    +//    @Override
    
    339
    +//    protected void onWeightChanged(Float newValue) {
    
    340
    +//        getModel().getTableEditBean().setIsWeightComputed(false);
    
    341
    +//    }
    
    353 342
     //
    
    354
    -//        boolean showData = getNonTargetSampleService().canUseNonTargetSample(selectedId);
    
    343
    +//    @Override
    
    344
    +//    protected void onLengthChanged(Float newValue) {
    
    345
    +//        getModel().getTableEditBean().setIsLengthComputed(false);
    
    346
    +//    }
    
    347
    +
    
    348
    +//    @Override
    
    349
    +//    protected void onSpeciesChanged(SpeciesReference species) {
    
    355 350
     //
    
    356
    -//        ui.getModel().setShowData(showData);
    
    351
    +//        recomputeDefaultSizeMeasureType(species);
    
    357 352
     //
    
    358
    -//        if (mode == ContentMode.UPDATE && !showData) {
    
    353
    +//        recomputeDefaultWeightMeasureType(species);
    
    354
    +//    }
    
    359 355
     //
    
    360
    -//            // on repasse en mode resteint car on ne peut pas éditer l'écran
    
    361
    -//            mode = ContentMode.READ;
    
    356
    +//    @Override
    
    357
    +//    protected void onWeightChanged(Float newValue) {
    
    358
    +//        getModel().getTableEditBean().setIsWeightComputed(false);
    
    359
    +//    }
    
    360
    +////
    
    361
    +//    @Override
    
    362
    +//    protected void onWeightChanged(Float newValue) {
    
    363
    +//        getModel().getTableEditBean().setIsWeightComputed(false);
    
    364
    +//    }
    
    362 365
     //
    
    363
    -//            addMessage(ui,
    
    364
    -//                       NuitonValidatorScope.INFO,
    
    365
    -//                       getTypeI18nKey(SetDto.class),
    
    366
    -//                       t("observe.data.ps.observation.Set.message.no.nonTargetDiscarded"));
    
    367
    -//        }
    
    368
    -//        return mode;
    
    366
    +//    @Override
    
    367
    +//    protected void onLengthChanged(Float newValue) {
    
    368
    +//        getModel().getTableEditBean().setIsLengthComputed(false);
    
    369
    +//    }
    
    370
    +
    
    371
    +//    @Override
    
    372
    +//    protected void onLengthChanged(Float newValue) {
    
    373
    +//        getModel().getTableEditBean().setIsLengthComputed(false);
    
    374
    +//    }
    
    369 375
     
    
    376
    +//    protected void recomputeDefaultWeightMeasureType(SpeciesReference species) {
    
    377
    +//        Optional<WeightMeasureTypeReference> oldWeightMeasureType = Optional.ofNullable(getModel().getTableEditBean()).map(NonTargetLengthDto::getWeightMeasureType);
    
    378
    +//        Optional<WeightMeasureTypeReference> weightMeasureType = getSpeciesDefaultWeightMeasureType(species);
    
    379
    +//        log.debug(String.format("%sDefault weight measure %s", prefix, weightMeasureType.orElse(null)));
    
    380
    +//        ui.getModel().setDefaultWeightMeasureType(weightMeasureType.orElse(null));
    
    381
    +//        resetDefaultWeightMeasureType();
    
    382
    +//        oldWeightMeasureType.ifPresent(weightMeasureTypeReference -> getModel().getTableEditBean().setWeightMeasureType(weightMeasureTypeReference));
    
    383
    +//    }
    
    384
    +
    
    385
    +//    protected void recomputeDefaultSizeMeasureType(SpeciesReference species) {
    
    386
    +//        Optional<SizeMeasureTypeReference> oldSizeMeasureType = Optional.ofNullable(getModel().getTableEditBean()).map(NonTargetLengthDto::getSizeMeasureType);
    
    387
    +//        Optional<SizeMeasureTypeReference> sizeMeasureType = getSpeciesDefaultSizeMeasureType(species);
    
    388
    +//        log.debug(String.format("%sDefault size measure %s", prefix, sizeMeasureType.orElse(null)));
    
    389
    +//        ui.getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null));
    
    390
    +//        resetDefaultSizeMeasureType();
    
    391
    +//        oldSizeMeasureType.ifPresent(sizeMeasureTypeReference -> getModel().getTableEditBean().setSizeMeasureType(sizeMeasureTypeReference));
    
    392
    +//    }
    
    393
    +
    
    394
    +//    public void resetDefaultSizeMeasureType() {
    
    395
    +//        ui.getSizeMeasureType().setSelectedItem(null);
    
    396
    +//        ui.getSizeMeasureType().setSelectedItem(ui.getModel().getDefaultSizeMeasureType());
    
    397
    +//    }
    
    398
    +//    public void resetDefaultWeightMeasureType() {
    
    399
    +//        ui.getWeightMeasureType().setSelectedItem(null);
    
    400
    +//        ui.getWeightMeasureType().setSelectedItem(ui.getModel().getDefaultWeightMeasureType());
    
    370 401
     //    }
    
    371 402
     
    
    372 403
         /**
    
    ... ... @@ -388,12 +419,14 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS
    388 419
                     // le weight n'est pas modifiable
    
    389 420
                     ui.getWeight().setEnabled(false);
    
    390 421
                     ui.getWeightMeasureMethod().setEnabled(false);
    
    422
    +                ui.getWeightMeasureType().setEnabled(false);
    
    391 423
                     // l'count est modifiable
    
    392 424
                     ui.getCount().setEnabled(true);
    
    393 425
                     if (createMode) {
    
    394 426
                         // on supprime le weight (si il a été saisie)
    
    395 427
                         editBean.setWeight(null);
    
    396 428
                         editBean.setWeightMeasureMethod(null);
    
    429
    +                    editBean.setWeightMeasureType(null);
    
    397 430
                         // on supprime aussi l'count (pour forcer la saisie)
    
    398 431
                         editBean.setCount(null);
    
    399 432
                     }
    
    ... ... @@ -402,6 +435,7 @@ public class NonTargetSampleUIHandler extends AbstractSampleUIHandler<NonTargetS
    402 435
                     // le weight est pas modifiable
    
    403 436
                     ui.getWeight().setEnabled(true);
    
    404 437
                     ui.getWeightMeasureMethod().setEnabled(true);
    
    438
    +                ui.getWeightMeasureType().setEnabled(true);
    
    405 439
                     // l'count n'est pas modifiable et est toujours de 1
    
    406 440
                     ui.getCount().setEnabled(false);
    
    407 441
     
    

  • 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;
    22 22
      * #L%
    
    23 23
      */
    
    24 24
     
    
    25
    +import fr.ird.observe.client.constants.AcquisitionMode;
    
    25 26
     import fr.ird.observe.client.datasource.api.ObserveDataSourcesManagerApplicationComponent;
    
    26 27
     import fr.ird.observe.client.datasource.api.ObserveSwingDataSource;
    
    27 28
     import fr.ird.observe.client.datasource.editor.content.ContentMode;
    
    29
    +import fr.ird.observe.client.datasource.editor.content.data.sample.SampleUIModel;
    
    28 30
     import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableMeta;
    
    29 31
     import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableModel;
    
    30 32
     import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUI;
    
    31
    -import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUIModel;
    
    32 33
     import fr.ird.observe.dto.data.ps.observation.NonTargetLengthDto;
    
    33 34
     import fr.ird.observe.dto.data.ps.observation.NonTargetLengthHelper;
    
    34 35
     import fr.ird.observe.dto.data.ps.observation.NonTargetSampleDto;
    
    35 36
     import fr.ird.observe.dto.referential.common.SizeMeasureTypeReference;
    
    37
    +import fr.ird.observe.dto.referential.common.SpeciesReference;
    
    38
    +import fr.ird.observe.dto.referential.common.WeightMeasureTypeReference;
    
    36 39
     import fr.ird.observe.navigation.model.select.ObserveSelectModelApplicationComponent;
    
    37 40
     import fr.ird.observe.navigation.model.select.ObserveSelectNode;
    
    38 41
     
    
    ... ... @@ -47,10 +50,7 @@ import java.util.List;
    47 50
      * @author Tony Chemit - dev@tchemit.fr
    
    48 51
      * @since XXX
    
    49 52
      */
    
    50
    -public class NonTargetSampleUIModel extends ContentTableUIModel<NonTargetSampleDto, NonTargetLengthDto> {
    
    51
    -
    
    52
    -    public static final String PROPERTY_DEFAULT_SIZE_MEASURE_TYPE = "defaultSizeMeasureType";
    
    53
    -    private SizeMeasureTypeReference defaultSizeMeasureType;
    
    53
    +public class NonTargetSampleUIModel extends SampleUIModel<NonTargetSampleDto, NonTargetLengthDto> {
    
    54 54
     
    
    55 55
         public NonTargetSampleUIModel(NonTargetSampleUI ui) {
    
    56 56
     
    
    ... ... @@ -121,16 +121,6 @@ public class NonTargetSampleUIModel extends ContentTableUIModel<NonTargetSampleD
    121 121
             return ObserveSelectModelApplicationComponent.value().getSeine().getSet();
    
    122 122
         }
    
    123 123
     
    
    124
    -    public SizeMeasureTypeReference getDefaultSizeMeasureType() {
    
    125
    -        return defaultSizeMeasureType;
    
    126
    -    }
    
    127
    -
    
    128
    -    public void setDefaultSizeMeasureType(SizeMeasureTypeReference defaultSizeMeasureType) {
    
    129
    -        SizeMeasureTypeReference oldValue = getDefaultSizeMeasureType();
    
    130
    -        this.defaultSizeMeasureType = defaultSizeMeasureType;
    
    131
    -        firePropertyChange(PROPERTY_DEFAULT_SIZE_MEASURE_TYPE, oldValue, defaultSizeMeasureType);
    
    132
    -    }
    
    133
    -
    
    134 124
         @Override
    
    135 125
         protected boolean computeShowData(ContentMode contentMode) {
    
    136 126
             String selectedId = getSelectedId();
    
    ... ... @@ -138,15 +128,43 @@ public class NonTargetSampleUIModel extends ContentTableUIModel<NonTargetSampleD
    138 128
             return mainDataSource.getPsObservationNonTargetSampleService().canUseNonTargetSample(selectedId);
    
    139 129
         }
    
    140 130
     
    
    141
    -    //FIXME Voir pourquoi c'est le seul modèle qui surcharge ça ???
    
    142
    -//    @Override
    
    143
    -//    public <D extends ReferentialDto, R extends ReferentialDtoReference<D, R>> Optional<Set<R>> tryToGetReferentialReferenceSet(String propertyName) {
    
    144
    -//        //noinspection unchecked
    
    145
    -//        ReferentialDtoReferenceSet<R> referenceSet = (ReferentialDtoReferenceSet) getReferentialReferenceSets().get(propertyName);
    
    146
    -//        Set<R> references = null;
    
    147
    -//        if (referenceSet != null) {
    
    148
    -//            references = referenceSet.toSet();
    
    149
    -//        }
    
    150
    -//        return Optional.ofNullable(references);
    
    151
    -//    }
    
    131
    +    @Override
    
    132
    +    public SpeciesReference getSpecies() {
    
    133
    +        return getTableEditBean().getSpecies();
    
    134
    +    }
    
    135
    +
    
    136
    +    @Override
    
    137
    +    public SizeMeasureTypeReference getSizeMeasureType() {
    
    138
    +        return getTableEditBean().getSizeMeasureType();
    
    139
    +    }
    
    140
    +
    
    141
    +    @Override
    
    142
    +    public WeightMeasureTypeReference getWeightMeasureType() {
    
    143
    +        return getTableEditBean().getWeightMeasureType();
    
    144
    +    }
    
    145
    +
    
    146
    +    @Override
    
    147
    +    public int getAcquisitionMode() {
    
    148
    +        return getTableEditBean().getAcquisitionMode();
    
    149
    +    }
    
    150
    +
    
    151
    +    @Override
    
    152
    +    public void setAcquisitionMode(int acquisitionMode) {
    
    153
    +        getTableEditBean().setAcquisitionMode(acquisitionMode);
    
    154
    +    }
    
    155
    +
    
    156
    +    @Override
    
    157
    +    public AcquisitionMode getDefaultAcquisitionMode() {
    
    158
    +        return AcquisitionMode.byEffectif;
    
    159
    +    }
    
    160
    +
    
    161
    +    @Override
    
    162
    +    public void setWeightMeasureType(WeightMeasureTypeReference weightMeasureType) {
    
    163
    +        getTableEditBean().setWeightMeasureType(weightMeasureType);
    
    164
    +    }
    
    165
    +
    
    166
    +    @Override
    
    167
    +    public void setSizeMeasureType(SizeMeasureTypeReference sizeMeasureType) {
    
    168
    +        getTableEditBean().setSizeMeasureType(sizeMeasureType);
    
    169
    +    }
    
    152 170
     }

  • client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/TargetSampleImplHandler.java
    1
    +package fr.ird.observe.client.datasource.editor.content.data.ps.observation;
    
    2
    +
    
    3
    +/*-
    
    4
    + * #%L
    
    5
    + * ObServe :: Client DataSource Editor PS
    
    6
    + * %%
    
    7
    + * Copyright (C) 2008 - 2020 IRD, Code Lutin, Ultreia.io
    
    8
    + * %%
    
    9
    + * This program is free software: you can redistribute it and/or modify
    
    10
    + * it under the terms of the GNU General Public License as
    
    11
    + * published by the Free Software Foundation, either version 3 of the
    
    12
    + * License, or (at your option) any later version.
    
    13
    + *
    
    14
    + * This program is distributed in the hope that it will be useful,
    
    15
    + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    
    16
    + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    
    17
    + * GNU General Public License for more details.
    
    18
    + *
    
    19
    + * You should have received a copy of the GNU General Public
    
    20
    + * License along with this program.  If not, see
    
    21
    + * <http://www.gnu.org/licenses/gpl-3.0.html>.
    
    22
    + * #L%
    
    23
    + */
    
    24
    +
    
    25
    +import fr.ird.observe.client.datasource.editor.content.data.sample.SampleUI;
    
    26
    +import fr.ird.observe.client.datasource.editor.content.data.sample.SampleUIHandler;
    
    27
    +import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUI;
    
    28
    +import fr.ird.observe.dto.data.ps.observation.TargetLengthDto;
    
    29
    +import fr.ird.observe.dto.data.ps.observation.TargetSampleDto;
    
    30
    +
    
    31
    +import javax.swing.JComponent;
    
    32
    +
    
    33
    +public class TargetSampleImplHandler<U extends ContentTableUI<TargetSampleDto, TargetLengthDto, U> & SampleUI<TargetSampleDto, TargetLengthDto, U>> extends SampleUIHandler<TargetSampleDto, TargetLengthDto, U> {
    
    34
    +
    
    35
    +    private final U ui;
    
    36
    +
    
    37
    +    public TargetSampleImplHandler(U ui) {
    
    38
    +        this.ui = ui;
    
    39
    +    }
    
    40
    +
    
    41
    +    @Override
    
    42
    +    public TargetSampleUIModel getModel() {
    
    43
    +        return (TargetSampleUIModel) super.getModel();
    
    44
    +    }
    
    45
    +
    
    46
    +    @Override
    
    47
    +    protected void onWeightChanged(Float newValue) {
    
    48
    +        TargetSampleUIModel model = getModel();
    
    49
    +        model.getTableEditBean().setIsWeightComputed(false);
    
    50
    +        TargetLengthDto tableEditBean = model.getTableEditBean();
    
    51
    +        if (newValue == null) {
    
    52
    +            tableEditBean.setWeightMeasureMethod(null);
    
    53
    +        }
    
    54
    +    }
    
    55
    +
    
    56
    +    @Override
    
    57
    +    protected void onLengthChanged(Float newValue) {
    
    58
    +        TargetSampleUIModel model = getModel();
    
    59
    +        model.getTableEditBean().setIsLengthComputed(false);
    
    60
    +        TargetLengthDto tableEditBean = model.getTableEditBean();
    
    61
    +        if (newValue == null) {
    
    62
    +            tableEditBean.setLengthMeasureMethod(null);
    
    63
    +        }
    
    64
    +    }
    
    65
    +
    
    66
    +    @Override
    
    67
    +    protected void onAcquisitionModeChangedToEffectif(boolean createMode, TargetLengthDto editBean) {
    
    68
    +        TargetSampleUI ui = (TargetSampleUI) this.ui;
    
    69
    +        // weight not enabled
    
    70
    +        ui.getWeight().setEnabled(false);
    
    71
    +//        ui.getWeightMeasureType().setEnabled(false);
    
    72
    +        ui.getWeightMeasureMethod().setEnabled(false);
    
    73
    +
    
    74
    +        // count enabled
    
    75
    +        ui.getCount().setEnabled(true);
    
    76
    +
    
    77
    +        if (createMode) {
    
    78
    +
    
    79
    +            // delete any weight value
    
    80
    +            editBean.setWeight(null);
    
    81
    +            editBean.setWeightMeasureType(null);
    
    82
    +            editBean.setWeightMeasureMethod(null);
    
    83
    +            // delete count (force use to reset it)
    
    84
    +            editBean.setCount(null);
    
    85
    +        }
    
    86
    +
    
    87
    +    }
    
    88
    +
    
    89
    +    @Override
    
    90
    +    protected void onAcquisitionModeChangedToIndividual(boolean createMode, TargetLengthDto editBean) {
    
    91
    +        TargetSampleUI ui = (TargetSampleUI) this.ui;
    
    92
    +        // weight enabled
    
    93
    +        ui.getWeight().setEnabled(true);
    
    94
    +//        ui.getWeightMeasureType().setEnabled(true);
    
    95
    +        ui.getWeightMeasureMethod().setEnabled(true);
    
    96
    +
    
    97
    +        // count not enabled (set to one)
    
    98
    +        ui.getCount().setEnabled(false);
    
    99
    +        if (createMode) {
    
    100
    +            // Always set to one
    
    101
    +            editBean.setCount(1);
    
    102
    +            editBean.setWeightMeasureType(getModel().getDefaultWeightMeasureType());
    
    103
    +        }
    
    104
    +    }
    
    105
    +
    
    106
    +    @Override
    
    107
    +    protected void setFormFocusOwner(JComponent requestFocus) {
    
    108
    +        ui.getHandler().setFormFocusOwner(requestFocus);
    
    109
    +    }
    
    110
    +
    
    111
    +    @Override
    
    112
    +    protected JComponent getNewFormFocusOwner(boolean create, boolean modelCreate, boolean unsetSpecies, boolean withPrevious) {
    
    113
    +        TargetSampleUI ui = (TargetSampleUI) this.ui;
    
    114
    +        if (create && !withPrevious) {
    
    115
    +            return ui.getSpecies();
    
    116
    +        }
    
    117
    +        return ui.getSex();
    
    118
    +    }
    
    119
    +}

  • client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/TargetSampleUI.jaxx
    ... ... @@ -21,9 +21,10 @@
    21 21
     <fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUI beanScope="bean"
    
    22 22
         abstract="true" i18n="fr.ird.observe.dto.data.ps.observation.TargetLengthDto"
    
    23 23
         superGenericType='TargetSampleDto, TargetLengthDto, TargetSampleUI'
    
    24
    -    implements="fr.ird.observe.client.datasource.editor.content.data.table.SortableTableUI">
    
    24
    +    implements="fr.ird.observe.client.datasource.editor.content.data.sample.SampleUI&lt;TargetSampleDto, TargetLengthDto, TargetSampleUI&gt;, fr.ird.observe.client.datasource.editor.content.data.table.SortableTableUI">
    
    25 25
     
    
    26 26
       <style source="classpath:/fr/ird/observe/client/datasource/editor/content/data/CommonTable.jcss"/>
    
    27
    +  <style source="classpath:/fr/ird/observe/client/datasource/editor/content/data/sample/CommonSample.jcss"/>
    
    27 28
       <style source="AbstractSampleUI.jcss"/>
    
    28 29
     
    
    29 30
       <import>
    
    ... ... @@ -33,6 +34,7 @@
    33 34
         fr.ird.observe.dto.referential.common.SpeciesReference
    
    34 35
         fr.ird.observe.dto.referential.common.SexReference
    
    35 36
         fr.ird.observe.dto.referential.common.SizeMeasureTypeReference
    
    37
    +    fr.ird.observe.dto.referential.common.WeightMeasureTypeReference
    
    36 38
         fr.ird.observe.dto.referential.common.LengthMeasureMethodReference
    
    37 39
         fr.ird.observe.dto.referential.common.WeightMeasureMethodReference
    
    38 40
         fr.ird.observe.client.datasource.editor.content.data.table.*
    
    ... ... @@ -51,6 +53,8 @@
    51 53
       <!-- model -->
    
    52 54
       <TargetSampleUIModel id='model' constructorParams='this'/>
    
    53 55
     
    
    56
    +  <TargetSampleImplHandler id='sampleHandler' initializer="getContextValue(TargetSampleImplHandler.class)"/>
    
    57
    +
    
    54 58
       <!-- edit bean -->
    
    55 59
       <TargetSampleDto id='bean'/>
    
    56 60
     
    
    ... ... @@ -73,19 +77,16 @@
    73 77
                      errorTableModel='{getErrorTableModel()}' context='update' parentValidator='{validator}'/>
    
    74 78
     
    
    75 79
       <ButtonGroup id='acquisitionModeGroup'
    
    76
    -               onStateChanged='TargetSampleUIHandler.updateModeSaisie(this, (AcquisitionMode) acquisitionModeGroup.getSelectedValue())'/>
    
    80
    +               onStateChanged='getSampleHandler().updateAcquisitionMode((AcquisitionMode) acquisitionModeGroup.getSelectedValue())'/>
    
    77 81
     
    
    78 82
       <script><![CDATA[
    
    79 83
     
    
    80 84
     @Override
    
    81 85
     public abstract TargetSampleUIHandler getHandler();
    
    82 86
     
    
    83
    -public String getWeightDataTip(boolean computed) {
    
    84
    -    return computed ? t(TargetSampleUIHandler.POIDS_COMPUTED_TIP) : t(TargetSampleUIHandler.POIDS_OBSERVED_TIP);
    
    85
    -}
    
    86
    -
    
    87
    -public String getLengthDataTip(boolean computed) {
    
    88
    -    return computed ? t(TargetSampleUIHandler.LONGUEUR_COMPUTED_TIP) : t(TargetSampleUIHandler.LONGUEUR_OBSERVED_TIP);
    
    87
    +@Override
    
    88
    +public TargetSampleUIModel getSampleModel() {
    
    89
    +    return getModel();
    
    89 90
     }
    
    90 91
     ]]>
    
    91 92
       </script>
    
    ... ... @@ -114,10 +115,19 @@ public String getLengthDataTip(boolean computed) {
    114 115
                   </cell>
    
    115 116
                   <cell>
    
    116 117
                     <JPanel layout='{new BorderLayout()}'>
    
    117
    -                  <JaxxComboBox id='sizeMeasureType' genericType='SizeMeasureTypeReference'
    
    118
    -                                          constructorParams='this' constraints="BorderLayout.CENTER"/>
    
    119
    -                  <JButton id="defaultSizeMeasureType" constraints="BorderLayout.EAST"
    
    120
    -                           onActionPerformed="getHandler().resetDefaultSizeMeasureType()"/>
    
    118
    +                  <JaxxComboBox id='sizeMeasureType' genericType='SizeMeasureTypeReference' constructorParams='this' constraints="BorderLayout.CENTER"/>
    
    119
    +                  <JButton id="defaultSizeMeasureType" constraints="BorderLayout.EAST"/>
    
    120
    +                </JPanel>
    
    121
    +              </cell>
    
    122
    +            </row>
    
    123
    +            <row>
    
    124
    +              <cell>
    
    125
    +                <JLabel id='weightMeasureTypeLabel' styleClass="i18n"/>
    
    126
    +              </cell>
    
    127
    +              <cell>
    
    128
    +                <JPanel layout='{new BorderLayout()}'>
    
    129
    +                  <JaxxComboBox id='weightMeasureType' genericType='WeightMeasureTypeReference' constructorParams='this' constraints="BorderLayout.CENTER"/>
    
    130
    +                  <JButton id="defaultWeightMeasureType" constraints="BorderLayout.EAST"/>
    
    121 131
                     </JPanel>
    
    122 132
                   </cell>
    
    123 133
                 </row>
    
    ... ... @@ -160,7 +170,7 @@ public String getLengthDataTip(boolean computed) {
    160 170
           </cell>
    
    161 171
         </row>
    
    162 172
     
    
    163
    -    <!-- weight individuel -->
    
    173
    +    <!-- weight -->
    
    164 174
         <row>
    
    165 175
           <cell>
    
    166 176
             <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 @@
    22 22
     package fr.ird.observe.client.datasource.editor.content.data.ps.observation;
    
    23 23
     
    
    24 24
     import fr.ird.observe.client.configuration.WithClientConfig;
    
    25
    -import fr.ird.observe.client.constants.AcquisitionMode;
    
    25
    +import fr.ird.observe.client.datasource.editor.content.data.sample.SampleUI;
    
    26 26
     import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableModel;
    
    27 27
     import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUI;
    
    28
    +import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUIHandler;
    
    28 29
     import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUILayoutFocusTraversalPolicy;
    
    29 30
     import fr.ird.observe.client.datasource.editor.content.spi.ContentUIReferenceCache;
    
    30 31
     import fr.ird.observe.client.datasource.editor.content.spi.ReferentialReferencesFilter;
    
    ... ... @@ -40,13 +41,13 @@ import fr.ird.observe.dto.referential.common.SpeciesDto;
    40 41
     import fr.ird.observe.dto.referential.common.SpeciesReference;
    
    41 42
     import fr.ird.observe.dto.result.SaveResultDto;
    
    42 43
     import fr.ird.observe.spi.DtoModelHelper;
    
    44
    +import org.apache.logging.log4j.LogManager;
    
    45
    +import org.apache.logging.log4j.Logger;
    
    43 46
     import org.nuiton.validator.NuitonValidatorScope;
    
    44 47
     
    
    45
    -import javax.swing.JComponent;
    
    46 48
     import javax.swing.JTable;
    
    47 49
     import javax.swing.table.DefaultTableCellRenderer;
    
    48 50
     import java.util.List;
    
    49
    -import java.util.Optional;
    
    50 51
     
    
    51 52
     import static io.ultreia.java4all.i18n.I18n.n;
    
    52 53
     import static io.ultreia.java4all.i18n.I18n.t;
    
    ... ... @@ -55,7 +56,8 @@ import static io.ultreia.java4all.i18n.I18n.t;
    55 56
      * @author Tony Chemit - dev@tchemit.fr
    
    56 57
      * @since 1.0
    
    57 58
      */
    
    58
    -public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, TargetLengthDto, U>> extends AbstractSampleUIHandler<TargetSampleDto, TargetLengthDto, U> implements WithClientConfig {
    
    59
    +public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, TargetLengthDto, U> & SampleUI<TargetSampleDto, TargetLengthDto, U>> extends ContentTableUIHandler<TargetSampleDto, TargetLengthDto, U> implements WithClientConfig {
    
    60
    +    private static final Logger log = LogManager.getLogger(TargetSampleUIHandler.class);
    
    59 61
     
    
    60 62
         /**
    
    61 63
          * Pour différencier positionner l'invariant de l'écran
    
    ... ... @@ -64,71 +66,25 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar
    64 66
          * @since 1.5
    
    65 67
          */
    
    66 68
         private final boolean discarded;
    
    69
    +    private TargetSampleImplHandler<U> sampleHandler;
    
    67 70
     
    
    68 71
         public TargetSampleUIHandler(boolean discarded) {
    
    69 72
             this.discarded = discarded;
    
    70 73
         }
    
    71 74
     
    
    72
    -    /**
    
    73
    -     * Le mode de saisie a été mis à jour.
    
    74
    -     *
    
    75
    -     * @param newMode le nouveau de mode de saisie à utiliser
    
    76
    -     * @since 1.8
    
    77
    -     */
    
    78
    -    static void updateModeSaisie(TargetSampleUI ui, AcquisitionMode newMode) {
    
    79
    -
    
    80
    -        if (newMode == null) {
    
    81
    -
    
    82
    -            // mode null (cela peut arriver avec les bindings)
    
    83
    -            return;
    
    84
    -        }
    
    85
    -        boolean createMode = ui.getTableModel().isCreate();
    
    86
    -
    
    87
    -        TargetLengthDto editBean = ui.getTableEditBean();
    
    88
    -        switch (newMode) {
    
    89
    -
    
    90
    -            case byEffectif:
    
    91
    -
    
    92
    -                // le weight n'est pas modifiable
    
    93
    -                ui.getWeight().setEnabled(false);
    
    94
    -                ui.getWeightMeasureMethod().setEnabled(false);
    
    95
    -
    
    96
    -                // l'count est modifiable
    
    97
    -                ui.getCount().setEnabled(true);
    
    98
    -
    
    99
    -                if (createMode) {
    
    100
    -
    
    101
    -                    // on supprime le weight (si il a été saisie)
    
    102
    -                    editBean.setWeight(null);
    
    103
    -                    editBean.setWeightMeasureMethod(null);
    
    104
    -                    // on supprime aussi l'count (pour forcer la saisie)
    
    105
    -                    editBean.setCount(null);
    
    106
    -                }
    
    107
    -                break;
    
    108
    -
    
    109
    -            case byIndividu:
    
    110
    -
    
    111
    -                // le weight est pas modifiable
    
    112
    -                ui.getWeight().setEnabled(true);
    
    113
    -                ui.getWeightMeasureMethod().setEnabled(true);
    
    114
    -
    
    115
    -                // l'count n'est pas modifiable et est toujours de 1
    
    116
    -                ui.getCount().setEnabled(false);
    
    117
    -
    
    118
    -
    
    119
    -                if (createMode) {
    
    120
    -
    
    121
    -                    // on positionne l'count à 1 (seule valeur possible)
    
    122
    -                    editBean.setCount(1);
    
    123
    -                }
    
    124
    -                break;
    
    125
    -        }
    
    126
    -
    
    127
    -        if (createMode) {
    
    75
    +    @Override
    
    76
    +    public void beforeInit(U ui) {
    
    77
    +        super.beforeInit(ui);
    
    78
    +        sampleHandler = new TargetSampleImplHandler<>(ui);
    
    79
    +        sampleHandler.beforeInit(ui);
    
    80
    +        ui.setContextValue(sampleHandler);
    
    81
    +    }
    
    128 82
     
    
    129
    -            // on propage le mode de saisie dans le bean
    
    130
    -            editBean.setAcquisitionMode(newMode.ordinal());
    
    131
    -        }
    
    83
    +    @Override
    
    84
    +    public void afterInit(U ui) {
    
    85
    +        super.afterInit(ui);
    
    86
    +        sampleHandler.init();
    
    87
    +        ui.removeContextValue(TargetSampleImplHandler.class);
    
    132 88
         }
    
    133 89
     
    
    134 90
         boolean isDiscarded() {
    
    ... ... @@ -191,11 +147,16 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar
    191 147
             log.info(prefix + "Using " + data.size() + " size measure type(s).");
    
    192 148
             // We need to fill the referential cache (normally this is done in onOpenModel method)
    
    193 149
             getModel().getReferenceCache().loadReferentialReferenceSetsInModel(DtoModelHelper.getOptionalFormDefinition(TargetSampleDto.class).get(), true);
    
    194
    -        loadSizeMeasureTypes();
    
    150
    +        getModel().loadSizeMeasureTypes();
    
    195 151
             checkSizeMeasureTypes(data);
    
    196 152
             ((TargetSampleUI) ui).getSizeMeasureType().setData(data);
    
    197 153
         }
    
    198 154
     
    
    155
    +    @Override
    
    156
    +    public TargetSampleUIModel getModel() {
    
    157
    +        return (TargetSampleUIModel) super.getModel();
    
    158
    +    }
    
    159
    +
    
    199 160
         @Override
    
    200 161
         protected boolean onOpenComputeShowData() {
    
    201 162
             return getPsObservationTargetSampleService().canUseTargetSample(getModel().getSelectedId(), discarded);
    
    ... ... @@ -238,105 +199,113 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar
    238 199
     
    
    239 200
         @Override
    
    240 201
         protected void onSelectedRowChanged(int editingRow, TargetLengthDto bean, boolean create) {
    
    202
    +        sampleHandler.onSelectedRowChanged(editingRow, bean, create);
    
    241 203
     
    
    242 204
             ContentTableModel<TargetSampleDto, TargetLengthDto> model = getTableModel();
    
    243
    -        TargetSampleUI ui = (TargetSampleUI) getUi();
    
    205
    +//        TargetSampleUI ui = (TargetSampleUI) getUi();
    
    244 206
             if (!model.isEditable()) {
    
    245 207
                 return;
    
    246 208
             }
    
    247 209
             TargetLengthDto tableEditBean = getModel().getTableEditBean();
    
    248
    -        tableEditBean.removePropertyChangeListener(TargetLengthDto.PROPERTY_WEIGHT, weightChanged);
    
    249
    -        tableEditBean.removePropertyChangeListener(TargetLengthDto.PROPERTY_LENGTH, lengthChanged);
    
    250
    -        tableEditBean.removePropertyChangeListener(TargetLengthDto.PROPERTY_SPECIES, speciesChanged);
    
    251
    -
    
    252
    -        SpeciesReference species = bean.getSpecies();
    
    253
    -
    
    254
    -        JComponent requestFocus;
    
    255
    -
    
    256
    -        AcquisitionMode acquisitionMode;
    
    257
    -        Optional<SizeMeasureTypeReference> sizeMeasureType = Optional.empty();
    
    258
    -
    
    259
    -        if (create) {
    
    260
    -
    
    261
    -            acquisitionMode = AcquisitionMode.byEffectif;
    
    262
    -            if (model.isCreate()) {
    
    263
    -
    
    264
    -                if (editingRow > 0) {
    
    265
    -                    // on recupere l'species de la ligne precedente
    
    266
    -                    TargetLengthDto editBean = model.getValueAt(editingRow - 1);
    
    267
    -                    species = editBean.getSpecies();
    
    268
    -                    acquisitionMode = AcquisitionMode.valueOf(editBean.getAcquisitionMode());
    
    269
    -                }
    
    270
    -
    
    271
    -                // on utilise le code par defaut de l'espèce
    
    272
    -                sizeMeasureType = getSpeciesDefaultSizeMeasureType(species);
    
    273
    -                if (!sizeMeasureType.isPresent()) {
    
    274
    -                    // au cas où, on repasse toujours sur lf
    
    275
    -                    sizeMeasureType = Optional.of(SizeMeasureTypeReference.getLf(ui.getSizeMeasureType().getModel().getData()));
    
    276
    -                }
    
    277
    -                ui.getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null));
    
    278
    -            }
    
    279
    -            requestFocus = ui.getSpecies();
    
    280
    -        } else {
    
    281
    -            requestFocus = ui.getCount();
    
    282
    -            acquisitionMode = AcquisitionMode.valueOf(bean.getAcquisitionMode());
    
    283
    -            sizeMeasureType = Optional.ofNullable(bean.getSizeMeasureType());
    
    284
    -        }
    
    210
    +        sampleHandler.onLengthChanged(tableEditBean.getLength());
    
    211
    +        sampleHandler.onWeightChanged(tableEditBean.getWeight());
    
    285 212
     
    
    286
    -        ui.getAcquisitionModeGroup().setSelectedValue(null);
    
    287
    -        ui.getAcquisitionModeGroup().setSelectedValue(acquisitionMode);
    
    288
    -
    
    289
    -        ui.getSizeMeasureType().setSelectedItem(null);
    
    290
    -        sizeMeasureType.ifPresent(sizeMeasureTypeDtoReferentialReference -> ui.getSizeMeasureType().setSelectedItem(sizeMeasureTypeDtoReferentialReference));
    
    291
    -
    
    292
    -        // on met a jour l'espece
    
    293
    -        ui.getSpecies().setSelectedItem(null);
    
    294
    -        if (species != null) {
    
    295
    -            log.debug(prefix + "species to use " + species);
    
    296
    -            ui.getSpecies().setSelectedItem(species);
    
    297
    -        }
    
    298
    -        setFormFocusOwner(requestFocus);
    
    299
    -
    
    300
    -        tableEditBean.addPropertyChangeListener(TargetLengthDto.PROPERTY_WEIGHT, weightChanged);
    
    301
    -        tableEditBean.addPropertyChangeListener(TargetLengthDto.PROPERTY_LENGTH, lengthChanged);
    
    302
    -        tableEditBean.addPropertyChangeListener(TargetLengthDto.PROPERTY_SPECIES, speciesChanged);
    
    213
    +//        tableEditBean.removePropertyChangeListener(TargetLengthDto.PROPERTY_WEIGHT, weightChanged);
    
    214
    +//        tableEditBean.removePropertyChangeListener(TargetLengthDto.PROPERTY_LENGTH, lengthChanged);
    
    215
    +//        tableEditBean.removePropertyChangeListener(TargetLengthDto.PROPERTY_SPECIES, speciesChanged);
    
    216
    +//
    
    217
    +//        SpeciesReference species = bean.getSpecies();
    
    218
    +//
    
    219
    +//        JComponent requestFocus;
    
    220
    +//
    
    221
    +//        AcquisitionMode acquisitionMode;
    
    222
    +//        Optional<SizeMeasureTypeReference> sizeMeasureType = Optional.empty();
    
    223
    +//        Optional<WeightMeasureTypeReference> weightMeasureType = Optional.empty();
    
    224
    +//
    
    225
    +//        if (create) {
    
    226
    +//
    
    227
    +//            acquisitionMode = AcquisitionMode.byEffectif;
    
    228
    +//            if (model.isCreate()) {
    
    229
    +//
    
    230
    +//                if (editingRow > 0) {
    
    231
    +//                    // on recupere l'species de la ligne precedente
    
    232
    +//                    TargetLengthDto editBean = model.getValueAt(editingRow - 1);
    
    233
    +//                    species = editBean.getSpecies();
    
    234
    +//                    acquisitionMode = AcquisitionMode.valueOf(editBean.getAcquisitionMode());
    
    235
    +//                }
    
    236
    +//
    
    237
    +//                // on utilise le code par defaut de l'espèce
    
    238
    +//                sizeMeasureType = getSpeciesDefaultSizeMeasureType(species);
    
    239
    +//                ui.getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null));
    
    240
    +//                if (!sizeMeasureType.isPresent()) {
    
    241
    +//                    // au cas où, on repasse toujours sur lf
    
    242
    +//                    sizeMeasureType = Optional.of(SizeMeasureTypeReference.getLf(ui.getSizeMeasureType().getModel().getData()));
    
    243
    +//                }
    
    244
    +//                weightMeasureType = getSpeciesDefaultWeightMeasureType(species);
    
    245
    +//                ui.getModel().setDefaultWeightMeasureType(weightMeasureType.orElse(null));
    
    246
    +//            }
    
    247
    +//            requestFocus = ui.getSpecies();
    
    248
    +//        } else {
    
    249
    +//            requestFocus = ui.getCount();
    
    250
    +//            acquisitionMode = AcquisitionMode.valueOf(bean.getAcquisitionMode());
    
    251
    +//            sizeMeasureType = Optional.ofNullable(bean.getSizeMeasureType());
    
    252
    +//            weightMeasureType = Optional.ofNullable(bean.getWeightMeasureType());
    
    253
    +//        }
    
    254
    +//
    
    255
    +//        ui.getAcquisitionModeGroup().setSelectedValue(null);
    
    256
    +//        ui.getAcquisitionModeGroup().setSelectedValue(acquisitionMode);
    
    257
    +//
    
    258
    +//        ui.getSizeMeasureType().setSelectedItem(null);
    
    259
    +//        sizeMeasureType.ifPresent(sizeMeasureTypeDtoReferentialReference -> ui.getSizeMeasureType().setSelectedItem(sizeMeasureTypeDtoReferentialReference));
    
    260
    +//
    
    261
    +//        ui.getWeightMeasureType().setSelectedItem(null);
    
    262
    +//        weightMeasureType.ifPresent(weightMeasureTypeDtoReferentialReference -> ui.getWeightMeasureType().setSelectedItem(weightMeasureTypeDtoReferentialReference));
    
    263
    +//
    
    264
    +//        // on met a jour l'espece
    
    265
    +//        ui.getSpecies().setSelectedItem(null);
    
    266
    +//        if (species != null) {
    
    267
    +//            log.debug(prefix + "species to use " + species);
    
    268
    +//            ui.getSpecies().setSelectedItem(species);
    
    269
    +//        }
    
    270
    +//        setFormFocusOwner(requestFocus);
    
    271
    +//
    
    272
    +//        tableEditBean.addPropertyChangeListener(TargetLengthDto.PROPERTY_WEIGHT, weightChanged);
    
    273
    +//        tableEditBean.addPropertyChangeListener(TargetLengthDto.PROPERTY_LENGTH, lengthChanged);
    
    274
    +//        tableEditBean.addPropertyChangeListener(TargetLengthDto.PROPERTY_SPECIES, speciesChanged);
    
    303 275
         }
    
    304 276
     
    
    305
    -    @Override
    
    277
    +    //    @Override
    
    306 278
         public void resetIsWeightComputed() {
    
    307 279
             getModel().getTableEditBean().setIsWeightComputed(false);
    
    308 280
             ((TargetSampleUI) ui).getWeight().grabFocus();
    
    309 281
         }
    
    310 282
     
    
    311
    -    @Override
    
    283
    +    //    @Override
    
    312 284
         public void resetIsLengthComputed() {
    
    313 285
             getModel().getTableEditBean().setIsLengthComputed(false);
    
    314 286
             ((TargetSampleUI) ui).getLength().grabFocus();
    
    315 287
         }
    
    316 288
     
    
    317
    -    @Override
    
    318
    -    protected void onSpeciesChanged(SpeciesReference species) {
    
    319
    -        // on utilise le code par defaut de l'espèce
    
    320
    -        Optional<SizeMeasureTypeReference> sizeMeasureType = getSpeciesDefaultSizeMeasureType(species);
    
    321
    -        ((TargetSampleUI) ui).getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null));
    
    322
    -        resetDefaultSizeMeasureType();
    
    323
    -    }
    
    324
    -
    
    325
    -    @Override
    
    326
    -    protected void onWeightChanged(Float newValue) {
    
    327
    -        getModel().getTableEditBean().setIsWeightComputed(false);
    
    328
    -    }
    
    289
    +//    @Override
    
    290
    +//    protected void onSpeciesChanged(SpeciesReference species) {
    
    291
    +//        // on utilise le code par defaut de l'espèce
    
    292
    +//        Optional<SizeMeasureTypeReference> sizeMeasureType = getSpeciesDefaultSizeMeasureType(species);
    
    293
    +//        ((TargetSampleUI) ui).getModel().setDefaultSizeMeasureType(sizeMeasureType.orElse(null));
    
    294
    +//        resetDefaultSizeMeasureType();
    
    295
    +//        Optional<WeightMeasureTypeReference> weightMeasureType = getSpeciesDefaultWeightMeasureType(species);
    
    296
    +//        ((TargetSampleUI) ui).getModel().setDefaultWeightMeasureType(weightMeasureType.orElse(null));
    
    297
    +//        resetDefaultWeightMeasureType();
    
    298
    +//    }
    
    329 299
     
    
    330
    -    @Override
    
    331
    -    protected void onLengthChanged(Float newValue) {
    
    332
    -        getModel().getTableEditBean().setIsLengthComputed(false);
    
    333
    -    }
    
    300
    +//    @Override
    
    301
    +//    protected void onWeightChanged(Float newValue) {
    
    302
    +//        getModel().getTableEditBean().setIsWeightComputed(false);
    
    303
    +//    }
    
    334 304
     
    
    335
    -    public void resetDefaultSizeMeasureType() {
    
    336
    -        TargetSampleUI ui = (TargetSampleUI) getUi();
    
    337
    -        ui.getSizeMeasureType().setSelectedItem(null);
    
    338
    -        ui.getSizeMeasureType().setSelectedItem(ui.getModel().getDefaultSizeMeasureType());
    
    339
    -    }
    
    305
    +//    @Override
    
    306
    +//    protected void onLengthChanged(Float newValue) {
    
    307
    +//        getModel().getTableEditBean().setIsLengthComputed(false);
    
    308
    +//    }
    
    340 309
     
    
    341 310
         private void checkSizeMeasureTypes(List<SizeMeasureTypeReference> data) {
    
    342 311
             if (data.size() != 2) {
    
    ... ... @@ -344,29 +313,4 @@ public class TargetSampleUIHandler<U extends ContentTableUI<TargetSampleDto, Tar
    344 313
             }
    
    345 314
         }
    
    346 315
     
    
    347
    -//    @Override
    
    348
    -//    protected ContentMode computeWritableContentMode() {
    
    349
    -//        ContentMode mode = super.computeWritableContentMode();
    
    350
    -//
    
    351
    -//        String selectedId = getSelectedId();
    
    352
    -//
    
    353
    -//        boolean showData = getTargetSampleService().canUseTargetSample(selectedId, discarded);
    
    354
    -//
    
    355
    -//        getModel().setShowData(showData);
    
    356
    -//
    
    357
    -//        if (mode == ContentMode.UPDATE && !showData) {
    
    358
    -//
    
    359
    -//            mode = ContentMode.READ;
    
    360
    -//
    
    361
    -//            addMessage(ui,
    
    362
    -//                       NuitonValidatorScope.INFO,
    
    363
    -//                       getTypeI18nKey(SetDto.class),
    
    364
    -//                       discarded ?
    
    365
    -//                               t("observe.data.ps.observation.Set.message.no.targetCatch") :
    
    366
    -//                               t("observe.data.ps.observation.Set.message.no.targetDiscarded")
    
    367
    -//            );
    
    368
    -//        }
    
    369
    -//        return mode;
    
    370
    -//    }
    
    371
    -
    
    372 316
     }

  • 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;
    22 22
      * #L%
    
    23 23
      */
    
    24 24
     
    
    25
    +import fr.ird.observe.client.constants.AcquisitionMode;
    
    25 26
     import fr.ird.observe.client.datasource.api.ObserveDataSourcesManagerApplicationComponent;
    
    26 27
     import fr.ird.observe.client.datasource.api.ObserveSwingDataSource;
    
    27 28
     import fr.ird.observe.client.datasource.editor.content.ContentMode;
    
    29
    +import fr.ird.observe.client.datasource.editor.content.data.sample.SampleUIModel;
    
    28 30
     import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableMeta;
    
    29 31
     import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableModel;
    
    30 32
     import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUI;
    
    31
    -import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUIModel;
    
    32 33
     import fr.ird.observe.dto.data.ps.observation.TargetLengthDto;
    
    33 34
     import fr.ird.observe.dto.data.ps.observation.TargetLengthHelper;
    
    34 35
     import fr.ird.observe.dto.data.ps.observation.TargetSampleDto;
    
    35 36
     import fr.ird.observe.dto.referential.common.SizeMeasureTypeReference;
    
    37
    +import fr.ird.observe.dto.referential.common.SpeciesReference;
    
    38
    +import fr.ird.observe.dto.referential.common.WeightMeasureTypeReference;
    
    36 39
     import fr.ird.observe.navigation.model.select.ObserveSelectModelApplicationComponent;
    
    37 40
     import fr.ird.observe.navigation.model.select.ObserveSelectNode;
    
    38 41
     
    
    ... ... @@ -47,10 +50,7 @@ import java.util.List;
    47 50
      * @author Tony Chemit - dev@tchemit.fr
    
    48 51
      * @since XXX
    
    49 52
      */
    
    50
    -public class TargetSampleUIModel extends ContentTableUIModel<TargetSampleDto, TargetLengthDto> {
    
    51
    -
    
    52
    -    public static final String PROPERTY_DEFAULT_SIZE_MEASURE_TYPE = "defaultSizeMeasureType";
    
    53
    -    private SizeMeasureTypeReference defaultSizeMeasureType;
    
    53
    +public class TargetSampleUIModel extends SampleUIModel<TargetSampleDto, TargetLengthDto> {
    
    54 54
     
    
    55 55
         public TargetSampleUIModel(TargetSampleUI ui) {
    
    56 56
     
    
    ... ... @@ -120,13 +120,43 @@ public class TargetSampleUIModel extends ContentTableUIModel<TargetSampleDto, Ta
    120 120
             return mainDataSource.getPsObservationTargetSampleService().canUseTargetSample(selectedId, ((TargetSampleUI)ui).getHandler().isDiscarded());
    
    121 121
         }
    
    122 122
     
    
    123
    -    public SizeMeasureTypeReference getDefaultSizeMeasureType() {
    
    124
    -        return defaultSizeMeasureType;
    
    123
    +    @Override
    
    124
    +    public SpeciesReference getSpecies() {
    
    125
    +        return getTableEditBean().getSpecies();
    
    126
    +    }
    
    127
    +
    
    128
    +    @Override
    
    129
    +    public SizeMeasureTypeReference getSizeMeasureType() {
    
    130
    +        return getTableEditBean().getSizeMeasureType();
    
    131
    +    }
    
    132
    +
    
    133
    +    @Override
    
    134
    +    public WeightMeasureTypeReference getWeightMeasureType() {
    
    135
    +        return getTableEditBean().getWeightMeasureType();
    
    136
    +    }
    
    137
    +
    
    138
    +    @Override
    
    139
    +    public int getAcquisitionMode() {
    
    140
    +        return getTableEditBean().getAcquisitionMode();
    
    125 141
         }
    
    126 142
     
    
    127
    -    public void setDefaultSizeMeasureType(SizeMeasureTypeReference defaultSizeMeasureType) {
    
    128
    -        SizeMeasureTypeReference oldValue = getDefaultSizeMeasureType();
    
    129
    -        this.defaultSizeMeasureType = defaultSizeMeasureType;
    
    130
    -        firePropertyChange(PROPERTY_DEFAULT_SIZE_MEASURE_TYPE, oldValue, defaultSizeMeasureType);
    
    143
    +    @Override
    
    144
    +    public void setAcquisitionMode(int acquisitionMode) {
    
    145
    +        getTableEditBean().setAcquisitionMode(acquisitionMode);
    
    146
    +    }
    
    147
    +
    
    148
    +    @Override
    
    149
    +    public AcquisitionMode getDefaultAcquisitionMode() {
    
    150
    +        return AcquisitionMode.byEffectif;
    
    151
    +    }
    
    152
    +
    
    153
    +    @Override
    
    154
    +    public void setWeightMeasureType(WeightMeasureTypeReference weightMeasureType) {
    
    155
    +        getTableEditBean().setWeightMeasureType(weightMeasureType);
    
    156
    +    }
    
    157
    +
    
    158
    +    @Override
    
    159
    +    public void setSizeMeasureType(SizeMeasureTypeReference sizeMeasureType) {
    
    160
    +        getTableEditBean().setSizeMeasureType(sizeMeasureType);
    
    131 161
         }
    
    132 162
     }