diff --git a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/table/HeaderCell.java b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/table/HeaderCell.java index 9637f53b9be..924b9f75f3c 100644 --- a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/table/HeaderCell.java +++ b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/table/HeaderCell.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2023 BSI Business Systems Integration AG + * Copyright (c) 2010, 2026 BSI Business Systems Integration AG * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 @@ -35,9 +35,6 @@ public void setColumnIndexInternal(int index) { if (currentColIndex < 0) { doSetColumnIndex(index); } - else { - LOG.warn(null, new IllegalAccessException("do not use this internal method")); - } } protected void doSetColumnIndex(int index) { diff --git a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/table/columns/AbstractColumn.java b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/table/columns/AbstractColumn.java index 6b7409650e3..c048ec47858 100644 --- a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/table/columns/AbstractColumn.java +++ b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/table/columns/AbstractColumn.java @@ -1502,6 +1502,11 @@ public boolean isEmpty() { } public void setColumnIndexInternal(int index) { + int currentColIndex = getColumnIndex(); + if (currentColIndex >= 0) { + LOG.warn("Unexpected column index {} for column {}", currentColIndex, this, new Exception("Stacktrace")); + return; + } m_headerCell.setColumnIndexInternal(index); } diff --git a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/table/organizer/OrganizeColumnsForm.java b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/table/organizer/OrganizeColumnsForm.java index 16183319df8..f3849e98294 100644 --- a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/table/organizer/OrganizeColumnsForm.java +++ b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/table/organizer/OrganizeColumnsForm.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2025 BSI Business Systems Integration AG + * Copyright (c) 2010, 2026 BSI Business Systems Integration AG * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 @@ -1111,6 +1111,9 @@ public void applyConfig(String configName) { m_organizedTable.getReloadHandler().reload(IReloadReason.ORGANIZE_COLUMNS); } getColumnsTableField().reloadTableData(); + // After reloading, the columnsTableField now contains the expected columns in the correct order + // -> ensure the order of columns is correctly applied to the table + updateColumnVisibilityAndOrder(); } protected void applyConfigImpl(String configName) { diff --git a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/table/organizer/ShowInvisibleColumnsForm.java b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/table/organizer/ShowInvisibleColumnsForm.java index 852893472f1..419ec23dda9 100644 --- a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/table/organizer/ShowInvisibleColumnsForm.java +++ b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/table/organizer/ShowInvisibleColumnsForm.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2024 BSI Business Systems Integration AG + * Copyright (c) 2010, 2026 BSI Business Systems Integration AG * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 @@ -264,10 +264,17 @@ protected void execStore() { newCols.add(col); col.setVisible(true); } - if (m_insertAfterColumn == null || newCols.isEmpty()) { + if (newCols.isEmpty()) { return; } - ColumnSet colSet = newCols.get(0).getTable().getColumnSet(); + + ITable table = newCols.getFirst().getTable(); + if (m_insertAfterColumn == null) { + ClientUIPreferences.getInstance().setAllTableColumnPreferences(table); + return; + } + + ColumnSet colSet = table.getColumnSet(); List> newOrder = new ArrayList<>(); List> visibleColumns = colSet.getVisibleColumns(); int position = 0; @@ -305,7 +312,7 @@ else if (newPosFirst != -1 && posInsertAfter == -1) { i++; } colSet.setVisibleColumns(newOrder); - ClientUIPreferences.getInstance().setAllTableColumnPreferences(newCols.get(0).getTable()); + ClientUIPreferences.getInstance().setAllTableColumnPreferences(table); } @Override