From 87cd323a30c1558ce6c6af93d363493fee47926f Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Tue, 17 Mar 2015 09:25:52 +0100 Subject: [PATCH] OO-1480: fix an issue if reset of the columns apply to a table with multi-select enable --- .../olat/core/gui/components/table/Table.java | 16 ++++++++++++++-- .../gui/components/table/TableController.java | 2 +- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/olat/core/gui/components/table/Table.java b/src/main/java/org/olat/core/gui/components/table/Table.java index 976f002d8ac..a3b9271228f 100644 --- a/src/main/java/org/olat/core/gui/components/table/Table.java +++ b/src/main/java/org/olat/core/gui/components/table/Table.java @@ -651,11 +651,23 @@ public class Table extends AbstractComponent { return new ChoiceTableDataModel(isMultiSelect(), allCDs, columnOrder, getTranslator()); } - protected List<Integer> getDefaultVisibleColumns() { + /** + * Only use this for reset as it reorder the columns, remove the multi-select column + * and so on... + * + * @return The list of index (without multi select) and reorder to begin with 0 + */ + protected List<Integer> getDefaultVisibleColumnsToResetColumnsChoice() { List<Integer> indexList = new ArrayList<>(); for(ColumnDescriptor defaultVisibleCD:defaultVisibleCDs) { + if(defaultVisibleCD instanceof MultiSelectColumnDescriptor) continue; + int index = allCDs.indexOf(defaultVisibleCD); - if(index >= 0) { + if(isMultiSelect()) { + if(index > 0) { + indexList.add(index - 1); + } + } else { indexList.add(index); } } diff --git a/src/main/java/org/olat/core/gui/components/table/TableController.java b/src/main/java/org/olat/core/gui/components/table/TableController.java index c580d0f3334..ae2c5d439a8 100644 --- a/src/main/java/org/olat/core/gui/components/table/TableController.java +++ b/src/main/java/org/olat/core/gui/components/table/TableController.java @@ -338,7 +338,7 @@ public class TableController extends BasicController { applyAndcheckChangedColumnsChoice(ureq, colsChoice.getSelectedRows()); } else if (event == Choice.EVNT_FORM_RESETED) { //sideeffect on table and prefs - List<Integer> visibleCols = table.getDefaultVisibleColumns(); + List<Integer> visibleCols = table.getDefaultVisibleColumnsToResetColumnsChoice(); applyAndcheckChangedColumnsChoice(ureq, visibleCols); } else { // cancelled cmc.deactivate(); -- GitLab