package com.github.jknack.antlr4ide.ui.preferences;
import com.github.jknack.antlr4ide.console.ConsoleImpl;
import org.apache.log4j.Level;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.jface.preference.ComboFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.preferences.ScopedPreferenceStore;
/**
* GeneralPreferencePage
*
* @see <a href="http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Freference%2Fref-72.htm"
* >Eclipse preferences</a>
*
* @see <a href="http://xtextcasts.org/episodes/21-preference-page">Xtext
* preferences</a>
* @see <a
* href="http://stackoverflow.com/questions/7964212/correctly-initializing-and-retrieving-preferences-in-a-xtext-based-eclipse-plugi">Xtext
* preferences on stack-overflow</a>
*/
public class GeneralPreferencePage extends FieldEditorPreferencePage implements
IWorkbenchPreferencePage {
public GeneralPreferencePage() {
super(FieldEditorPreferencePage.GRID);
}
@Override
public void createFieldEditors() {
final Level[] logLevels = new Level[] { Level.OFF, Level.ERROR,
Level.WARN, Level.INFO, Level.DEBUG, Level.TRACE };
final String[][] values = new String[logLevels.length][2];
for (int i = 0; i < logLevels.length; i++) {
// constructor of ComboFieldEditor expects a two-dimensional
// array with label-value pairs.
values[i][0] = logLevels[i].toString();
values[i][1] = logLevels[i].toString();
}
final ComboFieldEditor editor = new ComboFieldEditor(
ConsoleImpl.KEY, "Log level:", values,
this.getFieldEditorParent());
this.addField(editor);
}
@Override
public void init(final IWorkbench workbench) {
final IPreferenceStore store = new ScopedPreferenceStore(
InstanceScope.INSTANCE, ConsoleImpl.QUALIFIER);
store.setDefault(ConsoleImpl.KEY, ConsoleImpl.DEFAULT_LOGLEVEL_AS_STRING);
setPreferenceStore(store);
}
}