Tony CHEMIT pushed to branch develop-9.3.x at ultreiaio / ird-observe Commits: db656bff by Tony Chemit at 2024-09-16T09:55:28+02:00 [ui] Add a way to not create an empty row when data is empty... - - - - - a5aa662b by Tony Chemit at 2024-09-16T09:55:34+02:00 [ui] Need to validate inline models when edit them - - - - - 4 changed files: - client/core/src/main/java/fr/ird/observe/client/util/table/EditableTableModel.java - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetCatchUIHandler.java - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SizeMeasureTableModel.java - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/WeightMeasureTableModel.java Changes: ===================================== client/core/src/main/java/fr/ird/observe/client/util/table/EditableTableModel.java ===================================== @@ -214,7 +214,7 @@ public abstract class EditableTableModel<E extends InlineDataDto> extends Abstra this.data.clear(); this.data.addAll(data); addDecorator(this.data); - if (this.data.isEmpty() && editable && canAddRow) { + if (isCanAddEmptyRow()) { // add an empty row (no fire and select: will be done just below) addNewRow(0, false); } @@ -566,4 +566,14 @@ public abstract class EditableTableModel<E extends InlineDataDto> extends Abstra rows.forEach(r -> r.registerDecorator(rowDecorator)); } } + + /** + * FIXME We should stop trying to add a default empty row when data is empty, user must do it, not we... + * + * @return {@code true} if can add a new empty row if data is empty. + */ + protected boolean isCanAddEmptyRow() { + return this.data.isEmpty() && editable && canAddRow; + } + } ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SetCatchUIHandler.java ===================================== @@ -351,6 +351,9 @@ public class SetCatchUIHandler extends GeneratedSetCatchUIHandler { boolean enableInlineModels = newValue && (ui.getModel().getStates().isReadingMode() || ui.getModel().getStates().isEditing()); getTableModel().inlineModels().keySet().forEach(i -> { i.setEditable(enableInlineModels); + if (newValue && (!ui.getModel().getStates().isReadingMode() || ui.getModel().getStates().isEditing())) { + i.validate(); + } if (!enableInlineModels) { int selectedRow = ui.getTableModel().getSelectedRow(); if (selectedRow != -1) { ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/SizeMeasureTableModel.java ===================================== @@ -105,4 +105,8 @@ public class SizeMeasureTableModel extends EditableTableModelWithCache<SizeMeasu return SizeMeasureDto.newDto(new Date()); } + @Override + protected boolean isCanAddEmptyRow() { + return false; + } } ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/WeightMeasureTableModel.java ===================================== @@ -103,4 +103,8 @@ public class WeightMeasureTableModel extends EditableTableModelWithCache<WeightM return !Objects.equals(oldValue, aValue); } + @Override + protected boolean isCanAddEmptyRow() { + return false; + } } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/a065e178c4f815b74a9603fb2... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/a065e178c4f815b74a9603fb2... You're receiving this email because of your account on gitlab.com.