package apet.preferences;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.preference.*;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.IWorkbench;
import apet.Activator;
/**
* This class represents a preference page that
* is contributed to the Preferences dialog. By
* subclassing <samp>FieldEditorPreferencePage</samp>, we
* can use the field support built into JFace that allows
* us to create a page that is small and knows how to
* save, restore and apply itself.
* <p>
* This page is used to modify preferences only. They
* are stored in the preference store that belongs to
* the main plug-in class. That way, preferences can
* be accessed directly via the preference store.
*/
public class ApetPreferences
extends FieldEditorPreferencePage
implements IWorkbenchPreferencePage {
IntegerFieldEditor kl;
IntegerFieldEditor ks;
IntegerFieldEditor kstr;
IntegerFieldEditor min;
IntegerFieldEditor max;
IntegerFieldEditor maxPrior;
BooleanFieldEditor aliasing;
BooleanFieldEditor tracing;
RadioGroupFieldEditor pruning;
RadioGroupFieldEditor maxQL;
RadioGroupFieldEditor sched;
RadioGroupFieldEditor verbosity;
RadioGroupFieldEditor numOrConst;
RadioGroupFieldEditor selCrit;
public ApetPreferences() {
super(GRID);
setPreferenceStore(Activator.getDefault().getPreferenceStore());
}
/**
* Creates the field editors. Field editors are abstractions of
* the common GUI blocks needed to manipulate various types
* of preferences. Each field editor knows how to save and
* restore itself.
*/
public boolean performOk() {
boolean success = true;
kl.store();
ks.store();
kstr.store();
pruning.store();
tracing.store();
maxPrior.store();
maxQL.store();
sched.store();
numOrConst.store();
min.store();
max.store();
if (aliasing != null) aliasing.store();
verbosity.store();
selCrit.store();
return success;
}
/*
public void propertyChange(PropertyChangeEvent event) {
super.propertyChange(event);
if(numeric.equals(event.getSource())){
if (((String)event.getNewValue()).equals("num")){
minRange.setEnabled(true, this.getFieldEditorParent());
maxRange.setEnabled(true, this.getFieldEditorParent());
} else{
minRange.setEnabled(false, this.getFieldEditorParent());
maxRange.setEnabled(false, this.getFieldEditorParent());
}
}
}
*/
public void createFieldEditors() {
kl = new IntegerFieldEditor(PreferenceConstants.KL, "Limit on loop iterations:",getFieldEditorParent());
addField(kl);
ks = new IntegerFieldEditor(PreferenceConstants.KS, "Limit on task switchings per object:",getFieldEditorParent());
addField(ks);
kstr = new IntegerFieldEditor(PreferenceConstants.KSTR, "Recursion limit on string builtins:",getFieldEditorParent());
addField(kstr);
numOrConst = new RadioGroupFieldEditor(PreferenceConstants.NUM_OR_CONST,"Concrete test-cases or path-constraints:",
4,new String[][] { { "Concrete","num" }, {"Path-constraints", "constraint" }}, getFieldEditorParent());
addField(numOrConst);
min=new IntegerFieldEditor(PreferenceConstants.DOM_MIN, "Integer domain minimum:",getFieldEditorParent());
max=new IntegerFieldEditor(PreferenceConstants.DOM_MAX, "Integer domain maximum:",getFieldEditorParent());
min.setValidRange(Integer.MIN_VALUE, Integer.MAX_VALUE);
min.setErrorMessage("The domain minimum must be an integer");
addField(min);
max.setValidRange(Integer.MIN_VALUE, Integer.MAX_VALUE);
max.setErrorMessage("The domain maximum must be an integer");
addField(max);
if (Activator.getDefault().getPreferenceStore().getString(PreferenceConstants.NUM_OR_CONST).equals("num")){
min.setEnabled(true, this.getFieldEditorParent());
max.setEnabled(true, this.getFieldEditorParent());
} else {
min.setEnabled(false, this.getFieldEditorParent());
max.setEnabled(false, this.getFieldEditorParent());
}
selCrit = new RadioGroupFieldEditor(PreferenceConstants.SEL_CRIT,"Selection criterion:",
4,new String[][] { { "All paths","all_paths" }, {"All local paths", "alp" }}, getFieldEditorParent());
addField(selCrit);
maxQL = new RadioGroupFieldEditor(PreferenceConstants.MAXQL,"Maximum number of task interleavings (max. queue length):",
4,new String[][] { { "0", "0" }, {"1", "1" }, {"2", "2" }}, getFieldEditorParent());
addField(maxQL);
pruning = new RadioGroupFieldEditor(PreferenceConstants.PRUNING,"Pruning in task interleavings:",
4,new String[][] { { "3", "3" }, {"2", "2" }, {"1", "1" }}, getFieldEditorParent());
addField(pruning);
sched = new RadioGroupFieldEditor(PreferenceConstants.SCHED_POLICY,"Scheduling policy:",
4,new String[][] { { "fifo", "fifo" }, {"lifo", "lifo" }, {"prior", "prior" }}, getFieldEditorParent());
addField(sched);
maxPrior = new IntegerFieldEditor(PreferenceConstants.MAX_PRIOR, "Number of priorites:",getFieldEditorParent());
addField(maxPrior);
aliasing = new BooleanFieldEditor(PreferenceConstants.ALIASING,
"References aliasing", getFieldEditorParent());
addField(aliasing);
tracing = new BooleanFieldEditor(PreferenceConstants.TRACING,
"Compute/display the trace associated to each test case", getFieldEditorParent());
addField(tracing);
verbosity = new RadioGroupFieldEditor(PreferenceConstants.VERBOSITY,"Verbosity:",
4,new String[][] { { "0", "0" }, {"1", "1" }, {"2", "2" }}, getFieldEditorParent());
addField(verbosity);
}
public void init(IWorkbench workbench) {
}
}