Use PreferenceStore and IScopeContext together [message #1748120] |
Fri, 18 November 2016 15:31 |
Paolo M. Messages: 8 Registered: November 2016 |
Junior Member |
|
|
I'm trying to implement a PreferenceDialog with a PreferenceStore, which is synchronized with an osgi Preferences, what do you think about the below solution?
There are drawbacks?
Thank you
public class MyPreferenceStore extends PreferenceStore {
private Preferences preferences;
public MyPreferenceStore() {
super();
this.preferences = InstanceScope.INSTANCE.getNode(FrameworkUtil.getBundle(getClass()).getSymbolicName());
setDefault(MY_PREFERENCE_1, "Default_1");
setDefault(MY_PREFERENCE_2, "Default_2");
}
@Override
public void load() throws IOException {
StringBuffer propEntries = new StringBuffer();
propEntries.append(createPropertyEntry(MY_PREFERENCE_1, "Default_1"));
propEntries.append(createPropertyEntry(MY_PREFERENCE_2, "Default_2"));
InputStream stream = new ByteArrayInputStream(propEntries.toString().getBytes(StandardCharsets.UTF_8));
load(stream);
stream.close();
}
private String createPropertyEntry(String key, String defaultValue){
String value = preferences.get(key, defaultValue);
return key + "=" + value + System.getProperty("line.separator");
}
@Override
public void save() throws IOException {
savePreference(MY_PREFERENCE_1);
savePreference(MY_PREFERENCE_2);
// To set dirty = false;
load();
try {
preferences.flush();
} catch (BackingStoreException e) {
e.printStackTrace();
}
}
private void savePreference(String key){
preferences.put(key, getString(key));
}
}
|
|
|
|
Powered by
FUDForum. Page generated in 0.03211 seconds