From 388d4c723d1995dc0ca0a7c6c64767b9c3dd710e Mon Sep 17 00:00:00 2001 From: Joseph Larochelle Date: Thu, 14 Nov 2024 03:44:02 -0800 Subject: [PATCH 1/3] Added a column when modifying the propertysheet trait so those values can be changed directly in that window. Changed the behaviour so the state was saved when exiting that window instead of being reset --- .../java/VASSAL/counters/PropertySheet.java | 24 ++++++++++++++----- .../resources/VASSAL/i18n/Editor.properties | 1 + 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/vassal-app/src/main/java/VASSAL/counters/PropertySheet.java b/vassal-app/src/main/java/VASSAL/counters/PropertySheet.java index 85a897ef7e..99dad0820f 100644 --- a/vassal-app/src/main/java/VASSAL/counters/PropertySheet.java +++ b/vassal-app/src/main/java/VASSAL/counters/PropertySheet.java @@ -927,11 +927,13 @@ private static class Ed implements PieceEditor { private final JButton colorCtrl; private final JTable propertyTable; private final JComboBox commitCtrl; + private final String previousState; - static final String[] COLUMN_NAMES = {Resources.getString("Editor.PropertySheet.name"), Resources.getString("Editor.PropertySheet.type")}; + static final String[] COLUMN_NAMES = {Resources.getString("Editor.PropertySheet.name"), Resources.getString("Editor.PropertySheet.type"), Resources.getString("Editor.PropertySheet.state")}; static final String[] DEFAULT_ROW = {Resources.getString("Editor.PropertySheet.new_property"), Resources.getString("Editor.PropertySheet.text")}; public Ed(PropertySheet propertySheet) { + previousState = propertySheet.state; m_panel = new PropertyPanel(); descCtrl = m_panel.addStringCtrl(Resources.getString("Editor.description_label"), propertySheet.description, "Editor.description_hint"); menuNameCtrl = m_panel.addStringCtrl(Resources.getString("Editor.menu_command"), propertySheet.menuName, "Editor.menu_command_hint"); @@ -952,18 +954,21 @@ protected void AddCreateRow(DefaultTableModel data) { protected String[][] getTableData(String definition) { final SequenceEncoder.Decoder decoder = new SequenceEncoder.Decoder(definition, DEF_DELIMITOR); + final SequenceEncoder.Decoder stateDecoder = new SequenceEncoder.Decoder(previousState, STATE_DELIMITOR); int numRows = !definition.equals("") && decoder.hasMoreTokens() ? 1 : 0; for (int iDef = -1; (iDef = definition.indexOf(DEF_DELIMITOR, iDef + 1)) >= 0;) { ++numRows; } - final String[][] rows = new String[numRows][2]; + final String[][] rows = new String[numRows][3]; for (int iRow = 0; decoder.hasMoreTokens() && iRow < numRows; ++iRow) { final String token = decoder.nextToken(); + final String stateToken= stateDecoder.nextToken(); rows[iRow][0] = token.substring(1); rows[iRow][1] = TYPE_VALUES[token.charAt(0) - '0']; + rows[iRow][2] = stateToken; } return rows; @@ -1030,13 +1035,20 @@ public String getType() { return ID + typeEncoder.getValue(); } - /** returns a default value-string for the given definition */ + /** Returns the current state */ @Override public String getState() { final StringBuilder buf = new StringBuilder(); - buf.append( - String.valueOf(STATE_DELIMITOR).repeat(Math.max(0, propertyTable.getRowCount()))); - + for (int i = 0; i < propertyTable.getRowCount(); i++) { + if (i > 0) { + buf.append(STATE_DELIMITOR); + } + String value = (String) propertyTable.getValueAt(i, 2); + if (value == null || value.isEmpty()) { + continue; + } + buf.append(value); + } return buf.toString(); } } diff --git a/vassal-app/src/main/resources/VASSAL/i18n/Editor.properties b/vassal-app/src/main/resources/VASSAL/i18n/Editor.properties index cb1b17dd2d..524e51f271 100644 --- a/vassal-app/src/main/resources/VASSAL/i18n/Editor.properties +++ b/vassal-app/src/main/resources/VASSAL/i18n/Editor.properties @@ -1943,6 +1943,7 @@ Editor.PropertySheet.delete_row=Delete Row Editor.PropertySheet.property_sheet_item=Property Sheet item Editor.PropertySheet.name=Name Editor.PropertySheet.type=Type +Editor.PropertySheet.State=State Editor.PropertySheet.new_property=*new property* Editor.PropertySheet.text=Text Editor.PropertySheet.commit_on=Commit changes on From 11a6209700f868e063b806d8acef64be89b99d40 Mon Sep 17 00:00:00 2001 From: Joseph Larochelle Date: Thu, 14 Nov 2024 03:47:38 -0800 Subject: [PATCH 2/3] whitespace --- vassal-app/src/main/java/VASSAL/counters/PropertySheet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vassal-app/src/main/java/VASSAL/counters/PropertySheet.java b/vassal-app/src/main/java/VASSAL/counters/PropertySheet.java index 99dad0820f..447a45fcd1 100644 --- a/vassal-app/src/main/java/VASSAL/counters/PropertySheet.java +++ b/vassal-app/src/main/java/VASSAL/counters/PropertySheet.java @@ -965,7 +965,7 @@ protected String[][] getTableData(String definition) { for (int iRow = 0; decoder.hasMoreTokens() && iRow < numRows; ++iRow) { final String token = decoder.nextToken(); - final String stateToken= stateDecoder.nextToken(); + final String stateToken = stateDecoder.nextToken(); rows[iRow][0] = token.substring(1); rows[iRow][1] = TYPE_VALUES[token.charAt(0) - '0']; rows[iRow][2] = stateToken; From 384f5d386251978bb26d44f80b7e25b30fd0d669 Mon Sep 17 00:00:00 2001 From: Joseph Larochelle Date: Thu, 14 Nov 2024 14:47:52 -0800 Subject: [PATCH 3/3] PMD warning fixed --- vassal-app/src/main/java/VASSAL/counters/PropertySheet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vassal-app/src/main/java/VASSAL/counters/PropertySheet.java b/vassal-app/src/main/java/VASSAL/counters/PropertySheet.java index 447a45fcd1..2253118471 100644 --- a/vassal-app/src/main/java/VASSAL/counters/PropertySheet.java +++ b/vassal-app/src/main/java/VASSAL/counters/PropertySheet.java @@ -1043,7 +1043,7 @@ public String getState() { if (i > 0) { buf.append(STATE_DELIMITOR); } - String value = (String) propertyTable.getValueAt(i, 2); + final String value = (String) propertyTable.getValueAt(i, 2); if (value == null || value.isEmpty()) { continue; }