FaultTreeModel.java
package org.osate.aadl2.errormodel.FaultTree.util;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ProjectScope;
import org.eclipse.core.runtime.preferences.IScopeContext;
import org.eclipse.jface.preference.IPreferenceStore;
import org.osate.core.OsateCorePlugin;
import org.osgi.service.prefs.BackingStoreException;
import org.osgi.service.prefs.Preferences;
/**
* @since 5.0
*/
public class FaultTreeModel {
public static final String PREFS_QUALIFIER = "org.osate.aadl2.errormodel.faulttree";
public static final String PREF_PRECISION = "org.osate.aadl2.errormodel.faulttree.precision";
public static final String PREF_PRECISION_USE_WORKSPACE = "org.osate.aadl2.errormodel.faulttree.precision_use_workspace";
// Methods
public static final boolean getWorkspacePref(IProject project) {
final IScopeContext context = new ProjectScope(project);
final Preferences prefs = context.getNode(PREFS_QUALIFIER);
return prefs.getBoolean(FaultTreeModel.PREF_PRECISION_USE_WORKSPACE, true);
}
public static final int getPrecision() {
final IPreferenceStore store = OsateCorePlugin.getDefault().getPreferenceStore();
return store.getInt(PREF_PRECISION);
}
public static final int getPrecision(final IProject project) {
final IScopeContext context = new ProjectScope(project);
final Preferences prefs = context.getNode(PREFS_QUALIFIER);
int precision = -1;
if (!prefs.getBoolean(PREF_PRECISION_USE_WORKSPACE, true)) {
precision = prefs.getInt(PREF_PRECISION, -1);
}
// It's possible the above may have failed for some reason, in which case we revert to the workspace preferences
if (precision == -1) {
precision = getPrecision();
}
if (precision < 1) {
precision = 1; // use default setting
}
return precision;
}
public static final void setPrecision(int value, IProject project) {
final IScopeContext context = new ProjectScope(project);
final Preferences prefs = context.getNode(PREFS_QUALIFIER);
if (!prefs.getBoolean(PREF_PRECISION_USE_WORKSPACE, true)) {
prefs.putInt(PREF_PRECISION, value);
try {
prefs.flush();
} catch (BackingStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static final void setPrecision(int value) {
final IPreferenceStore store = OsateCorePlugin.getDefault().getPreferenceStore();
store.setValue(PREF_PRECISION, value);
}
public static final void setWorkspacePref(boolean useWorkspace, IProject project) {
final IScopeContext context = new ProjectScope(project);
final Preferences prefs = context.getNode(PREFS_QUALIFIER);
prefs.putBoolean(FaultTreeModel.PREF_PRECISION_USE_WORKSPACE, useWorkspace);
}
}