blob: 90d35888c84987546dd97aa414710992fa13bf17 [file] [log] [blame]
/*
* Created on Feb 20, 2004
*
*/
package groovy.jface.impl;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.jface.preference.FieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.swt.widgets.Composite;
/**
* @author <a href="mailto:ckl@dacelo.nl">Christiaan ten Klooster </a>
* @version $Revision$
*/
public class PreferencePageFieldEditorImpl extends FieldEditorPreferencePage {
public class FieldEditorCreator {
private Class beanClass;
private String propertyName;
private String title;
public FieldEditorCreator(Class beanClass, String propertyName,
String title) {
this.beanClass = beanClass;
this.propertyName = propertyName;
this.title = title;
}
public FieldEditor createField(Composite parent) {
FieldEditor fieldEditor = null;
try {
Class[] types = { String.class, String.class, Composite.class};
Constructor constructor = beanClass.getConstructor(types);
if (constructor != null) {
Object[] arguments = { propertyName, title, parent};
fieldEditor = (FieldEditor) constructor
.newInstance(arguments);
}
} catch (Exception e) {
}
return fieldEditor;
}
}
private List creatorFieldsfields = new ArrayList();
public PreferencePageFieldEditorImpl(String title) {
super(title, FieldEditorPreferencePage.GRID);
}
public void addFieldCreator(Class beanClass, String propertyName,
String title) {
creatorFieldsfields.add(new FieldEditorCreator(beanClass, propertyName,
title));
}
protected void createFieldEditors() {
Iterator i = creatorFieldsfields.iterator();
while (i.hasNext()) {
FieldEditorCreator creator = (FieldEditorCreator) i.next();
FieldEditor fieldEditor = creator
.createField(getFieldEditorParent());
addField(fieldEditor);
}
}
}