/** * */ package org.javabuilders.swing.handler.type.layout; import java.awt.CardLayout; import java.awt.Component; import java.awt.Container; import java.util.Map; import javax.swing.JComponent; import org.javabuilders.BuildException; import org.javabuilders.BuildProcess; import org.javabuilders.BuilderConfig; import org.javabuilders.Node; import org.javabuilders.handler.ITypeHandlerFinishProcessor; import org.javabuilders.swing.SwingJavaBuilderUtils; /** * CardLayout handler * @author Jacek Furmankiewicz * */ public class CardLayoutTypeHandler implements ITypeHandlerFinishProcessor { private static final CardLayoutTypeHandler singleton = new CardLayoutTypeHandler(); /** * @return Singleton */ public static CardLayoutTypeHandler getInstance() {return singleton;} /** * Constructor */ private CardLayoutTypeHandler() {} /* (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 { Container container = SwingJavaBuilderUtils.getParentContainer(current); if (container != null) { CardLayout layout = (CardLayout) current.getMainObject(); container.setLayout(layout); Node content = current.getParent(); if (content != null) { for(Node child : content.getChildNodes(JComponent.class)) { Component c = (Component) child.getMainObject(); container.add(c,c.getName()); } } } else { throw new BuildException("Unable to process CardLayout since no parent JComponent was found: {0}", typeDefinition); } } }