package com.jopdesign.jopeclipse.internal.ui.preferences;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ProjectScope;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.preferences.IScopeContext;
import org.eclipse.jface.preference.DirectoryFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.FileFieldEditor;
import org.eclipse.ui.IWorkbenchPropertyPage;
import org.osgi.service.prefs.Preferences;
import com.jopdesign.jopeclipse.JOPUIPlugin;
import com.jopdesign.jopeclipse.internal.ui.IJOPUIConstants;
import com.jopdesign.jopeclipse.internal.ui.launchConfigurations.IJOPLaunchConfigurationConstants;
/**
* @author johan
*
*/
public class JOPPropertyPage extends FieldEditorPreferencePage implements
IWorkbenchPropertyPage {
private DirectoryFieldEditor jopDirectoryEditor;
private FileFieldEditor quartusProjectFileEditor;
/** Element that owns the properties */
private IAdaptable element;
/**
*
*/
public JOPPropertyPage() {
super(FieldEditorPreferencePage.GRID);
setPreferenceStore(JOPUIPlugin.getDefault().getPreferenceStore());
}
/* (non-Javadoc)
* @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
*/
@Override
protected void createFieldEditors() {
jopDirectoryEditor = new DirectoryFieldEditor(
IJOPLaunchConfigurationConstants.ATTR_JOP_HOME,
"JOP Directory", getFieldEditorParent());
jopDirectoryEditor.setEmptyStringAllowed(false);
jopDirectoryEditor.setErrorMessage("Not a valid JOP directory");
addField(jopDirectoryEditor);
quartusProjectFileEditor = new FileFieldEditor(
IJOPLaunchConfigurationConstants.ATTR_QUARTUS_PROJECT,
"Quartus project file", getFieldEditorParent());
quartusProjectFileEditor.setEmptyStringAllowed(false);
quartusProjectFileEditor.setFileExtensions(new String[] { "*.qpf" });
quartusProjectFileEditor
.setErrorMessage("Not a valid Quartus project file");
addField(quartusProjectFileEditor);
System.err.printf("Created field editors%n");
}
/* (non-Javadoc)
* @see org.eclipse.jface.preference.FieldEditorPreferencePage#performOk()
*/
@Override
public boolean performOk() {
IScopeContext scopeContext = new ProjectScope(getProject());
Preferences projectPrefs = scopeContext
.getNode(IJOPUIConstants.PLUGIN_ID);
if (isValid()) {
projectPrefs.put(IJOPLaunchConfigurationConstants.ATTR_JOP_HOME,
jopDirectoryEditor.getStringValue());
projectPrefs.put(
IJOPLaunchConfigurationConstants.ATTR_QUARTUS_PROJECT,
quartusProjectFileEditor.getStringValue());
}
return super.performOk();
}
/* (non-Javadoc)
* @see org.eclipse.jface.preference.FieldEditorPreferencePage#performDefaults()
*/
@Override
public void performDefaults() {
super.performDefaults();
IProject project = getProject();
IPath projectRoot = project.getLocation();
IScopeContext scopeContext = new ProjectScope(project);
Preferences projectPrefs = scopeContext
.getNode(IJOPUIConstants.PLUGIN_ID);
jopDirectoryEditor.setStringValue(projectPrefs.get(
IJOPLaunchConfigurationConstants.ATTR_JOP_HOME, projectRoot
.toOSString()));
IPath defaultQuartusProjectFile = projectRoot.append("quartus").append(
"cycmin").append("jop").addFileExtension("qpf");
quartusProjectFileEditor.setStringValue(projectPrefs.get(
IJOPLaunchConfigurationConstants.ATTR_QUARTUS_PROJECT,
defaultQuartusProjectFile.toOSString()));
}
/* (non-Javadoc)
* @see org.eclipse.ui.IWorkbenchPropertyPage#getElement()
*/
@Override
public IAdaptable getElement() {
return element;
}
/* (non-Javadoc)
* @see org.eclipse.ui.IWorkbenchPropertyPage#setElement(org.eclipse.core.runtime.IAdaptable)
*/
@Override
public void setElement(IAdaptable element) {
this.element = element;
}
/**
* @return project
*/
private IProject getProject() {
if (getElement() != null) {
return (IProject) getElement().getAdapter(IProject.class);
}
return null;
}
}