Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 3fed6cd9 by Tony CHEMIT at 2018-07-01T17:11:05Z Equipement bateau : première frappe inhibée - closes #980 - - - - - 2 changed files: - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/GearUseFeaturesLonglineUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/data/seine/GearUseFeaturesSeineUIHandler.java Changes: ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/GearUseFeaturesLonglineUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/data/longline/GearUseFeaturesLonglineUIHandler.java +++ b/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; import fr.ird.observe.client.ui.content.table.GearUseFeatureMeasurementCellEditor; import fr.ird.observe.client.ui.content.table.GearUseFeatureMeasurementCellRenderer; import fr.ird.observe.client.ui.util.UIHelper; +import fr.ird.observe.client.ui.util.table.EditableTableModelSupport; import fr.ird.observe.dto.data.longline.GearUseFeaturesLonglineDto; import fr.ird.observe.dto.data.longline.GearUseFeaturesMeasurementLonglineDto; import fr.ird.observe.dto.data.longline.TripLonglineDto; @@ -50,6 +51,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.jaxx.runtime.spi.UIHandler; +import org.nuiton.jaxx.runtime.swing.JTables; import org.nuiton.jaxx.validator.swing.SwingValidatorMessage; import org.nuiton.jaxx.validator.swing.SwingValidatorMessageTableModel; import org.nuiton.validator.NuitonValidatorScope; @@ -57,6 +59,7 @@ import org.nuiton.validator.NuitonValidatorScope; import javax.swing.JComponent; import javax.swing.JOptionPane; import javax.swing.JTable; +import javax.swing.SwingUtilities; import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableCellRenderer; import java.awt.GridBagConstraints; @@ -82,10 +85,11 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip /** Logger */ private static final Log log = LogFactory.getLog(GearUseFeaturesLonglineUIHandler.class); - private final Comparator<GearUseFeaturesMeasurementLonglineDto> GEAR_USE_FEATURES_MEASUREMENT_LONGLINE_DTO_COMPARATOR; // Compute valid state of tab from the error table protected final TableModelListener computeTabValidStateListener; + private final Comparator<GearUseFeaturesMeasurementLonglineDto> GEAR_USE_FEATURES_MEASUREMENT_LONGLINE_DTO_COMPARATOR; private final PropertyChangeListener measurementsTableModelModified; + private boolean cellEditorAdjusting; GearUseFeaturesLonglineUIHandler() { super(DataContextType.TripLongline); @@ -117,6 +121,55 @@ public class GearUseFeaturesLonglineUIHandler extends ContentTableUIHandler<Trip setTableModelEditable(model.isEditable()); getTableModel().setGearUseFeaturesLonglineUIHandler(this); + ui.getMeasurementsTable().getColumnModel().getSelectionModel().addListSelectionListener(e -> { + if (e.getValueIsAdjusting()) { + return; + } + if (getModel().isReadingMode()) { + return; + } + if (cellEditorAdjusting) { + return; + } + int selectedColumn = ui.getMeasurementsTable().getSelectedColumn(); + log.debug("new selected column: " + selectedColumn); + int selectedRow = ui.getMeasurementsTable().getSelectedRow(); + if (selectedColumn != -1 && selectedRow != -1) { + log.debug(String.format("Do reselect: %d-%d", selectedRow, selectedColumn)); + if (ui.getMeasurementsTable().getCellEditor() != null) { + return; + } + selectCell(ui, selectedColumn, selectedRow); + } + }); + model.getMeasurementsTableModel().addPropertyChangeListener(EditableTableModelSupport.SELECTED_ROW_INDEX_PROPERTY, e -> { + if (getModel().isReadingMode()) { + return; + } + if (cellEditorAdjusting) { + return; + } + Integer selectedRow = (Integer) e.getNewValue(); + log.debug("new selected row: " + selectedRow); + if (selectedRow != null) { + int selectedColumn = ui.getMeasurementsTable().getSelectedColumn(); + if (selectedColumn != -1) { + log.debug(String.format("Do reselect: %d-%d", selectedRow, selectedColumn)); + selectCell(ui, selectedColumn, selectedRow); + } + } + }); + } + + private void selectCell(GearUseFeaturesLonglineUI ui, int selectedColumn, int selectedRow) { + SwingUtilities.invokeLater(() -> { + cellEditorAdjusting = true; + try { + JTables.doSelectCell(ui.getMeasurementsTable(), selectedRow, selectedColumn); + } finally { + cellEditorAdjusting = false; + } + }); } @Override ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/seine/GearUseFeaturesSeineUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/data/seine/GearUseFeaturesSeineUIHandler.java +++ b/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; import fr.ird.observe.client.ui.content.table.GearUseFeatureMeasurementCellEditor; import fr.ird.observe.client.ui.content.table.GearUseFeatureMeasurementCellRenderer; import fr.ird.observe.client.ui.util.UIHelper; +import fr.ird.observe.client.ui.util.table.EditableTableModelSupport; import fr.ird.observe.dto.data.seine.GearUseFeaturesMeasurementSeineDto; import fr.ird.observe.dto.data.seine.GearUseFeaturesSeineDto; import fr.ird.observe.dto.data.seine.TripSeineDto; @@ -50,6 +51,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.jaxx.runtime.spi.UIHandler; +import org.nuiton.jaxx.runtime.swing.JTables; import org.nuiton.jaxx.validator.swing.SwingValidatorMessage; import org.nuiton.jaxx.validator.swing.SwingValidatorMessageTableModel; import org.nuiton.validator.NuitonValidatorScope; @@ -57,6 +59,7 @@ import org.nuiton.validator.NuitonValidatorScope; import javax.swing.JComponent; import javax.swing.JOptionPane; import javax.swing.JTable; +import javax.swing.SwingUtilities; import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableCellRenderer; import java.awt.GridBagConstraints; @@ -82,13 +85,11 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei /** Logger */ private static final Log log = LogFactory.getLog(GearUseFeaturesSeineUIHandler.class); - - private final Comparator<GearUseFeaturesMeasurementSeineDto> GEAR_USE_FEATURES_MEASUREMENT_SEINE_DTO_COMPARATOR; - // Compute valid state of tab from the error table protected final TableModelListener computeTabValidStateListener; - + private final Comparator<GearUseFeaturesMeasurementSeineDto> GEAR_USE_FEATURES_MEASUREMENT_SEINE_DTO_COMPARATOR; private final PropertyChangeListener measurementsTableModelModified; + private boolean cellEditorAdjusting; GearUseFeaturesSeineUIHandler() { super(DataContextType.TripSeine); @@ -119,8 +120,56 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei setTableModelEditable(model.isEditable()); + ui.getMeasurementsTable().getColumnModel().getSelectionModel().addListSelectionListener(e -> { + if (e.getValueIsAdjusting()) { + return; + } + if (getModel().isReadingMode()) { + return; + } + if (cellEditorAdjusting) { + return; + } + int selectedColumn = ui.getMeasurementsTable().getSelectedColumn(); + log.debug("new selected column: " + selectedColumn); + int selectedRow = ui.getMeasurementsTable().getSelectedRow(); + if (selectedColumn != -1 && selectedRow != -1) { + log.debug(String.format("Do reselect: %d-%d", selectedRow, selectedColumn)); + if (ui.getMeasurementsTable().getCellEditor() != null) { + return; + } + selectCell(ui, selectedColumn, selectedRow); + } + }); getTableModel().setGearUseFeaturesSeineUIHandler(this); + model.getMeasurementsTableModel().addPropertyChangeListener(EditableTableModelSupport.SELECTED_ROW_INDEX_PROPERTY, e -> { + if (getModel().isReadingMode()) { + return; + } + if (cellEditorAdjusting) { + return; + } + Integer selectedRow = (Integer) e.getNewValue(); + log.debug("new selected row: " + selectedRow); + if (selectedRow != null) { + int selectedColumn = ui.getMeasurementsTable().getSelectedColumn(); + if (selectedColumn != -1) { + log.debug(String.format("Do reselect: %d-%d", selectedRow, selectedColumn)); + selectCell(ui, selectedColumn, selectedRow); + } + } + }); + } + private void selectCell(GearUseFeaturesSeineUI ui, int selectedColumn, int selectedRow) { + SwingUtilities.invokeLater(() -> { + cellEditorAdjusting = true; + try { + JTables.doSelectCell(ui.getMeasurementsTable(), selectedRow, selectedColumn); + } finally { + cellEditorAdjusting = false; + } + }); } @Override @@ -140,6 +189,7 @@ public class GearUseFeaturesSeineUIHandler extends ContentTableUIHandler<TripSei SwingValidatorMessageTableModel errorTableModel = getUi().getErrorTableModel(); computeTabValidState(errorTableModel); + SwingUtilities.invokeLater(() -> ui.getMainTabbedPane().setSelectedIndex(0)); } @Override View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/3fed6cd9edf45458780687041a90... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/3fed6cd9edf45458780687041a90... You're receiving this email because of your account on gitlab.com.