Skip to content

Commit f9806b3

Browse files
authored
add IPreferences Interface (#10830)
* add IPreferences Interface * ~ move togglePrefBoolean
1 parent 0eec0a1 commit f9806b3

9 files changed

Lines changed: 72 additions & 73 deletions

File tree

forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import forge.localinstance.properties.ForgeNetPreferences;
1717
import forge.localinstance.properties.ForgePreferences;
1818
import forge.localinstance.properties.ForgePreferences.FPref;
19-
import forge.localinstance.properties.PreferencesStore;
19+
import forge.localinstance.properties.IPreferences;
2020
import forge.menus.LayoutMenu;
2121
import forge.model.FModel;
2222
import forge.player.GamePlayerUtil;
@@ -695,15 +695,15 @@ private void initializeCounterDisplayLocationComboBox() {
695695

696696
}
697697

698-
private <E> FComboBox<E> createComboBox(final E[] items, final PreferencesStore.IPref setting) {
698+
private <E> FComboBox<E> createComboBox(final E[] items, final IPreferences.IPref setting) {
699699
final FComboBox<E> comboBox = new FComboBox<>(items);
700700
addComboBoxListener(comboBox, setting);
701701
return comboBox;
702702
}
703703

704704
private <E> FComboBox<E> createLocalizedComboBox(
705705
final E[] localizedItems,
706-
final PreferencesStore.IPref setting,
706+
final IPreferences.IPref setting,
707707
final Map<E, String> mapping) {
708708

709709
//Step 1: Create the combo box
@@ -716,7 +716,7 @@ private <E> FComboBox<E> createLocalizedComboBox(
716716
}
717717

718718

719-
private <E> void addComboBoxListener(final FComboBox<E> comboBox, final PreferencesStore.IPref setting) {
719+
private <E> void addComboBoxListener(final FComboBox<E> comboBox, final IPreferences.IPref setting) {
720720
comboBox.addItemListener(e -> {
721721
final E selectedType = comboBox.getSelectedItem();
722722
if (setting instanceof ForgePreferences.FPref) {
@@ -732,7 +732,7 @@ private <E> void addComboBoxListener(final FComboBox<E> comboBox, final Preferen
732732

733733
private <E> void addLocalizedComboBoxListener(
734734
final FComboBox<E> comboBox,
735-
final PreferencesStore.IPref setting,
735+
final IPreferences.IPref setting,
736736
final Map<E, String> mapping) {
737737

738738
comboBox.addItemListener(e -> {

forge-gui-mobile/src/forge/screens/settings/SettingsPage.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import forge.localinstance.properties.ForgeNetPreferences;
1717
import forge.localinstance.properties.ForgePreferences;
1818
import forge.localinstance.properties.ForgePreferences.FPref;
19-
import forge.localinstance.properties.PreferencesStore;
19+
import forge.localinstance.properties.IPreferences;
2020
import forge.model.FModel;
2121
import forge.screens.FScreen;
2222
import forge.screens.TabPageScreen;
@@ -763,9 +763,9 @@ protected void doLayout(float width, float height) {
763763
private abstract class Setting {
764764
protected String label;
765765
protected String description;
766-
protected PreferencesStore.IPref pref;
766+
protected IPreferences.IPref pref;
767767

768-
public Setting(PreferencesStore.IPref pref0, String label0, String description0) {
768+
public Setting(IPreferences.IPref pref0, String label0, String description0) {
769769
label = label0;
770770
description = description0;
771771
pref = pref0;
@@ -809,7 +809,7 @@ public void drawPrefValue(Graphics g, FSkinFont font, FSkinColor color, float x,
809809
private class CustomSelectSetting extends Setting {
810810
private final List<String> options = new ArrayList<>();
811811

812-
public CustomSelectSetting(PreferencesStore.IPref pref0, String label0, String description0, String[] options0) {
812+
public CustomSelectSetting(IPreferences.IPref pref0, String label0, String description0, String[] options0) {
813813
super(pref0, label0 + ":", description0);
814814

815815
options.addAll(Arrays.asList(options0));
@@ -933,7 +933,7 @@ private class LocalizedSelectSetting extends CustomSelectSetting {
933933
private final Map<String, String> localizedToBackingMap;
934934
private final Map<String, String> backingToLocalizedMap = new HashMap<>();
935935

936-
public LocalizedSelectSetting(PreferencesStore.IPref pref0,
936+
public LocalizedSelectSetting(IPreferences.IPref pref0,
937937
String label0,
938938
String description0,
939939
Map<String, String> localizationMap) {
@@ -983,7 +983,7 @@ private class IntegerSelectSetting extends Setting {
983983
private final int minValue;
984984
private final int maxValue;
985985

986-
public IntegerSelectSetting(PreferencesStore.IPref pref0, String label0, String description0, int minValue, int maxValue) {
986+
public IntegerSelectSetting(IPreferences.IPref pref0, String label0, String description0, int minValue, int maxValue) {
987987
super(pref0, label0 + ":", description0);
988988
this.minValue = minValue;
989989
this.maxValue = maxValue;

forge-gui/src/main/java/forge/gamemodes/match/YieldController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
public class YieldController {
4343

4444
/** Yield FPrefs synced per-PCH; enumerated here so the client snapshot includes every value, not just touched overrides.
45-
* Stored String-typed (see {@link forge.localinstance.properties.PreferencesStore}); consumers parse via {@link #getBoolPref}/{@link #getStringPref} according to the pref's expected type. */
45+
* Stored String-typed (see {@link forge.localinstance.properties.IPreferences}); consumers parse via {@link #getBoolPref}/{@link #getStringPref} according to the pref's expected type. */
4646
private static final EnumSet<FPref> SYNCED_PREFS = EnumSet.of(
4747
FPref.YIELD_INTERRUPT_ON_ATTACKERS,
4848
FPref.YIELD_INTERRUPT_ON_OPPONENT_SPELL,

forge-gui/src/main/java/forge/gamemodes/planarconquest/ConquestPreferences.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@
2020
import java.io.Serializable;
2121

2222
import forge.localinstance.properties.ForgeConstants;
23-
import forge.localinstance.properties.PreferencesStore;
23+
import forge.localinstance.properties.AbstractPreferences;
2424
import forge.model.FModel;
2525

2626
@SuppressWarnings("serial")
27-
public class ConquestPreferences extends PreferencesStore<ConquestPreferences.CQPref> implements Serializable {
27+
public class ConquestPreferences extends AbstractPreferences<ConquestPreferences.CQPref> implements Serializable {
2828
/**
2929
* Preference identifiers, and their default values.
3030
*/
31-
public enum CQPref implements PreferencesStore.IPref {
31+
public enum CQPref implements AbstractPreferences.IPref {
3232
CURRENT_CONQUEST("DEFAULT"),
3333

3434
AETHER_BASE_DUPLICATE_VALUE("100"),
@@ -91,10 +91,6 @@ protected CQPref valueOf(String name) {
9191
}
9292
}
9393

94-
protected String getPrefDefault(CQPref key) {
95-
return key.getDefault();
96-
}
97-
9894
public String validatePreference(CQPref qpref, int val) {
9995
switch (qpref) {
10096
case BOOSTER_COMMONS:

forge-gui/src/main/java/forge/gamemodes/quest/data/QuestPreferences.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,17 @@
2020
import java.io.Serializable;
2121

2222
import forge.localinstance.properties.ForgeConstants;
23-
import forge.localinstance.properties.PreferencesStore;
23+
import forge.localinstance.properties.AbstractPreferences;
2424
import forge.util.Localizer;
2525
import forge.util.TextUtil;
2626

2727
@SuppressWarnings("serial")
28-
public class QuestPreferences extends PreferencesStore<QuestPreferences.QPref> implements Serializable {
28+
public class QuestPreferences extends AbstractPreferences<QuestPreferences.QPref> implements Serializable {
2929

3030
/**
3131
* Preference identifiers, and their default values.
3232
*/
33-
public enum QPref implements PreferencesStore.IPref {
33+
public enum QPref implements AbstractPreferences.IPref {
3434

3535
// if enabled, player must follow world rules in duels (allowed sets only, banned/restricted cards etc.)
3636
WORLD_RULES_CONFORMANCE("0"),
@@ -249,11 +249,6 @@ protected QPref valueOf(final String name) {
249249
}
250250
}
251251

252-
@Override
253-
protected String getPrefDefault(final QPref key) {
254-
return key.getDefault();
255-
}
256-
257252
/**
258253
* Returns a preference value according to a difficulty index.
259254
*/

forge-gui/src/main/java/forge/localinstance/properties/PreferencesStore.java renamed to forge-gui/src/main/java/forge/localinstance/properties/AbstractPreferences.java

Lines changed: 6 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@
3535
* Loads preferred values when instantiated.
3636
* If a requested value is not present, default is returned.
3737
*/
38-
public abstract class PreferencesStore<T extends Enum<T> & PreferencesStore.IPref> {
38+
public abstract class AbstractPreferences<T extends Enum<T> & IPreferences.IPref> implements IPreferences<T> {
3939
private final Map<T, String> preferenceValues;
4040
private final String filename;
4141

42-
public PreferencesStore(final String filename0, final Class<T> clasz) {
42+
public AbstractPreferences(final String filename0, final Class<T> clasz) {
4343
preferenceValues = new EnumMap<>(clasz);
4444
filename = filename0;
4545

@@ -68,8 +68,8 @@ public PreferencesStore(final String filename0, final Class<T> clasz) {
6868

6969
protected abstract T[] getEnumValues();
7070
protected abstract T valueOf(String name);
71-
protected abstract String getPrefDefault(T key);
7271

72+
@Override
7373
public void save() {
7474
BufferedWriter writer = null;
7575
try {
@@ -91,18 +91,17 @@ public void save() {
9191
}
9292
}
9393

94+
@Override
9495
public final void reset() {
9596
this.preferenceValues.clear();
9697
}
9798

99+
@Override
98100
public final void setPref(final T q0, final String s0) {
99101
preferenceValues.put(q0, s0);
100102
}
101103

102-
public final void setPref(final T q0, final boolean val) {
103-
setPref(q0, String.valueOf(val));
104-
}
105-
104+
@Override
106105
public final String getPref(final T fp0) {
107106
String val;
108107

@@ -111,26 +110,6 @@ public final String getPref(final T fp0) {
111110

112111
return val;
113112
}
114-
115-
public final void togglePrefBoolean(final T q0) {
116-
setPref(q0, !getPrefBoolean(q0));
117-
}
118-
119-
public final int getPrefInt(final T fp0) {
120-
try {
121-
return Integer.parseInt(getPref(fp0));
122-
} catch (NumberFormatException e) {
123-
return Integer.parseInt(getPrefDefault(fp0));
124-
}
125-
}
126-
127-
public final boolean getPrefBoolean(final T fp0) {
128-
return Boolean.parseBoolean(getPref(fp0));
129-
}
130-
131-
public final double getPrefDouble(final T fp0) {
132-
return Double.parseDouble(getPref(fp0));
133-
}
134113

135114
public void setGameType(final T q0, final Set<GameType> gameTypes) {
136115
String s0 = "";
@@ -179,8 +158,4 @@ else if (gameType.equals("Archenemy"))
179158
else if (gameType.equals("Archenemy Rumble"))
180159
result.add(GameType.ArchenemyRumble);
181160
}
182-
183-
public interface IPref {
184-
String getDefault(); // Common method for getting the default value
185-
}
186161
}

forge-gui/src/main/java/forge/localinstance/properties/ForgeNetPreferences.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@
1919

2020

2121

22-
public class ForgeNetPreferences extends PreferencesStore<ForgeNetPreferences.FNetPref> {
22+
public class ForgeNetPreferences extends AbstractPreferences<ForgeNetPreferences.FNetPref> {
2323

2424
/**
2525
* Preference identifiers and their default values.
2626
*/
27-
public enum FNetPref implements PreferencesStore.IPref {
27+
public enum FNetPref implements AbstractPreferences.IPref {
2828
NET_PORT("36743"),
2929
UPnP("ASK"),
3030
NET_BANDWIDTH_LOGGING("false"),
@@ -63,10 +63,4 @@ protected FNetPref valueOf(final String name) {
6363
return null;
6464
}
6565
}
66-
67-
@Override
68-
protected String getPrefDefault(final FNetPref key) {
69-
return key.getDefault();
70-
}
71-
7266
}

forge-gui/src/main/java/forge/localinstance/properties/ForgePreferences.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@
2525
import forge.game.GameLogEntryType;
2626
import forge.game.GameLogVerbosity;
2727

28-
public class ForgePreferences extends PreferencesStore<ForgePreferences.FPref> {
28+
public class ForgePreferences extends AbstractPreferences<ForgePreferences.FPref> {
2929

3030
/**
3131
* Preference identifiers and their default values.
3232
*/
33-
public enum FPref implements PreferencesStore.IPref {
33+
public enum FPref implements AbstractPreferences.IPref {
3434
PLAYER_NAME (""),
3535

3636
// Desktop only
@@ -458,11 +458,6 @@ protected FPref valueOf(final String name) {
458458
}
459459
}
460460

461-
@Override
462-
protected String getPrefDefault(final FPref key) {
463-
return key.getDefault();
464-
}
465-
466461
// one for normal mode, one for quest mode
467462
public static boolean DEV_MODE;
468463
public static boolean UPLOAD_DRAFT;
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package forge.localinstance.properties;
2+
3+
public interface IPreferences<T extends IPreferences.IPref> {
4+
5+
void save();
6+
7+
void reset();
8+
9+
void setPref(T q0, String s0);
10+
11+
default void setPref(T q0, boolean val) {
12+
setPref(q0, String.valueOf(val));
13+
}
14+
15+
default void togglePrefBoolean(final T q0) {
16+
setPref(q0, !getPrefBoolean(q0));
17+
}
18+
19+
String getPref(T fp0);
20+
21+
default String getPrefDefault(T key) {
22+
return key.getDefault();
23+
}
24+
25+
default int getPrefInt(T fp0) {
26+
try {
27+
return Integer.parseInt(getPref(fp0));
28+
} catch (NumberFormatException e) {
29+
return Integer.parseInt(getPrefDefault(fp0));
30+
}
31+
}
32+
33+
default boolean getPrefBoolean(final T fp0) {
34+
return Boolean.parseBoolean(getPref(fp0));
35+
}
36+
37+
default double getPrefDouble(final T fp0) {
38+
return Double.parseDouble(getPref(fp0));
39+
}
40+
41+
public interface IPref {
42+
String getDefault(); // Common method for getting the default value
43+
}
44+
}

0 commit comments

Comments
 (0)