package net.mograsim.preferences;
-import java.util.Objects;
+import java.util.function.Consumer;
import org.eclipse.swt.graphics.Color;
-public abstract class Preferences
+public interface Preferences
{
- private static Preferences currentPreferences;
+ public boolean getBoolean(String name);
- public static void setPreferences(Preferences preferences)
- {
- currentPreferences = Objects.requireNonNull(preferences);
- }
+ public void addBooleanListener(String name, Consumer<Boolean> listener);
- public static Preferences current()
- {
- if (currentPreferences == null)
- currentPreferences = new DefaultPreferences();
- return currentPreferences;
- }
+ public void removeBooleanListener(String name, Consumer<Boolean> listener);
+
+ public int getInt(String name);
+
+ public void addIntListener(String name, Consumer<Integer> listener);
+
+ public void removeIntListener(String name, Consumer<Integer> listener);
+
+ public double getDouble(String name);
+
+ public void addDoubleListener(String name, Consumer<Double> listener);
+
+ public void removeDoubleListener(String name, Consumer<Double> listener);
+
+ public String getString(String name);
+
+ public void addStringListener(String name, Consumer<String> listener);
- public abstract boolean getBoolean(String name);
+ public void removeStringListener(String name, Consumer<String> listener);
- public abstract int getInt(String name);
+ public ColorDefinition getColorDefinition(String name);
- public abstract double getDouble(String name);
+ public void addColorDefinitionListener(String name, Consumer<ColorDefinition> listener);
- public abstract ColorDefinition getColorDefinition(String name);
+ public void removeColorDefinitionListener(String name, Consumer<ColorDefinition> listener);
- public Color getColor(String name)
+ public default Color getColor(String name)
{
return ColorManager.current().toColor(getColorDefinition(name));
}