/********************************************************************** * Copyright (c) 2002 IBM Corporation and others. * All rights reserved.   This program and the accompanying materials * are made available under the terms of the Common Public License v0.5 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v05.html *  * Contributors:  * IBM - Initial API and implementation **********************************************************************/package org.eclipse.ant.internal.ui;import org.eclipse.jface.preference.*;import org.eclipse.swt.SWT;import org.eclipse.swt.widgets.Composite;import org.eclipse.ui.IWorkbench;import org.eclipse.ui.IWorkbenchPreferencePage;
public class AntPreferencesPage
	extends FieldEditorPreferencePage
	implements IWorkbenchPreferencePage {

public AntPreferencesPage() {	super(GRID);	IPreferenceStore store= AntUIPlugin.getPlugin().getPreferenceStore();	setPreferenceStore(store);}public void createControl(Composite parent) {	super.createControl(parent);	// should do something here with the help..		/* FIXME	WorkbenchHelp.setHelp(		parent,		new Object[] { IAntHelpContextIds.ANT_PREFERENCE_PAGE });	*/}/** * @see FieldEditorPreferencePage#createFieldEditors */protected void createFieldEditors() {	BooleanFieldEditor autoSave = new BooleanFieldEditor(IAntPreferenceConstants.AUTO_SAVE, Policy.bind("preferences.savePriorToBuilding"), SWT.NONE, getFieldEditorParent());	RadioGroupFieldEditor outputLevel = new RadioGroupFieldEditor(												IAntPreferenceConstants.OUPUT_LEVEL, 												Policy.bind("preferences.preferedOutputLevel"),												1, 												new String[][] {													{Policy.bind("preferences.info"), IAntPreferenceConstants.INFO_LEVEL},													{Policy.bind("preferences.verbose"), IAntPreferenceConstants.VERBOSE_LEVEL},													{Policy.bind("preferences.debug"), IAntPreferenceConstants.DEBUG_LEVEL}												},												getFieldEditorParent(),												true);	addField(autoSave);	addField(outputLevel);}/** * @see IWorkbenchPreferencePage#init */public void init(IWorkbench workbench) {}

}
