blob: 288f85510c054bddc6c0e78d9573d396a3a3579c [file] [log] [blame]
/*
* Created on Jun 15, 2004
*
*/
package groovy.swt.factory;
import groovy.swt.InvalidParentException;
import groovy.swt.SwtUtils;
import groovy.swt.UnKnownStyleException;
import java.util.Map;
import org.codehaus.groovy.GroovyException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.widgets.Control;
/**
* @author <a href:ckl at dacelo.nl">Christiaan ten Klooster </a>
* $Id$
*/
public class Fontfactory extends AbstractSwtFactory implements SwtFactory {
/*
* @see groovy.swt.factory.AbstractSwtFactory#newInstance(java.util.Map,
* java.lang.Object)
*/
public Object newInstance(Map properties, Object parent) throws GroovyException {
Object parentWidget = SwtUtils.getParentWidget(parent, properties);
if (!(parentWidget instanceof Control)) {
throw new InvalidParentException("control");
}
Control parentControl = (Control) parentWidget;
String styleProperty = (String) properties.remove("style");
if (styleProperty != null) {
int style;
try {
style = SwtUtils.parseStyle(SWT.class, styleProperty);
} catch (GroovyException e) {
throw new UnKnownStyleException(styleProperty);
}
Font initialFont = parentControl.getFont();
FontData[] fontData = initialFont.getFontData();
for (int i = 0; i < fontData.length; i++) {
fontData[i].setStyle(style);
}
Font newFont = new Font(parentControl.getDisplay(), fontData);
parentControl.setFont(newFont);
}
return parentControl;
}
}