package org.gatein.api.composition; import org.gatein.common.logging.Logger; import org.gatein.common.logging.LoggerFactory; import java.util.ArrayList; import java.util.List; /** * A basic layout builder. * * @author <a href="mailto:jpkroehling+javadoc@redhat.com">Juraci Paixão Kröhling</a> */ public class LayoutBuilderImpl<T extends LayoutBuilder<T>> implements LayoutBuilder<T> { private static final Logger log = LoggerFactory.getLogger(LayoutBuilderImpl.class); protected List<ContainerItem> children = new ArrayList<ContainerItem>(); /** * @see org.gatein.api.composition.LayoutBuilder#newColumnsBuilder() */ @Override public ContainerBuilder<T> newColumnsBuilder() { if (log.isTraceEnabled()) { log.trace("Creating a new layout container"); } /** * this is the root container, located at the first level */ @SuppressWarnings("unchecked") ColumnContainerBuilderImpl<T> containerBuilder = new ColumnContainerBuilderImpl<T>((T) this); return containerBuilder; } /** * @see org.gatein.api.composition.LayoutBuilder#newRowsBuilder() */ @Override public ContainerBuilder<T> newRowsBuilder() { if (log.isTraceEnabled()) { log.trace("Creating a new layout container"); } /** * this is the root container, located at the first level */ @SuppressWarnings("unchecked") ContainerBuilderImpl<T> containerBuilder = new ContainerBuilderImpl<T>((T) this); return containerBuilder; } /** * @see org.gatein.api.composition.LayoutBuilder#newCustomContainerBuilder(org.gatein.api.composition.Container) */ @Override public ContainerBuilder<T> newCustomContainerBuilder(Container container) { if (log.isTraceEnabled()) { log.trace("Creating a new layout container"); } /** * this is the root container, located at the first level */ @SuppressWarnings("unchecked") CustomContainerBuilderImpl<T> containerBuilder = new CustomContainerBuilderImpl<T>(container, (T) this); return containerBuilder; } /** * @see org.gatein.api.composition.LayoutBuilder#newCustomContainerBuilder(java.lang.String) */ @Override public ContainerBuilder<T> newCustomContainerBuilder(String template) { if (log.isTraceEnabled()) { log.trace("Creating a new custom container builder"); } Container container = new ContainerImpl(template, null); @SuppressWarnings("unchecked") T t = (T) this; return new CustomContainerBuilderImpl<T>(container, t); } /** * @see org.gatein.api.composition.LayoutBuilder#child(org.gatein.api.composition.ContainerItem) */ @Override public T child(ContainerItem containerItem) { this.children.add(containerItem); @SuppressWarnings("unchecked") T t = (T) this; return t; } /** * @see org.gatein.api.composition.LayoutBuilder#children(java.util.List) */ @Override public T children(List<ContainerItem> children) { if (null == children) { this.children.clear(); @SuppressWarnings("unchecked") T t = (T) this; return (T) t; } this.children.addAll(children); @SuppressWarnings("unchecked") T t = (T) this; return t; } }