package edu.ysu.itrace.preferences;
import java.util.Arrays;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.List;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import edu.ysu.itrace.ITrace;
import edu.ysu.itrace.EyeTrackerFactory;
import edu.ysu.itrace.EyeTrackerFactory.TrackerType;
public class PluginPreferences extends PreferencePage
implements IWorkbenchPreferencePage {
public static final String
EYE_TRACKER_TYPE = "eyeTrackerType";
private List trackerList;
@Override
public void init(IWorkbench workbench) {
}
@Override
protected Control createContents(Composite parent) {
Label trackerListLabel = new Label(parent, SWT.NONE);
trackerListLabel.setText("Eye Tracker Interface");
//Get currently selected eye tracker type as index into list.
TrackerType[] trackerKeys = EyeTrackerFactory.getAvailableEyeTrackers()
.keySet().toArray(new TrackerType[0]);
int trackerSelectionIndex = Arrays.asList(trackerKeys).indexOf(
TrackerType.valueOf(getPreferenceStore()
.getString(EYE_TRACKER_TYPE)));
//Create tracker list.
trackerList = new List(parent, SWT.BORDER);
String[] items = EyeTrackerFactory.getAvailableEyeTrackers().values()
.toArray(new String[0]);
trackerList.setItems(items);
trackerList.setSelection(trackerSelectionIndex);
return parent;
}
@Override
protected IPreferenceStore doGetPreferenceStore() {
return ITrace.getDefault().getPreferenceStore();
}
@Override
public boolean performOk() {
int selectionIndex = trackerList.getSelectionIndex();
TrackerType[] trackerTypes = EyeTrackerFactory
.getAvailableEyeTrackers().keySet()
.toArray(new EyeTrackerFactory.TrackerType[0]);
TrackerType trackerType = trackerTypes[selectionIndex];
EyeTrackerFactory.setTrackerType(trackerType);
getPreferenceStore().setValue(EYE_TRACKER_TYPE, trackerType.name());
return true;
}
}