diff options
| author | Paul Buetow <paul@buetow.org> | 2025-06-06 08:36:55 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-06-06 08:36:55 +0300 |
| commit | ea4f22311b639561856f37c8ac872af2cd9d55dd (patch) | |
| tree | fd90e44a2974a6d18d177a57b811f0f83811b927 /src/main/java | |
| parent | 1d99762c7965d351510cfb5e08eac25e48d96038 (diff) | |
Modernize UI and fix localization: - Rollback to Swing UI - Update build configuration - Fix localization string handling - Add missing localization strings - Improve protocol event handling
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/events/VSAbstractEvent.java | 7 | ||||
| -rw-r--r-- | src/main/java/events/internal/VSProtocolEvent.java | 32 | ||||
| -rw-r--r-- | src/main/java/prefs/VSDefaultPrefs.java | 1 | ||||
| -rw-r--r-- | src/main/java/serialize/VSSerialize.java | 43 |
4 files changed, 73 insertions, 10 deletions
diff --git a/src/main/java/events/VSAbstractEvent.java b/src/main/java/events/VSAbstractEvent.java index 52c2423..d11ccbd 100644 --- a/src/main/java/events/VSAbstractEvent.java +++ b/src/main/java/events/VSAbstractEvent.java @@ -228,7 +228,12 @@ abstract public class VSAbstractEvent extends VSSerializablePrefs { int id = ((Integer) objectInputStream.readObject()).intValue(); String savedEventShortname = (String) objectInputStream.readObject(); this.eventClassname = (String) objectInputStream.readObject(); - this.eventShortname = createShortname(savedEventShortname); + + // Always use current localization strings + this.eventShortname = VSRegisteredEvents.getShortnameByClassname(eventClassname); + if (this.eventShortname == null) { + this.eventShortname = createShortname(savedEventShortname); + } if (VSSerialize.DEBUG) { System.out.println("eventClassname: " + eventClassname); diff --git a/src/main/java/events/internal/VSProtocolEvent.java b/src/main/java/events/internal/VSProtocolEvent.java index de630e3..caf8b15 100644 --- a/src/main/java/events/internal/VSProtocolEvent.java +++ b/src/main/java/events/internal/VSProtocolEvent.java @@ -111,8 +111,10 @@ public class VSProtocolEvent extends VSAbstractInternalEvent protocol.isServer(isProtocolActivation); StringBuffer buffer = new StringBuffer(); - buffer.append(VSRegisteredEvents.getShortnameByClassname( - protocolClassname)); + buffer.append(VSRegisteredEvents.getShortnameByClassname(protocolClassname)); + if (buffer.length() == 0) { + buffer.append(protocolClassname); + } buffer.append(" "); buffer.append(isClientProtocol @@ -122,7 +124,7 @@ public class VSProtocolEvent extends VSAbstractInternalEvent buffer.append(" "); buffer.append(isProtocolActivation ? prefs.getString("lang.activated") - : prefs.getString("langactivated")); + : prefs.getString("lang.deactivated")); log(buffer.toString()); } @@ -162,14 +164,30 @@ public class VSProtocolEvent extends VSAbstractInternalEvent /** For later backwards compatibility, to add more stuff */ objectInputStream.readObject(); + // Set protocolClassname before calling createShortname protocolClassname = (String) objectInputStream.readObject(); + isClientProtocol = ((Boolean) objectInputStream.readObject()).booleanValue(); + isProtocolActivation = ((Boolean) objectInputStream.readObject()).booleanValue(); - isClientProtocol = ((Boolean) - objectInputStream.readObject()).booleanValue();; - isProtocolActivation = ((Boolean) - objectInputStream.readObject()).booleanValue();; + // Set the event shortname using current localization + this.setShortname(createShortname(null)); /** For later backwards compatibility, to add more stuff */ objectInputStream.readObject(); } + + protected String createShortname(String savedShortname) { + // Always use current localization strings + String protocolShortname = VSRegisteredEvents.getShortnameByClassname(protocolClassname); + if (protocolShortname == null) { + protocolShortname = protocolClassname; + } + String clientServer = isClientProtocol ? + prefs.getString("lang.client") : + prefs.getString("lang.server"); + String activateDeactivate = isProtocolActivation ? + prefs.getString("lang.activated") : + prefs.getString("lang.deactivated"); + return protocolShortname + " " + clientServer + " " + activateDeactivate; + } } diff --git a/src/main/java/prefs/VSDefaultPrefs.java b/src/main/java/prefs/VSDefaultPrefs.java index f980734..bc57098 100644 --- a/src/main/java/prefs/VSDefaultPrefs.java +++ b/src/main/java/prefs/VSDefaultPrefs.java @@ -49,6 +49,7 @@ public class VSDefaultPrefs extends VSSerializablePrefs { initString("lang.about.info", "This program used to be the diploma thesis of Paul C. Buetow. Please contact vs-sim@dev.buetow.org, if you find any errors!"); initString("lang.activate", "activate"); initString("lang.activated", "activated"); + initString("lang.deactivated", "deactivated"); initString("lang.actualize", "Activation"); initString("lang.all", "All"); initString("lang.antialiasing", "Anti-Aliasing"); diff --git a/src/main/java/serialize/VSSerialize.java b/src/main/java/serialize/VSSerialize.java index a6d3580..e8470e3 100644 --- a/src/main/java/serialize/VSSerialize.java +++ b/src/main/java/serialize/VSSerialize.java @@ -208,14 +208,53 @@ public final class VSSerialize { FileInputStream fileInputStream = new FileInputStream(filename); ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream); + // Create new prefs with current localization VSDefaultPrefs prefs = new VSDefaultPrefs(); - prefs.deserialize(this, objectInputStream); - prefs.addWithDefaults(); + prefs.fillWithDefaults(); // This sets up current localization strings + + // Read the serialized prefs but don't use their strings + VSSerializablePrefs serializedPrefs = new VSSerializablePrefs(); + serializedPrefs.deserialize(this, objectInputStream); + + // Copy non-string values from serialized prefs + for (String key : serializedPrefs.getIntegerKeySet()) { + if (!key.startsWith("lang.")) { + prefs.initInteger(key, serializedPrefs.getInteger(key)); + } + } + for (String key : serializedPrefs.getBooleanKeySet()) { + if (!key.startsWith("lang.")) { + prefs.initBoolean(key, serializedPrefs.getBoolean(key)); + } + } + for (String key : serializedPrefs.getFloatKeySet()) { + if (!key.startsWith("lang.")) { + prefs.initFloat(key, serializedPrefs.getFloat(key)); + } + } + for (String key : serializedPrefs.getColorKeySet()) { + if (!key.startsWith("lang.")) { + prefs.initColor(key, serializedPrefs.getColor(key)); + } + } + for (String key : serializedPrefs.getVectorKeySet()) { + if (!key.startsWith("lang.")) { + prefs.initVector(key, serializedPrefs.getVector(key)); + } + } + for (String key : serializedPrefs.getLongKeySet()) { + if (!key.startsWith("lang.")) { + prefs.initLong(key, serializedPrefs.getLong(key)); + } + } this.setObject("prefs", prefs); simulator = new VSSimulator(prefs, simulatorFrame); simulatorFrame.addSimulator(simulator); + + // Store the current prefs in the serialize object for use during deserialization + this.setObject("current_prefs", prefs); simulator.deserialize(this, objectInputStream); } catch (Exception e) { |
