/* * Copyright (c) 2003,2008 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.*; import com.foundation.view.builder.*; import com.foundation.view.definition.*; public class StyledTextBuilder extends ComponentBuilder { protected static final String STYLE_MULTI = "multi line"; protected static final String STYLE_SINGLE = "single line"; protected static final String STYLE_READ_ONLY = "read only"; protected static final String STYLE_WRAP = "wrap"; protected static final String STYLE_FULL = "full"; protected static final String PROPERTY_TEXT = "text"; protected static final String PROPERTY_USE_NULL = "use-null"; protected static final String ASSOCIATION_TEXT = "text"; private static final String LINK_TARGET_BOLD_TEXT = "boldText"; private static final String LINK_TARGET_ITALIC_TEXT = "italicText"; private static final String LINK_TARGET_UNDERLINE_TEXT = "underlineText"; private static final String LINK_TARGET_STRIKEOUT_TEXT = "strikeoutText"; private static final String LINK_TARGET_TEXT_FONT_NAME = "textFontName"; private static final String LINK_TARGET_TEXT_FONT_SIZE = "textFontSize"; protected static final IHashMap styleMap = new LiteHashMap(ComponentBuilder.styleMap); protected static final IHashMap linkMap = new LiteHashMap(ComponentBuilder.linkMap); static { styleMap.put(STYLE_MULTI, "STYLE_MULTI"); styleMap.put(STYLE_SINGLE, "STYLE_SINGLE"); styleMap.put(STYLE_READ_ONLY, "STYLE_READ_ONLY"); styleMap.put(STYLE_WRAP, "STYLE_WRAP"); styleMap.put(STYLE_FULL, "STYLE_FULL"); linkMap.put(LINK_TARGET_BOLD_TEXT, "LINK_TARGET_BOLD_TEXT"); linkMap.put(LINK_TARGET_ITALIC_TEXT, "LINK_TARGET_ITALIC_TEXT"); linkMap.put(LINK_TARGET_UNDERLINE_TEXT, "LINK_TARGET_UNDERLINE_TEXT"); linkMap.put(LINK_TARGET_STRIKEOUT_TEXT, "LINK_TARGET_STRIKEOUT_TEXT"); linkMap.put(LINK_TARGET_TEXT_FONT_NAME, "LINK_TARGET_TEXT_FONT_NAME"); linkMap.put(LINK_TARGET_TEXT_FONT_SIZE, "LINK_TARGET_TEXT_FONT_SIZE"); }//static// /** * TextFieldBuilder constructor. */ public StyledTextBuilder() { }//TextFieldBuilder()// /* (non-Javadoc) * @see com.foundation.view.builder.IBuilder#appendInitializationHead(com.foundation.view.builder.IViewSourceBuilder, StringBuffer, ComponentData) */ public void appendInitializationHead(IViewSourceBuilder viewBuilder, StringBuffer buffer, IComponentData data) { String variableName = viewBuilder.getComponentAttributeName(data); buffer.append("\t" + variableName + " = new " + getComponentClassName() + "("); appendComponentConstructorParameters(viewBuilder, buffer, data, "parent"); buffer.append(");\r\n"); appendInitializationBody(viewBuilder, buffer, data, variableName); }//appendInitializationHead()// /* (non-Javadoc) * @see com.foundation.view.builder.IBuilder#appendInitializationBody(com.foundation.view.builder.IViewSourceBuilder, java.lang.StringBuffer, com.foundation.view.definition.ComponentData, java.lang.String) */ public void appendInitializationBody(IViewSourceBuilder viewBuilder, StringBuffer buffer, IComponentData data, String variableName) { //boolean isReadOnly = data.getStyles().containsValue(STYLE_READ_ONLY); String text = (String) data.getPropertyValue(PROPERTY_TEXT); Boolean useNull = (Boolean) data.getPropertyValue(PROPERTY_USE_NULL); if(useNull != null) { buffer.append("\t" + variableName + ".setUseNull(" + useNull + ");\r\n"); }//if// if(text != null) { buffer.append("\t" + variableName + ".setText("); buffer.append('"'); //TODO: Should escape the text. buffer.append(text); buffer.append('"'); buffer.append(");\r\n"); }//if// appendAssociation(viewBuilder, buffer, data, ASSOCIATION_TEXT, variableName, "setTextAssociation", "ASSOCIATION_TEXT", IViewSourceBuilder.ACCESS_TYPE_GET_ONLY); super.appendInitializationBody(viewBuilder, buffer, data, variableName); }//appendInitializationBody()// /* (non-Javadoc) * @see com.foundation.view.builder.IBuilder#appendLinks(com.foundation.view.builder.IViewSourceBuilder, java.lang.StringBuffer, com.foundation.view.definition.ComponentData, java.lang.String) */ public void appendLinks(IViewSourceBuilder viewBuilder, StringBuffer buffer, IComponentData data, String variableName) { IList boldTextLinks = data.getLinks(LINK_TARGET_BOLD_TEXT); IList italicTextLinks = data.getLinks(LINK_TARGET_ITALIC_TEXT); IList strikeoutTextLinks = data.getLinks(LINK_TARGET_STRIKEOUT_TEXT); IList underlineTextLinks = data.getLinks(LINK_TARGET_UNDERLINE_TEXT); IList textFontNameLinks = data.getLinks(LINK_TARGET_TEXT_FONT_NAME); IList textFontSizeLinks = data.getLinks(LINK_TARGET_TEXT_FONT_SIZE); if(boldTextLinks != null) { for(int index = 0; index < boldTextLinks.getSize(); index++) { ILinkPart part = (ILinkPart) boldTextLinks.get(index); buffer.append("\t"); buffer.append(variableName); buffer.append(".addBoldTextLink("); viewBuilder.appendLink(data, buffer, part); buffer.append(");\r\n"); }//for// }//if// if(italicTextLinks != null) { for(int index = 0; index < italicTextLinks.getSize(); index++) { ILinkPart part = (ILinkPart) italicTextLinks.get(index); buffer.append("\t"); buffer.append(variableName); buffer.append(".addItalicTextLink("); viewBuilder.appendLink(data, buffer, part); buffer.append(");\r\n"); }//for// }//if// if(underlineTextLinks != null) { for(int index = 0; index < underlineTextLinks.getSize(); index++) { ILinkPart part = (ILinkPart) underlineTextLinks.get(index); buffer.append("\t"); buffer.append(variableName); buffer.append(".addUnderlineTextLink("); viewBuilder.appendLink(data, buffer, part); buffer.append(");\r\n"); }//for// }//if// if(strikeoutTextLinks != null) { for(int index = 0; index < strikeoutTextLinks.getSize(); index++) { ILinkPart part = (ILinkPart) strikeoutTextLinks.get(index); buffer.append("\t"); buffer.append(variableName); buffer.append(".addStrikeoutTextLink("); viewBuilder.appendLink(data, buffer, part); buffer.append(");\r\n"); }//for// }//if// if(textFontNameLinks != null) { for(int index = 0; index < textFontNameLinks.getSize(); index++) { ILinkPart part = (ILinkPart) textFontNameLinks.get(index); buffer.append("\t"); buffer.append(variableName); buffer.append(".addTextFontNameLink("); viewBuilder.appendLink(data, buffer, part); buffer.append(");\r\n"); }//for// }//if// if(textFontSizeLinks != null) { for(int index = 0; index < textFontSizeLinks.getSize(); index++) { ILinkPart part = (ILinkPart) textFontSizeLinks.get(index); buffer.append("\t"); buffer.append(variableName); buffer.append(".addTextFontSizeLink("); viewBuilder.appendLink(data, buffer, part); buffer.append(");\r\n"); }//for// }//if// super.appendLinks(viewBuilder, buffer, data, variableName); }//appendLinks()// /* (non-Javadoc) * @see com.foundation.view.builder.IBuilder#getComponentClassName() */ public String getComponentClassName() { return "com.foundation.view.swt.StyledText"; }//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()// }//TextFieldBuilder//