package org.jbehave.eclipse.preferences;
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.core.runtime.preferences.DefaultScope;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.swt.graphics.RGB;
import org.jbehave.eclipse.Activator;
import org.jbehave.eclipse.editor.text.style.TextStyle;
import org.jbehave.eclipse.editor.text.style.TextStylePreferences;
import org.jbehave.eclipse.editor.text.style.TextStyleTheme;
import org.jbehave.eclipse.preferences.ClassScannerFilterEntry.ApplyOn;
import org.osgi.service.prefs.BackingStoreException;
import ch.qos.logback.classic.Level;
/**
* Class used to initialize default preference values.
*/
public class PreferenceInitializer extends AbstractPreferenceInitializer {
public void initializeDefaultPreferences() {
initializeDefaultThemesAndColorPreferences();
initializeDefaultProjectPreferences();
initializeDefaultClassScannerPreferences();
}
protected void initializeDefaultThemesAndColorPreferences() {
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
TextStyle darkTheme = TextStyleTheme.createDarkTheme();
TextStylePreferences.storeAsDefault(darkTheme, store);
TextStyle lightTheme = TextStyleTheme.createLightTheme();
TextStylePreferences.storeAsDefault(lightTheme, store);
store.setDefault(PreferenceConstants.THEMES, darkTheme.getPath() + "," + lightTheme.getPath());
store.setDefault(PreferenceConstants.THEME, lightTheme.getPath());
store.setDefault(PreferenceConstants.CURRENT_LINE_ENABLED, true);
PreferenceConverter.setDefault(store, PreferenceConstants.CUSTOM_CURRENT_LINE_COLOR, new RGB(70, 70, 70));
}
protected void initializeDefaultClassScannerPreferences() {
ClassScannerPreferences classScannerPreferences = new ClassScannerPreferences(DefaultScope.INSTANCE);
addEntries(classScannerPreferences, ApplyOn.Package, true,//
"apple.*, com.apple.*, quicktime.*", //
"sun.*, com.sun.*, sunw.*", //
"java.*, javax.*", //
"com.oracle.*", //
"org.eclipse.*", //
"com.google.common*", //
"junit*, org.junit*", //
"org.omg.*, org.xml.*, org.w3c.*", "org.ietf*, org.relaxng.*, org.jcp.*", //
"org.codehaus.plexus*", //
"fj*", //
"org.xmlpull.*", //
"com.thoughtworks.xstream*, com.thoughtworks.paranamer*", //
"org.hamcrest*, org.mockito*, org.objenesis*", //
"org.apache.*", //
"freemarker*");
try {
classScannerPreferences.store();
} catch (BackingStoreException e) {
Activator.logError("Failed to initialize default preferences for ClassScanner", e);
}
LoggerPreferences loggerPreferences = new LoggerPreferences(DefaultScope.INSTANCE);
loggerPreferences.addEntry("org.jbehave", Level.INFO);
loggerPreferences.addEntry("org.jbehave.eclipse.editor.story.completion", Level.DEBUG);
try {
loggerPreferences.store();
} catch (BackingStoreException e) {
Activator.logError("Failed to initialize default preferences for Logger", e);
}
Activator.getDefault().initLogger();
}
protected void initializeDefaultProjectPreferences() {
ProjectPreferences projectPreferences = new ProjectPreferences(DefaultScope.INSTANCE);
projectPreferences.setStoryLanguage("en");
projectPreferences.setAvailableStoryLanguages("de", "en", "fr", "it", "no", "pt", "sv", "tr", "zh_TW");
projectPreferences.setParameterPrefix("$");
try {
projectPreferences.store();
} catch (BackingStoreException e) {
Activator.logError("Failed to initialize default preferences for project", e);
}
}
private void addEntries(ClassScannerPreferences prefs, ApplyOn applyOn, boolean exclude, String... patternsSeq) {
for(String patterns : patternsSeq){
prefs.addEntry(patterns, applyOn, exclude);
}
}
}