/* * Copyright (c) 2008,2009 Declarative Engineering LLC. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Declarative Engineering LLC * verson 1 which accompanies this distribution, and is available at * http://declarativeengineering.com/legal/DE_Developer_License_v1.txt */ package com.foundation.view.swt.builder; import com.common.util.IHashMap; import com.common.util.LiteHashMap; import com.foundation.controller.ViewController; import com.foundation.view.IAbstractContainer; import com.foundation.view.IView; import com.foundation.view.builder.IViewSourceBuilder; import com.foundation.view.definition.IComponentData; public class DynamicContainerBuilder extends ContainerBuilder { protected static final String ASSOCIATION_CONTROLLERS = "controllers"; protected static final IHashMap styleMap = new LiteHashMap(ContainerBuilder.styleMap); protected static final IHashMap linkMap = new LiteHashMap(ContainerBuilder.linkMap); /** * DynamicContainerBuilder constructor. */ public DynamicContainerBuilder() { }//DynamicContainerBuilder()// /* (non-Javadoc) * @see com.foundation.view.swt.builder.AbstractBuilder#appendInitializationHead(com.foundation.view.builder.IViewSourceBuilder, java.lang.StringBuffer, com.foundation.view.definition.IComponentData) */ public void appendInitializationHead(IViewSourceBuilder viewBuilder, StringBuffer buffer, IComponentData componentData) { String variableName = viewBuilder.getComponentAttributeName(componentData); //Write out the constructor here only if this is not the primary component for the view.// if(!viewBuilder.getPrimaryComponent().equals(componentData)) { buffer.append("\t" + variableName + " = new " + getComponentClassName() + "("); appendComponentConstructorParameters(viewBuilder, buffer, componentData, "parent"); buffer.append(");\r\n"); buffer.append("\t\r\n"); }//if// appendInitializationBody(viewBuilder, buffer, componentData, variableName); }//appendInitializationHead()// /* (non-Javadoc) * @see com.foundation.view.swt.builder.ContainerBuilder#appendInitializationBody(com.foundation.view.builder.IViewSourceBuilder, java.lang.StringBuffer, com.foundation.view.definition.IComponentData, java.lang.String) */ public void appendInitializationBody(IViewSourceBuilder viewBuilder, StringBuffer buffer, IComponentData data, String variableName) { appendAssociation(viewBuilder, buffer, data, ASSOCIATION_CONTROLLERS, variableName, "setControllersAssociation", "ASSOCIATION_CONTROLLERS", IViewSourceBuilder.ACCESS_TYPE_GET_ONLY); super.appendInitializationBody(viewBuilder, buffer, data, variableName); }//appendInitializationBody()// /* (non-Javadoc) * @see com.foundation.view.swt.builder.AbstractBuilder#buildConstructors(com.foundation.view.builder.IViewSourceBuilder, java.lang.StringBuffer, java.lang.String, com.foundation.view.definition.IComponentData) */ public void buildConstructors(IViewSourceBuilder viewBuilder, StringBuffer constructor, String className, IComponentData data) { String componentName = viewBuilder.addComponentNameIdentifier(data.getDocumentElement(), viewBuilder.getComponentName(data)); constructor.append("/**\r\n"); constructor.append(" * "); constructor.append(className); constructor.append(" constructor.\r\n"); constructor.append(" * @param controller The view controller which will be assigned to the value holder(s) that don't depend on another value holder for their value.\r\n"); constructor.append(" * @param parentComponent The non-null parent view component which this frame will be contained in.\r\n"); constructor.append(" */\r\n"); constructor.append("public "); constructor.append(className); constructor.append("("); constructor.append(ViewController.class.getName()); constructor.append(" controller, "); constructor.append(IView.class.getName()); constructor.append(" parentComponent) {\r\n"); constructor.append("\tsuper(("); constructor.append(IAbstractContainer.class.getName()); constructor.append(") parentComponent, "); appendComponentConstructorParameters(viewBuilder, constructor, data, null, componentName); constructor.append(");\r\n\r\n"); constructor.append("\tsetController(controller);\r\n"); constructor.append("}//" + className + "()//\r\n"); }//buildConstructors()// /* (non-Javadoc) * @see com.foundation.view.swt.builder.AbstractBuilder#getComponentClassName() */ public String getComponentClassName() { return "com.foundation.view.swt.ContainerDynamic"; }//getComponentClassName()// /* (non-Javadoc) * @see com.foundation.view.swt.builder.AbstractBuilder#getStyleMap() */ public IHashMap getStyleMap() { return styleMap; }//getStyleMap()// /* (non-Javadoc) * @see com.foundation.view.swt.builder.AbstractBuilder#getLinkMap() */ public IHashMap getLinkMap() { return linkMap; }//getLinkMap()// }//DynamicContainerBuilder//