diff --git a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/preferences/IPreferenceValuesProvider.java b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/preferences/IPreferenceValuesProvider.java index 9f8ced4e0..89a2e0814 100644 --- a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/preferences/IPreferenceValuesProvider.java +++ b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/preferences/IPreferenceValuesProvider.java @@ -11,21 +11,31 @@ import java.util.LinkedHashMap; import org.eclipse.emf.ecore.resource.Resource; +import com.google.common.collect.Maps; import com.google.inject.ImplementedBy; +import com.google.inject.Singleton; /** * @author Sven Efftinge - Initial contribution and API + * @author Moritz Eysholdt */ @ImplementedBy(IPreferenceValuesProvider.SimplePreferenceValuesProvider.class) public interface IPreferenceValuesProvider { IPreferenceValues getPreferenceValues(Resource context); - + public static class SimplePreferenceValuesProvider implements IPreferenceValuesProvider { - public IPreferenceValues getPreferenceValues(Resource context) { - return new MapBasedPreferenceValues(new LinkedHashMap()); + return new MapBasedPreferenceValues(new LinkedHashMap()); + } + } + + @Singleton + public class SingletonPreferenceValuesProvider implements IPreferenceValuesProvider { + private MapBasedPreferenceValues preferences = new MapBasedPreferenceValues(Maps. newLinkedHashMap()); + + public MapBasedPreferenceValues getPreferenceValues(Resource context) { + return preferences; } - } } diff --git a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/preferences/MapBasedPreferenceValues.java b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/preferences/MapBasedPreferenceValues.java index 66e87d1b0..0a75a3ba5 100644 --- a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/preferences/MapBasedPreferenceValues.java +++ b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/preferences/MapBasedPreferenceValues.java @@ -25,4 +25,8 @@ public class MapBasedPreferenceValues implements IPreferenceValues { values.put(key, value); } + public void clear() { + values.clear(); + } + } \ No newline at end of file