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