package org.javabuilders.swt.handler.type;
import java.util.Map;
import java.util.Set;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.widgets.Control;
import org.javabuilders.BuildException;
import org.javabuilders.BuildProcess;
import org.javabuilders.BuilderConfig;
import org.javabuilders.Node;
import org.javabuilders.handler.ITypeHandlerFinishProcessor;
/**
* Scrolled Composite handler
* @author Jacek Furmankiewicz
*
*/
public class ScrolledCompositeFinishProcessor implements
ITypeHandlerFinishProcessor {
/* (non-Javadoc)
* @see org.javabuilders.handler.ITypeHandlerFinishProcessor#finish(org.javabuilders.BuilderConfig, org.javabuilders.BuildProcess, org.javabuilders.Node, java.lang.String, java.util.Map)
*/
public void finish(BuilderConfig config, BuildProcess process,
Node current, String key, Map<String, Object> typeDefinition)
throws BuildException {
Set<Node> controls = current.getChildNodes(Control.class);
if (controls.size() > 1) {
throw new BuildException("You can only specify one Control under ScrolledComposite: {0}",typeDefinition);
} else {
for(Node control : controls) {
final ScrolledComposite sc = (ScrolledComposite) current.getMainObject();
final Control cn = (Control) control.getMainObject();
sc.setContent(cn);
sc.setMinHeight(1);
sc.setMinWidth(1);
sc.setExpandVertical(true);
sc.setExpandHorizontal(true);
break;
}
}
}
}