package com.sysdeo.eclipse.tomcat;
/*
* (c) Copyright Sysdeo SA 2001, 2002.
* All Rights Reserved.
*/
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.DirectoryFieldEditor;
import org.eclipse.jface.preference.FieldEditor;
import org.eclipse.jface.preference.FileFieldEditor;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.preference.RadioGroupFieldEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import com.sysdeo.eclipse.tomcat.editors.ProjectListEditor;
public class AdvancedPreferencePage extends PreferencePage implements IWorkbenchPreferencePage, TomcatPluginResources {
private BooleanFieldEditor securityEditor;
static final private int FIELD_WIDTH = 50;
private RadioGroupFieldEditor version;
private DirectoryFieldEditor home;
private DirectoryFieldEditor base;
private FileFieldEditor configFile;
private ProjectListEditor projectListEditor;
// private ComboFieldEditor targetPerspectiveEditor;
private ModifyListener fModifyListener;
public AdvancedPreferencePage() {
super();
setPreferenceStore(TomcatLauncherPlugin.getDefault().getPreferenceStore());
}
/*
* @see PreferencePage#createContents(Composite)
*/
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NULL);
composite.setLayout(new GridLayout(1, false));
Group homeGroup = new Group(composite, SWT.NONE);
base = new DirectoryFieldEditor(TomcatLauncherPlugin.TOMCAT_PREF_BASE_KEY, PREF_PAGE_BASE_LABEL, homeGroup);
initLayoutAndData(homeGroup, 3);
/* Since Eclipse version 3, plugin's target perspectives are the Java application ones.
*/
// Group targetperspectiveGroup = new Group(composite,SWT.NONE);
// String[][] perspectiveNamesAndIds = getPerspectiveNamesAndIds();
// targetPerspectiveEditor = new ComboFieldEditor(
// TomcatLauncherPlugin.TOMCAT_PREF_TARGETPERSPECTIVE,
// PREF_PAGE_TARGETPERSPECTIVE_LABEL,
// perspectiveNamesAndIds,
// targetperspectiveGroup);
// initLayoutAndData(targetperspectiveGroup, 1);
// this.initField(targetPerspectiveEditor);
Group securityGroup = new Group(composite, SWT.NONE);
securityEditor = new BooleanFieldEditor(TomcatLauncherPlugin.TOMCAT_PREF_SECURITYMANAGER,
PREF_PAGE_SECURITYMANAGER_LABEL, securityGroup);
this.initField(securityEditor);
initLayoutAndData(securityGroup, 1);
Group projectListGroup = new Group(composite, SWT.NONE);
String[] excludedProjectsNature = { TomcatLauncherPlugin.NATURE_ID };
projectListEditor = new ProjectListEditor(excludedProjectsNature);
projectListEditor.setLabel(PREF_PAGE_PROJECTINCP_LABEL);
Control projectList = projectListEditor.getControl(projectListGroup);
GridData gd2 = new GridData();
gd2.horizontalAlignment = GridData.FILL;
projectList.setLayoutData(gd2);
initLayoutAndData(projectListGroup, 1);
this.initField(base);
new Label(composite, SWT.NULL); //blank
return composite;
}
/*
* @see IWorkbenchPreferencePage#init(IWorkbench)
*/
public void init(IWorkbench workbench) {
}
public boolean performOk() {
base.store();
// targetPerspectiveEditor.store();
securityEditor.store();
TomcatLauncherPlugin.getDefault().setProjectsInCP(projectListEditor.getCheckedElements());
TomcatLauncherPlugin.getDefault().savePluginPreferences();
return true;
}
private void initField(FieldEditor field) {
field.setPreferenceStore(getPreferenceStore());
field.setPreferencePage(this);
field.load();
}
private void initLayoutAndData(Group aGroup, int spanH, int spanV, int numColumns) {
GridLayout gl = new GridLayout(numColumns, false);
aGroup.setLayout(gl);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = spanH;
gd.verticalSpan = spanV;
aGroup.setLayoutData(gd);
}
private void initLayoutAndData(Group aGroup, int numColumns) {
GridLayout gl = new GridLayout(numColumns, false);
aGroup.setLayout(gl);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 1;
gd.widthHint = 400;
aGroup.setLayoutData(gd);
}
/**
* From : org.eclipse.debug.internal.ui.preferences.DebugPreferencePage
*
* Return a 2-dimensional array of perspective names and ids arranged as follows:
* { {persp1name, persp1id}, {persp2name, persp2id}, ... }
*/
// protected static String[][] getPerspectiveNamesAndIds() {
// IPerspectiveRegistry reg = PlatformUI.getWorkbench().getPerspectiveRegistry();
// IPerspectiveDescriptor[] persps = reg.getPerspectives();
//
// String[][] table = new String[persps.length + 1][2];
// table[0][0] = PREF_PAGE_NONE_LABEL;
// table[0][1] = IDebugUIConstants.PERSPECTIVE_NONE;
// for (int i = 0; i < persps.length; i++) {
// table[i + 1][0] = persps[i].getLabel();
// table[i + 1][1] = persps[i].getId();
// }
//
// return table;
// }
}