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

Commits:

2 changed files:

Changes:

  • client/src/main/java/fr/ird/observe/client/ui/content/data/longline/GearUseFeaturesLonglineUIHandler.java
    ... ... @@ -33,6 +33,7 @@ import fr.ird.observe.client.ui.content.table.ContentTableUIHandler;
    33 33
     import fr.ird.observe.client.ui.content.table.GearUseFeatureMeasurementCellEditor;
    
    34 34
     import fr.ird.observe.client.ui.content.table.GearUseFeatureMeasurementCellRenderer;
    
    35 35
     import fr.ird.observe.client.ui.util.UIHelper;
    
    36
    +import fr.ird.observe.client.ui.util.table.EditableTableModelSupport;
    
    36 37
     import fr.ird.observe.dto.data.longline.GearUseFeaturesLonglineDto;
    
    37 38
     import fr.ird.observe.dto.data.longline.GearUseFeaturesMeasurementLonglineDto;
    
    38 39
     import fr.ird.observe.dto.data.longline.TripLonglineDto;
    
    ... ... @@ -50,6 +51,7 @@ import org.apache.commons.lang3.StringUtils;
    50 51
     import org.apache.commons.logging.Log;
    
    51 52
     import org.apache.commons.logging.LogFactory;
    
    52 53
     import org.nuiton.jaxx.runtime.spi.UIHandler;
    
    54
    +import org.nuiton.jaxx.runtime.swing.JTables;
    
    53 55
     import org.nuiton.jaxx.validator.swing.SwingValidatorMessage;
    
    54 56
     import org.nuiton.jaxx.validator.swing.SwingValidatorMessageTableModel;
    
    55 57
     import org.nuiton.validator.NuitonValidatorScope;
    
    ... ... @@ -57,6 +59,7 @@ import org.nuiton.validator.NuitonValidatorScope;
    57 59
     import javax.swing.JComponent;
    
    58 60
     import javax.swing.JOptionPane;
    
    59 61
     import javax.swing.JTable;
    
    62
    +import javax.swing.SwingUtilities;
    
    60 63
     import javax.swing.event.TableModelListener;
    
    61 64
     import javax.swing.table.DefaultTableCellRenderer;
    
    62 65
     import java.awt.GridBagConstraints;
    
    ... ... @@ -82,10 +85,11 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip
    82 85
     
    
    83 86
         /** Logger */
    
    84 87
         private static final Log log = LogFactory.getLog(GearUseFeaturesLonglineUIHandler.class);
    
    85
    -    private final Comparator<GearUseFeaturesMeasurementLonglineDto> GEAR_USE_FEATURES_MEASUREMENT_LONGLINE_DTO_COMPARATOR;
    
    86 88
         // Compute valid state of tab from the error table
    
    87 89
         protected final TableModelListener computeTabValidStateListener;
    
    90
    +    private final Comparator<GearUseFeaturesMeasurementLonglineDto> GEAR_USE_FEATURES_MEASUREMENT_LONGLINE_DTO_COMPARATOR;
    
    88 91
         private final PropertyChangeListener measurementsTableModelModified;
    
    92
    +    private boolean cellEditorAdjusting;
    
    89 93
     
    
    90 94
         GearUseFeaturesLonglineUIHandler() {
    
    91 95
             super(DataContextType.TripLongline);
    
    ... ... @@ -117,6 +121,55 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip
    117 121
     
    
    118 122
             setTableModelEditable(model.isEditable());
    
    119 123
             getTableModel().setGearUseFeaturesLonglineUIHandler(this);
    
    124
    +        ui.getMeasurementsTable().getColumnModel().getSelectionModel().addListSelectionListener(e -> {
    
    125
    +            if (e.getValueIsAdjusting()) {
    
    126
    +                return;
    
    127
    +            }
    
    128
    +            if (getModel().isReadingMode()) {
    
    129
    +                return;
    
    130
    +            }
    
    131
    +            if (cellEditorAdjusting) {
    
    132
    +                return;
    
    133
    +            }
    
    134
    +            int selectedColumn = ui.getMeasurementsTable().getSelectedColumn();
    
    135
    +            log.debug("new selected column: " + selectedColumn);
    
    136
    +            int selectedRow = ui.getMeasurementsTable().getSelectedRow();
    
    137
    +            if (selectedColumn != -1 && selectedRow != -1) {
    
    138
    +                log.debug(String.format("Do reselect: %d-%d", selectedRow, selectedColumn));
    
    139
    +                if (ui.getMeasurementsTable().getCellEditor() != null) {
    
    140
    +                    return;
    
    141
    +                }
    
    142
    +                selectCell(ui, selectedColumn, selectedRow);
    
    143
    +            }
    
    144
    +        });
    
    145
    +        model.getMeasurementsTableModel().addPropertyChangeListener(EditableTableModelSupport.SELECTED_ROW_INDEX_PROPERTY, e -> {
    
    146
    +            if (getModel().isReadingMode()) {
    
    147
    +                return;
    
    148
    +            }
    
    149
    +            if (cellEditorAdjusting) {
    
    150
    +                return;
    
    151
    +            }
    
    152
    +            Integer selectedRow = (Integer) e.getNewValue();
    
    153
    +            log.debug("new selected row: " + selectedRow);
    
    154
    +            if (selectedRow != null) {
    
    155
    +                int selectedColumn = ui.getMeasurementsTable().getSelectedColumn();
    
    156
    +                if (selectedColumn != -1) {
    
    157
    +                    log.debug(String.format("Do reselect: %d-%d", selectedRow, selectedColumn));
    
    158
    +                    selectCell(ui, selectedColumn, selectedRow);
    
    159
    +                }
    
    160
    +            }
    
    161
    +        });
    
    162
    +    }
    
    163
    +
    
    164
    +    private void selectCell(GearUseFeaturesLonglineUI ui, int selectedColumn, int selectedRow) {
    
    165
    +        SwingUtilities.invokeLater(() -> {
    
    166
    +            cellEditorAdjusting = true;
    
    167
    +            try {
    
    168
    +                JTables.doSelectCell(ui.getMeasurementsTable(), selectedRow, selectedColumn);
    
    169
    +            } finally {
    
    170
    +                cellEditorAdjusting = false;
    
    171
    +            }
    
    172
    +        });
    
    120 173
         }
    
    121 174
     
    
    122 175
         @Override
    

  • client/src/main/java/fr/ird/observe/client/ui/content/data/seine/GearUseFeaturesSeineUIHandler.java
    ... ... @@ -33,6 +33,7 @@ import fr.ird.observe.client.ui.content.table.ContentTableUIHandler;
    33 33
     import fr.ird.observe.client.ui.content.table.GearUseFeatureMeasurementCellEditor;
    
    34 34
     import fr.ird.observe.client.ui.content.table.GearUseFeatureMeasurementCellRenderer;
    
    35 35
     import fr.ird.observe.client.ui.util.UIHelper;
    
    36
    +import fr.ird.observe.client.ui.util.table.EditableTableModelSupport;
    
    36 37
     import fr.ird.observe.dto.data.seine.GearUseFeaturesMeasurementSeineDto;
    
    37 38
     import fr.ird.observe.dto.data.seine.GearUseFeaturesSeineDto;
    
    38 39
     import fr.ird.observe.dto.data.seine.TripSeineDto;
    
    ... ... @@ -50,6 +51,7 @@ import org.apache.commons.lang3.StringUtils;
    50 51
     import org.apache.commons.logging.Log;
    
    51 52
     import org.apache.commons.logging.LogFactory;
    
    52 53
     import org.nuiton.jaxx.runtime.spi.UIHandler;
    
    54
    +import org.nuiton.jaxx.runtime.swing.JTables;
    
    53 55
     import org.nuiton.jaxx.validator.swing.SwingValidatorMessage;
    
    54 56
     import org.nuiton.jaxx.validator.swing.SwingValidatorMessageTableModel;
    
    55 57
     import org.nuiton.validator.NuitonValidatorScope;
    
    ... ... @@ -57,6 +59,7 @@ import org.nuiton.validator.NuitonValidatorScope;
    57 59
     import javax.swing.JComponent;
    
    58 60
     import javax.swing.JOptionPane;
    
    59 61
     import javax.swing.JTable;
    
    62
    +import javax.swing.SwingUtilities;
    
    60 63
     import javax.swing.event.TableModelListener;
    
    61 64
     import javax.swing.table.DefaultTableCellRenderer;
    
    62 65
     import java.awt.GridBagConstraints;
    
    ... ... @@ -82,13 +85,11 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei
    82 85
     
    
    83 86
         /** Logger */
    
    84 87
         private static final Log log = LogFactory.getLog(GearUseFeaturesSeineUIHandler.class);
    
    85
    -
    
    86
    -    private final Comparator<GearUseFeaturesMeasurementSeineDto> GEAR_USE_FEATURES_MEASUREMENT_SEINE_DTO_COMPARATOR;
    
    87
    -
    
    88 88
         // Compute valid state of tab from the error table
    
    89 89
         protected final TableModelListener computeTabValidStateListener;
    
    90
    -
    
    90
    +    private final Comparator<GearUseFeaturesMeasurementSeineDto> GEAR_USE_FEATURES_MEASUREMENT_SEINE_DTO_COMPARATOR;
    
    91 91
         private final PropertyChangeListener measurementsTableModelModified;
    
    92
    +    private boolean cellEditorAdjusting;
    
    92 93
     
    
    93 94
         GearUseFeaturesSeineUIHandler() {
    
    94 95
             super(DataContextType.TripSeine);
    
    ... ... @@ -119,8 +120,56 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei
    119 120
     
    
    120 121
             setTableModelEditable(model.isEditable());
    
    121 122
     
    
    123
    +        ui.getMeasurementsTable().getColumnModel().getSelectionModel().addListSelectionListener(e -> {
    
    124
    +            if (e.getValueIsAdjusting()) {
    
    125
    +                return;
    
    126
    +            }
    
    127
    +            if (getModel().isReadingMode()) {
    
    128
    +                return;
    
    129
    +            }
    
    130
    +            if (cellEditorAdjusting) {
    
    131
    +                return;
    
    132
    +            }
    
    133
    +            int selectedColumn = ui.getMeasurementsTable().getSelectedColumn();
    
    134
    +            log.debug("new selected column: " + selectedColumn);
    
    135
    +            int selectedRow = ui.getMeasurementsTable().getSelectedRow();
    
    136
    +            if (selectedColumn != -1 && selectedRow != -1) {
    
    137
    +                log.debug(String.format("Do reselect: %d-%d", selectedRow, selectedColumn));
    
    138
    +                if (ui.getMeasurementsTable().getCellEditor() != null) {
    
    139
    +                    return;
    
    140
    +                }
    
    141
    +                selectCell(ui, selectedColumn, selectedRow);
    
    142
    +            }
    
    143
    +        });
    
    122 144
             getTableModel().setGearUseFeaturesSeineUIHandler(this);
    
    145
    +        model.getMeasurementsTableModel().addPropertyChangeListener(EditableTableModelSupport.SELECTED_ROW_INDEX_PROPERTY, e -> {
    
    146
    +            if (getModel().isReadingMode()) {
    
    147
    +                return;
    
    148
    +            }
    
    149
    +            if (cellEditorAdjusting) {
    
    150
    +                return;
    
    151
    +            }
    
    152
    +            Integer selectedRow = (Integer) e.getNewValue();
    
    153
    +            log.debug("new selected row: " + selectedRow);
    
    154
    +            if (selectedRow != null) {
    
    155
    +                int selectedColumn = ui.getMeasurementsTable().getSelectedColumn();
    
    156
    +                if (selectedColumn != -1) {
    
    157
    +                    log.debug(String.format("Do reselect: %d-%d", selectedRow, selectedColumn));
    
    158
    +                    selectCell(ui, selectedColumn, selectedRow);
    
    159
    +                }
    
    160
    +            }
    
    161
    +        });
    
    162
    +    }
    
    123 163
     
    
    164
    +    private void selectCell(GearUseFeaturesSeineUI ui, int selectedColumn, int selectedRow) {
    
    165
    +        SwingUtilities.invokeLater(() -> {
    
    166
    +            cellEditorAdjusting = true;
    
    167
    +            try {
    
    168
    +                JTables.doSelectCell(ui.getMeasurementsTable(), selectedRow, selectedColumn);
    
    169
    +            } finally {
    
    170
    +                cellEditorAdjusting = false;
    
    171
    +            }
    
    172
    +        });
    
    124 173
         }
    
    125 174
     
    
    126 175
         @Override
    
    ... ... @@ -140,6 +189,7 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei
    140 189
             SwingValidatorMessageTableModel errorTableModel = getUi().getErrorTableModel();
    
    141 190
             computeTabValidState(errorTableModel);
    
    142 191
     
    
    192
    +        SwingUtilities.invokeLater(() -> ui.getMainTabbedPane().setSelectedIndex(0));
    
    143 193
         }
    
    144 194
     
    
    145 195
         @Override