98 lines
4.8 KiB
Java
98 lines
4.8 KiB
Java
/*
|
|
* 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// |