From e6a79c64ec4f608be1fff5e756f5567b9733c69a Mon Sep 17 00:00:00 2001 From: Martin Bluehweis Date: Wed, 3 May 2023 14:50:06 +0200 Subject: [PATCH] fixes #455 Table/TreeTable Memento: support more than one (Tree)Table --- .../eclipse/fx/ui/controls/table/TableViewUtil.java | 13 ++++++++++--- .../fx/ui/controls/tree/TreeTableViewUtil.java | 13 ++++++++++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/modules/ui/org.eclipse.fx.ui.controls/src/main/java/org/eclipse/fx/ui/controls/table/TableViewUtil.java b/modules/ui/org.eclipse.fx.ui.controls/src/main/java/org/eclipse/fx/ui/controls/table/TableViewUtil.java index 40e21fdc6..418dcd3e9 100644 --- a/modules/ui/org.eclipse.fx.ui.controls/src/main/java/org/eclipse/fx/ui/controls/table/TableViewUtil.java +++ b/modules/ui/org.eclipse.fx.ui.controls/src/main/java/org/eclipse/fx/ui/controls/table/TableViewUtil.java @@ -104,7 +104,7 @@ public static TableView restoreState(TableView view, Memento m, Functi Map, String> nodeToIdMap = idToNodeMap.entrySet().stream().collect(Collectors.toMap(Entry::getValue, Entry::getKey)); @SuppressWarnings("unchecked") - final List savedOrder = m.get(COLUMN_ORDER_KEY, List.class, Collections.emptyList()); + final List savedOrder = m.get(getColumnOrderKey(view), List.class, Collections.emptyList()); if( savedOrder == null ) { throw new IllegalStateException(); @@ -142,7 +142,7 @@ public static TableView restoreState(TableView view, Memento m, Functi if (isPropertySet(properties, TableView_Properties.COLUMN_ORDER)) { List currentOrder = view.getColumns().stream().map(columnKeyProvider).collect(Collectors.toList()); @SuppressWarnings("unchecked") - List restoredOrder = m.get(COLUMN_ORDER_KEY, List.class, currentOrder); + List restoredOrder = m.get(getColumnOrderKey(view), List.class, currentOrder); if (!currentOrder.equals(restoredOrder)) { // Unable to restore if the column count matches if (restoredOrder != null && currentOrder.size() == restoredOrder.size()) { @@ -314,7 +314,7 @@ public static Subscription enableAutomaticCaptureing(TableView view, Meme }); } if (c.wasPermutated() || c.wasAdded() && c.wasRemoved()) { - m.put(COLUMN_ORDER_KEY, view.getColumns().stream().map(columnKeyProvider).collect(Collectors.toList()), ObjectSerializer.JAXB_SERIALIZER); + m.put(getColumnOrderKey(view), view.getColumns().stream().map(columnKeyProvider).collect(Collectors.toList()), ObjectSerializer.JAXB_SERIALIZER); } } }); @@ -348,4 +348,11 @@ private static String key(String key, Enum property) { private static boolean isPropertySet(TableView_Properties[] properties, TableView_Properties property) { return properties.length == 0 || Arrays.asList(properties).contains(property); } + + private static String getColumnOrderKey(TableView view) { + if (view.getId() != null) { + return view.getId() + "_" + COLUMN_ORDER_KEY; + } + return COLUMN_ORDER_KEY; + } } diff --git a/modules/ui/org.eclipse.fx.ui.controls/src/main/java/org/eclipse/fx/ui/controls/tree/TreeTableViewUtil.java b/modules/ui/org.eclipse.fx.ui.controls/src/main/java/org/eclipse/fx/ui/controls/tree/TreeTableViewUtil.java index aeb422ec7..1736fb753 100644 --- a/modules/ui/org.eclipse.fx.ui.controls/src/main/java/org/eclipse/fx/ui/controls/tree/TreeTableViewUtil.java +++ b/modules/ui/org.eclipse.fx.ui.controls/src/main/java/org/eclipse/fx/ui/controls/tree/TreeTableViewUtil.java @@ -105,7 +105,7 @@ public static TreeTableView restoreState(TreeTableView view, Memento m Map, String> nodeToIdMap = idToNodeMap.entrySet().stream().collect(Collectors.toMap(Entry::getValue, Entry::getKey)); @SuppressWarnings("unchecked") - final @Nullable List savedOrder = m.get(COLUMN_ORDER_KEY, List.class, Collections.emptyList()); + final @Nullable List savedOrder = m.get(getColumnOrderKey(view), List.class, Collections.emptyList()); if( savedOrder == null ) { throw new IllegalStateException(); @@ -143,7 +143,7 @@ public static TreeTableView restoreState(TreeTableView view, Memento m if (isPropertySet(properties, TreeTableView_Properties.COLUMN_ORDER)) { List currentOrder = view.getColumns().stream().map(columnKeyProvider).collect(Collectors.toList()); @SuppressWarnings("unchecked") - List restoredOrder = m.get(COLUMN_ORDER_KEY, List.class, currentOrder); + List restoredOrder = m.get(getColumnOrderKey(view), List.class, currentOrder); if (!currentOrder.equals(restoredOrder)) { // Unable to restore if the column count matches if (restoredOrder != null && currentOrder.size() == restoredOrder.size()) { @@ -316,7 +316,7 @@ public static Subscription enableAutomaticCaptureing(TreeTableView view, }); } if (c.wasPermutated() || c.wasAdded() && c.wasRemoved()) { - m.put(COLUMN_ORDER_KEY, view.getColumns().stream().map(columnKeyProvider).collect(Collectors.toList()), ObjectSerializer.JAXB_SERIALIZER); + m.put(getColumnOrderKey(view), view.getColumns().stream().map(columnKeyProvider).collect(Collectors.toList()), ObjectSerializer.JAXB_SERIALIZER); } } }); @@ -350,4 +350,11 @@ private static String key(String key, Enum property) { private static boolean isPropertySet(TreeTableView_Properties[] properties, TreeTableView_Properties property) { return properties.length == 0 || Arrays.asList(properties).contains(property); } + + private static String getColumnOrderKey(TableView view) { + if (view.getId() != null) { + return view.getId() + "_" + COLUMN_ORDER_KEY; + } + return COLUMN_ORDER_KEY; + } }