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

Commits:

4 changed files:

Changes:

  • client/core/src/main/java/fr/ird/observe/client/util/table/EditableTableModelWithCache.java
    ... ... @@ -86,7 +86,7 @@ public abstract class EditableTableModelWithCache<E extends BusinessDto & Inline
    86 86
             }
    
    87 87
         }
    
    88 88
     
    
    89
    -    public final void onBeforeResetRow(String prefix, int editingRow, JTable table) {
    
    89
    +    public void onBeforeResetRow(String prefix, int editingRow, JTable table) {
    
    90 90
             if (!isEditable()) {
    
    91 91
                 return;
    
    92 92
             }
    

  • client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/GearUseFeaturesMeasurementsTableModelSupport.java
    ... ... @@ -33,6 +33,7 @@ import fr.ird.observe.client.util.table.EditableTableModelWithCache;
    33 33
     import fr.ird.observe.client.util.table.JXTableUtil;
    
    34 34
     import fr.ird.observe.dto.BusinessDto;
    
    35 35
     import fr.ird.observe.dto.data.ContainerChildDto;
    
    36
    +import fr.ird.observe.dto.data.ContainerDto;
    
    36 37
     import fr.ird.observe.dto.data.GearUseFeaturesAware;
    
    37 38
     import fr.ird.observe.dto.data.GearUseFeaturesMeasurementAware;
    
    38 39
     import fr.ird.observe.dto.referential.common.GearCharacteristicListItemReference;
    
    ... ... @@ -46,6 +47,7 @@ import org.apache.logging.log4j.Logger;
    46 47
     import org.nuiton.jaxx.validator.swing.SwingValidator;
    
    47 48
     
    
    48 49
     import javax.swing.JScrollPane;
    
    50
    +import javax.swing.JTable;
    
    49 51
     import java.util.ArrayList;
    
    50 52
     import java.util.List;
    
    51 53
     import java.util.Objects;
    
    ... ... @@ -66,19 +68,21 @@ public abstract class GearUseFeaturesMeasurementsTableModelSupport<E extends Bus
    66 68
         private FilterableComboBox<GearCharacteristicReference> gearCharacteristicEditor;
    
    67 69
         private List<GearCharacteristicReference> allowedCharacteristics;
    
    68 70
     
    
    71
    +    private ContentTableUI<?, P, ?> ui;
    
    72
    +
    
    69 73
         @SuppressWarnings("unchecked")
    
    70 74
         public static <E extends BusinessDto & GearUseFeaturesMeasurementAware, P extends ContainerChildDto & GearUseFeaturesAware> void onInit(ContentTableUI<?, P, ?> ui, JScrollPane scrollPane, EditableTable<E, ?> table, SwingValidator<E> rowValidator) {
    
    71 75
             table.setRowHeight(22);
    
    72 76
             GearUseFeaturesMeasurementsTableModelSupport<E, P> model = (GearUseFeaturesMeasurementsTableModelSupport<E, P>) table.getModel();
    
    73 77
             ui.getTableModel().registerInlineModel(model, table);
    
    74
    -
    
    78
    +        model.ui = ui;
    
    75 79
             ContentTableUITableModel<?, P, ?> tableUIModel = ui.getTableModel();
    
    76 80
             @SuppressWarnings("unchecked") P tableEditBean = (P) ui.getTableEditBean();
    
    77
    -        tableEditBean.addPropertyChangeListener("gear", evt -> model.onGearChanged(tableUIModel, (GearReference) evt.getNewValue()));
    
    81
    +        tableEditBean.addPropertyChangeListener("gear", evt -> model.onGearChanged(ui, tableUIModel, (GearReference) evt.getNewValue(), false));
    
    78 82
             tableUIModel.addPropertyChangeListener(ContentTableUITableModel.SELECTED_ROW_PROPERTY, evt -> {
    
    79 83
                 int newValue = (int) evt.getNewValue();
    
    80 84
                 if (newValue != -1) {
    
    81
    -                model.onGearChanged(tableUIModel, tableEditBean.getGear());
    
    85
    +                model.onGearChanged(ui, tableUIModel, tableEditBean.getGear(), true);
    
    82 86
                 }
    
    83 87
             });
    
    84 88
             model.gearsById = Maps.uniqueIndex(ui.getHandler().getReferentialService().loadDtoList(GearDto.class), GearDto::getId);
    
    ... ... @@ -104,7 +108,24 @@ public abstract class GearUseFeaturesMeasurementsTableModelSupport<E extends Bus
    104 108
             super(listProperty);
    
    105 109
         }
    
    106 110
     
    
    107
    -    private void onGearChanged(ContentTableUITableModel<?, P, ?> tableModel, GearReference newGear) {
    
    111
    +    @Override
    
    112
    +    public void onBeforeResetRow(String prefix, int editingRow, JTable table) {
    
    113
    +        if (!isEditable()) {
    
    114
    +            return;
    
    115
    +        }
    
    116
    +        log.info(String.format("%sBefore reset edit bean at row: %d", prefix, editingRow));
    
    117
    +        UIHelper.cancelEditing(table);
    
    118
    +        @SuppressWarnings("unchecked") ContainerDto<P> containerBean = (ContainerDto<P>) ui.getBean();
    
    119
    +        List<P> children = containerBean.getChildren();
    
    120
    +        P bean = children.get(editingRow);
    
    121
    +        @SuppressWarnings("unchecked") List<E> gearUseFeaturesMeasurement = (List<E>) bean.getGearUseFeaturesMeasurement();
    
    122
    +        cache().replace(editingRow, gearUseFeaturesMeasurement);
    
    123
    +        List<E> newData = cache().get(editingRow);
    
    124
    +        setData(newData);
    
    125
    +        validate();
    
    126
    +    }
    
    127
    +
    
    128
    +    private void onGearChanged(ContentTableUI<?, P, ?> ui, ContentTableUITableModel<?, P, ?> tableModel, GearReference newGear, boolean selectionRowChanged) {
    
    108 129
             if (!tableModel.isEditable()) {
    
    109 130
                 return;
    
    110 131
             }
    
    ... ... @@ -112,35 +133,14 @@ public abstract class GearUseFeaturesMeasurementsTableModelSupport<E extends Bus
    112 133
                 return;
    
    113 134
             }
    
    114 135
             String gearId = newGear == null ? null : newGear.getId();
    
    115
    -        log.info("Use gear: {}", gearId);
    
    116
    -        updateAllowedCharacteristics(gearId);
    
    117
    -        if (tableModel.isCreate()) {
    
    118
    -            // add default measurements
    
    136
    +        log.info("Use gear: {}, selection row changed? {}, existing measurements ({})", gearId, selectionRowChanged, getRowCount());
    
    137
    +        if (!selectionRowChanged && !ui.getStates().isResetEdit()) {
    
    138
    +            // This means user has changed the gear, need to reset measurement, then add default ones
    
    119 139
                 setDefaultMeasurementsOnSelectedRow(gearId, tableModel.getSelectedRow());
    
    120 140
             }
    
    141
    +        updateAllowedCharacteristics(gearId);
    
    121 142
         }
    
    122 143
     
    
    123
    -//    public void onAfterLoadRowBeanToEdit(int editingRow, P tableEditBean, boolean newRow) {
    
    124
    -//        List<E> measurements = get(editingRow);
    
    125
    -//        if (measurements == null) {
    
    126
    -//            log.info(String.format("init measurements for row %d", editingRow));
    
    127
    -//            // first time coming on this row
    
    128
    -//            if (newRow) {
    
    129
    -//                // create mode: just init with empty list
    
    130
    -//                measurements = Collections.emptyList();
    
    131
    -//                log.info("create mode, use an empty list");
    
    132
    -//            } else {
    
    133
    -//                measurements = new ArrayList<>(getGearUseFeaturesMeasurement(tableEditBean));
    
    134
    -//            }
    
    135
    -//            // init measurements
    
    136
    -//            put(editingRow, measurements);
    
    137
    -//        } else {
    
    138
    -//            log.info(String.format("Using existing measurements for row %d : %d", editingRow, measurements.size()));
    
    139
    -//        }
    
    140
    -//        setData(measurements);
    
    141
    -//        setModified(false);
    
    142
    -//    }
    
    143
    -
    
    144 144
         @Override
    
    145 145
         public final int getColumnCount() {
    
    146 146
             return 2;
    
    ... ... @@ -176,7 +176,7 @@ public abstract class GearUseFeaturesMeasurementsTableModelSupport<E extends Bus
    176 176
     
    
    177 177
         public void setDefaultMeasurementsOnSelectedRow(String gearId, int editingRow) {
    
    178 178
             List<E> measurements = getDefaultGearUseFeaturesMeasurement(gearId);
    
    179
    -        log.info(String.format("Create mode, use default measurements: %d", measurements.size()));
    
    179
    +        log.info(String.format("User mode, use default measurements: %d", measurements.size()));
    
    180 180
             //FIXME Error no list for row -1
    
    181 181
             cache().replace(editingRow, measurements);
    
    182 182
             setData(measurements);
    

  • client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/common/TripGearUseFeaturesUI.jaxx
    ... ... @@ -58,54 +58,55 @@
    58 58
     
    
    59 59
       <Table id='editorPanel' fill='both' insets='0' beanScope="tableEditBean">
    
    60 60
         <row>
    
    61
    -      <cell weightx="0.5">
    
    62
    -        <JXTitledPanel id="definitionPanel" contentContainer='{definitionForm}'>
    
    63
    -          <Table id='definitionForm' fill='both' insets='1'>
    
    64
    -            <!-- gear -->
    
    65
    -            <row>
    
    66
    -              <cell>
    
    67
    -                <JLabel id='gearLabel'/>
    
    68
    -              </cell>
    
    69
    -              <cell weightx='1' anchor='east'>
    
    70
    -                <FilterableComboBox id='gear' genericType='GearReference'/>
    
    71
    -              </cell>
    
    72
    -            </row>
    
    73
    -            <!-- number -->
    
    74
    -            <row>
    
    75
    -              <cell>
    
    76
    -                <JLabel id='numberLabel'/>
    
    77
    -              </cell>
    
    78
    -              <cell weightx='1' anchor='east'>
    
    79
    -                <NumberEditor id='number' styleClass="int6"/>
    
    80
    -              </cell>
    
    81
    -            </row>
    
    82
    -            <!-- usedInTrip -->
    
    83
    -            <row>
    
    84
    -              <cell>
    
    85
    -                <JLabel id='usedInTripLabel'/>
    
    86
    -              </cell>
    
    87
    -              <cell weightx='1' anchor='east'>
    
    88
    -                <BooleanEditor id='usedInTrip'/>
    
    89
    -              </cell>
    
    90
    -            </row>
    
    91
    -            <!-- comment -->
    
    92
    -            <row>
    
    93
    -              <cell columns="2" weighty='1'>
    
    94
    -                <BigTextEditor id="comment"/>
    
    95
    -              </cell>
    
    96
    -            </row>
    
    97
    -          </Table>
    
    98
    -        </JXTitledPanel>
    
    99
    -      </cell>
    
    100
    -      <cell weightx="0.5">
    
    101
    -        <JXTitledPanel id="measurementsPanel" contentContainer='{measurementsInternalPanel}'>
    
    102
    -          <JPanel id="measurementsInternalPanel" layout='{new GridLayout()}'>
    
    103
    -            <JScrollPane id='measurementsScrollPane'>
    
    104
    -              <EditableTable id='measurementsTable' constructorParams='measurementsTableModel' genericType="GearUseFeaturesMeasurementDto, GearUseFeaturesMeasurementsTableModel"/>
    
    105
    -            </JScrollPane>
    
    106
    -          </JPanel>
    
    107
    -        </JXTitledPanel>
    
    61
    +      <cell weightx="1">
    
    62
    +        <JPanel layout="{new GridLayout()}">
    
    63
    +          <JXTitledPanel id="definitionPanel" contentContainer='{definitionForm}'>
    
    64
    +            <Table id='definitionForm' fill='both' insets='1'>
    
    65
    +              <!-- gear -->
    
    66
    +              <row>
    
    67
    +                <cell>
    
    68
    +                  <JLabel id='gearLabel'/>
    
    69
    +                </cell>
    
    70
    +                <cell weightx='1' anchor='east'>
    
    71
    +                  <FilterableComboBox id='gear' genericType='GearReference'/>
    
    72
    +                </cell>
    
    73
    +              </row>
    
    74
    +              <!-- number -->
    
    75
    +              <row>
    
    76
    +                <cell>
    
    77
    +                  <JLabel id='numberLabel'/>
    
    78
    +                </cell>
    
    79
    +                <cell weightx='1' anchor='east'>
    
    80
    +                  <NumberEditor id='number' styleClass="int6"/>
    
    81
    +                </cell>
    
    82
    +              </row>
    
    83
    +              <!-- usedInTrip -->
    
    84
    +              <row>
    
    85
    +                <cell>
    
    86
    +                  <JLabel id='usedInTripLabel'/>
    
    87
    +                </cell>
    
    88
    +                <cell weightx='1' anchor='east'>
    
    89
    +                  <BooleanEditor id='usedInTrip'/>
    
    90
    +                </cell>
    
    91
    +              </row>
    
    92
    +              <!-- comment -->
    
    93
    +              <row>
    
    94
    +                <cell columns="2" weighty='1'>
    
    95
    +                  <BigTextEditor id="comment"/>
    
    96
    +                </cell>
    
    97
    +              </row>
    
    98
    +            </Table>
    
    99
    +          </JXTitledPanel>
    
    100
    +          <JXTitledPanel id="measurementsPanel" contentContainer='{measurementsInternalPanel}'>
    
    101
    +            <JPanel id="measurementsInternalPanel" layout='{new GridLayout()}'>
    
    102
    +              <JScrollPane id='measurementsScrollPane'>
    
    103
    +                <EditableTable id='measurementsTable' constructorParams='measurementsTableModel' genericType="GearUseFeaturesMeasurementDto, GearUseFeaturesMeasurementsTableModel"/>
    
    104
    +              </JScrollPane>
    
    105
    +            </JPanel>
    
    106
    +          </JXTitledPanel>
    
    107
    +        </JPanel>
    
    108 108
           </cell>
    
    109 109
         </row>
    
    110 110
       </Table>
    
    111
    +  <JMenuItem id='moveAll' styleClass='editableAndNotModifiedAndTableNotEmpty'/>
    
    111 112
     </fr.ird.observe.client.datasource.editor.api.content.data.table.ContentTableUI>

  • client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/common/TripGearUseFeaturesUI.jaxx
    ... ... @@ -58,53 +58,53 @@
    58 58
     
    
    59 59
       <Table id='editorPanel' fill='both' insets='0' beanScope="tableEditBean">
    
    60 60
         <row>
    
    61
    -      <cell weightx="0.5">
    
    62
    -        <JXTitledPanel id="definitionPanel" contentContainer='{definitionForm}'>
    
    63
    -          <Table id='definitionForm' fill='both' insets='1'>
    
    64
    -            <!-- gear -->
    
    65
    -            <row>
    
    66
    -              <cell>
    
    67
    -                <JLabel id='gearLabel'/>
    
    68
    -              </cell>
    
    69
    -              <cell weightx='1' anchor='east'>
    
    70
    -                <FilterableComboBox id='gear' genericType='GearReference'/>
    
    71
    -              </cell>
    
    72
    -            </row>
    
    73
    -            <!-- number -->
    
    74
    -            <row>
    
    75
    -              <cell>
    
    76
    -                <JLabel id='numberLabel'/>
    
    77
    -              </cell>
    
    78
    -              <cell weightx='1' anchor='east'>
    
    79
    -                <NumberEditor id='number' styleClass="int6"/>
    
    80
    -              </cell>
    
    81
    -            </row>
    
    82
    -            <!-- usedInTrip -->
    
    83
    -            <row>
    
    84
    -              <cell>
    
    85
    -                <JLabel id='usedInTripLabel'/>
    
    86
    -              </cell>
    
    87
    -              <cell weightx='1' anchor='east'>
    
    88
    -                <BooleanEditor id='usedInTrip'/>
    
    89
    -              </cell>
    
    90
    -            </row>
    
    91
    -            <!-- comment -->
    
    92
    -            <row>
    
    93
    -              <cell columns="2" weighty='1'>
    
    94
    -                <BigTextEditor id="comment"/>
    
    95
    -              </cell>
    
    96
    -            </row>
    
    97
    -          </Table>
    
    98
    -        </JXTitledPanel>
    
    99
    -      </cell>
    
    100
    -      <cell weightx="0.5">
    
    101
    -        <JXTitledPanel id="measurementsPanel" contentContainer='{measurementsInternalPanel}'>
    
    102
    -          <JPanel id="measurementsInternalPanel" layout='{new GridLayout()}'>
    
    103
    -            <JScrollPane id='measurementsScrollPane'>
    
    104
    -              <EditableTable id='measurementsTable' constructorParams='measurementsTableModel' genericType="GearUseFeaturesMeasurementDto, GearUseFeaturesMeasurementsTableModel"/>
    
    105
    -            </JScrollPane>
    
    106
    -          </JPanel>
    
    107
    -        </JXTitledPanel>
    
    61
    +      <cell weightx="1">
    
    62
    +        <JPanel layout="{new GridLayout()}">
    
    63
    +          <JXTitledPanel id="definitionPanel" contentContainer='{definitionForm}'>
    
    64
    +            <Table id='definitionForm' fill='both' insets='1'>
    
    65
    +              <!-- gear -->
    
    66
    +              <row>
    
    67
    +                <cell>
    
    68
    +                  <JLabel id='gearLabel'/>
    
    69
    +                </cell>
    
    70
    +                <cell weightx='1' anchor='east'>
    
    71
    +                  <FilterableComboBox id='gear' genericType='GearReference'/>
    
    72
    +                </cell>
    
    73
    +              </row>
    
    74
    +              <!-- number -->
    
    75
    +              <row>
    
    76
    +                <cell>
    
    77
    +                  <JLabel id='numberLabel'/>
    
    78
    +                </cell>
    
    79
    +                <cell weightx='1' anchor='east'>
    
    80
    +                  <NumberEditor id='number' styleClass="int6"/>
    
    81
    +                </cell>
    
    82
    +              </row>
    
    83
    +              <!-- usedInTrip -->
    
    84
    +              <row>
    
    85
    +                <cell>
    
    86
    +                  <JLabel id='usedInTripLabel'/>
    
    87
    +                </cell>
    
    88
    +                <cell weightx='1' anchor='east'>
    
    89
    +                  <BooleanEditor id='usedInTrip'/>
    
    90
    +                </cell>
    
    91
    +              </row>
    
    92
    +              <!-- comment -->
    
    93
    +              <row>
    
    94
    +                <cell columns="2" weighty='1'>
    
    95
    +                  <BigTextEditor id="comment"/>
    
    96
    +                </cell>
    
    97
    +              </row>
    
    98
    +            </Table>
    
    99
    +          </JXTitledPanel>
    
    100
    +          <JXTitledPanel id="measurementsPanel" contentContainer='{measurementsInternalPanel}'>
    
    101
    +            <JPanel id="measurementsInternalPanel" layout='{new GridLayout()}'>
    
    102
    +              <JScrollPane id='measurementsScrollPane'>
    
    103
    +                <EditableTable id='measurementsTable' constructorParams='measurementsTableModel' genericType="GearUseFeaturesMeasurementDto, GearUseFeaturesMeasurementsTableModel"/>
    
    104
    +              </JScrollPane>
    
    105
    +            </JPanel>
    
    106
    +          </JXTitledPanel>
    
    107
    +        </JPanel>
    
    108 108
           </cell>
    
    109 109
         </row>
    
    110 110
       </Table>