package org.erlide.ui.util;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
public class XtendSWTLib {
public static Shell newShell(final Display disp, final Procedure1<Shell> init) {
final Shell result = new Shell(disp);
init.apply(result);
return result;
}
public static <T> T newControl(final Composite parent, final Class<T> clazz,
final int style, final Procedure1<T> init) throws IllegalArgumentException,
InstantiationException, IllegalAccessException, InvocationTargetException,
SecurityException, NoSuchMethodException {
final Constructor<T> cstr = clazz.getConstructor(Composite.class, int.class);
final T c = cstr.newInstance(parent, style);
init.apply(c);
return c;
}
public static GridData newGridData(final Procedure1<GridData> init) {
final GridData gd = new GridData();
init.apply(gd);
return gd;
}
public static MessageBox newMessageBox(final Shell shell, final int style,
final Procedure1<MessageBox> init) {
final MessageBox box = new MessageBox(shell);
init.apply(box);
return box;
}
}