package edu.ualberta.med.biobank.preferences;
import java.io.File;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.DirectoryFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.StringFieldEditor;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import edu.ualberta.med.biobank.BiobankPlugin;
import edu.ualberta.med.biobank.utils.FilePromptUtil;
public class LinkAssignPreferencePage extends FieldEditorPreferencePage
implements IWorkbenchPreferencePage {
private DirectoryFieldEditor logPath;
public LinkAssignPreferencePage() {
super(GRID);
setPreferenceStore(BiobankPlugin.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.
*/
@Override
public void createFieldEditors() {
addField(new StringFieldEditor(PreferenceConstants.GENERAL_CONFIRM,
Messages.LinkAssignPreferencePage_confirm_barcode_label,
getFieldEditorParent()));
addField(new StringFieldEditor(PreferenceConstants.GENERAL_CANCEL,
Messages.LinkAssignPreferencePage_cancel_barcode_label,
getFieldEditorParent()));
addField(new BooleanFieldEditor(
PreferenceConstants.LINK_ASSIGN_ACTIVITY_LOG_INTO_FILE,
Messages.LinkAssignPreferencePage_save_logs_label,
getFieldEditorParent()));
logPath = new DirectoryFieldEditor(
PreferenceConstants.LINK_ASSIGN_ACTIVITY_LOG_PATH,
Messages.LinkAssignPreferencePage_logs_path_label,
getFieldEditorParent());
addField(logPath);
addField(new BooleanFieldEditor(
PreferenceConstants.LINK_ASSIGN_ACTIVITY_LOG_ASK_PRINT,
Messages.LinkAssignPreferencePage_ask_print_label,
getFieldEditorParent()));
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
*/
@Override
public void init(IWorkbench workbench) {
//
}
@Override
public boolean performOk() {
File file = new File(logPath.getStringValue());
if (!FilePromptUtil.isWritableDir(file)) {
return false;
}
return super.performOk();
}
}