From 26d399c5f12efbd89e5cf29a108479e6dcd296fa Mon Sep 17 00:00:00 2001 From: SiboVG Date: Tue, 19 Sep 2023 18:30:04 +0200 Subject: [PATCH] Only show visible columns in popup menu --- .../dialogs/preset/ComponentPresetTable.java | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTable.java b/swing/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTable.java index bfba35d26..1b50983e1 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTable.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTable.java @@ -7,6 +7,7 @@ import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.Enumeration; import java.util.List; import java.util.Set; @@ -45,6 +46,7 @@ public class ComponentPresetTable extends JTable { private final AbstractTableModel tableModel; private final XTableColumnModel tableColumnModel; private final ComponentPresetTableColumn[] columns; + private final List hiddenColumns; public ComponentPresetTable(final ComponentPreset.Type presetType, List presets, List> visibleColumnKeys) { super(); @@ -54,7 +56,7 @@ public class ComponentPresetTable extends JTable { this.columns = new ComponentPresetTableColumn[ComponentPreset.ORDERED_KEY_LIST.size() + 1]; - tableModel = new AbstractTableModel() { + this.tableModel = new AbstractTableModel() { final ComponentPresetTableColumn[] myColumns = columns; @Override @@ -97,17 +99,16 @@ public class ComponentPresetTable extends JTable { }; - sorter = new TableRowSorter(tableModel); - - tableColumnModel = new XTableColumnModel(); + this.sorter = new TableRowSorter(tableModel); + this.tableColumnModel = new XTableColumnModel(); /* * Set up the Column Table model, and customize the sorting. */ - columns[0] = new ComponentPresetTableColumn.Favorite(0); - tableColumnModel.addColumn(columns[0]); + this.columns[0] = new ComponentPresetTableColumn.Favorite(0); + this.tableColumnModel.addColumn(columns[0]); - List hiddenColumns = new ArrayList(); + this.hiddenColumns = new ArrayList<>(); { int index = 1; for (final TypedKey key : ComponentPreset.ORDERED_KEY_LIST) { @@ -144,7 +145,7 @@ public class ComponentPresetTable extends JTable { }); } - if (visibleColumnKeys.indexOf(key) < 0) { + if (!visibleColumnKeys.contains(key)) { hiddenColumns.add(columns[index]); } index++; @@ -156,10 +157,10 @@ public class ComponentPresetTable extends JTable { this.setModel(tableModel); this.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); this.setRowSorter(sorter); - sorter.toggleSortOrder(2); // Sort by the first column (manufacturer) by default + this.sorter.toggleSortOrder(2); // Sort by the first column (manufacturer) by default - for (TableColumn hiddenColumn : hiddenColumns) { - tableColumnModel.setColumnVisible(hiddenColumn, false); + for (TableColumn hiddenColumn : this.hiddenColumns) { + this.tableColumnModel.setColumnVisible(hiddenColumn, false); } JTableHeader header = this.getTableHeader(); @@ -185,7 +186,7 @@ public class ComponentPresetTable extends JTable { } public XTableColumnModel getXColumnModel() { - return tableColumnModel; + return this.tableColumnModel; } public void setRowFilter(RowFilter filter) { @@ -231,6 +232,9 @@ public class ComponentPresetTable extends JTable { } } for (TableColumn c : columns) { + if (hiddenColumns.contains(c)) { + continue; + } JCheckBoxMenuItem item = new ToggleColumnMenuItem(c); this.add(item); }