package com.ensoftcorp.open.android.essentials.ui;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import com.ensoftcorp.open.android.essentials.Activator;
import com.ensoftcorp.open.android.essentials.permissions.mappings.PermissionMapping;
import com.ensoftcorp.open.android.essentials.preferences.AndroidEssentialsPreferences;
/**
* UI for setting android essentials preferences
*
* @author Ben Holland
*/
public class AndroidEssentialsPreferencesPage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
private static final String API_X_MAPPING_DESCRIPTION = "Enable Android API X Permission Mapping";
private static boolean changeListenerAdded = false;
public AndroidEssentialsPreferencesPage() {
super(GRID);
}
@Override
public void init(IWorkbench workbench) {
IPreferenceStore preferences = Activator.getDefault().getPreferenceStore();
setPreferenceStore(preferences);
setDescription("Configure preferences for the Android Essentials Toolbox plugin.");
// use to update cached values if user edits a preference
if(!changeListenerAdded){
getPreferenceStore().addPropertyChangeListener(new IPropertyChangeListener() {
@Override
public void propertyChange(org.eclipse.jface.util.PropertyChangeEvent event) {
AndroidEssentialsPreferences.loadPreferences();
}
});
changeListenerAdded = true;
}
}
@Override
protected void createFieldEditors() {
for(Integer apiMapping : PermissionMapping.getAvailableMappings()){
String key = AndroidEssentialsPreferences.API_X_MAPPING_ENABLED.replace("X", apiMapping.toString());
String description = API_X_MAPPING_DESCRIPTION.replace("X", apiMapping.toString());
addField(new BooleanFieldEditor(key, "&" + description, getFieldEditorParent()));
}
}
}