Package railo.runtime.tag

Source Code of railo.runtime.tag.Textarea

package railo.runtime.tag;

import java.io.IOException;
import java.util.Iterator;
import java.util.Map.Entry;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTag;

import railo.commons.lang.StringUtil;
import railo.runtime.exp.ApplicationException;
import railo.runtime.exp.ExpressionException;
import railo.runtime.exp.PageException;
import railo.runtime.op.Caster;
import railo.runtime.type.Collection.Key;
import railo.runtime.type.util.KeyConstants;

// TODO tag textarea
// attribute html macht irgendwie keinen sinn, aber auch unter neo nicht



public final class Textarea extends Input  implements BodyTag {
  private static final String BASE_PATH = null; // TODO
  private static final String STYLE_XML = null;
  private static final String TEMPLATE_XML = null;
  private static final String SKIN = "default";
  private static final String TOOLBAR = "default";
 
  private static final int WRAP_OFF = 0;
  private static final int WRAP_HARD = 1;
  private static final int WRAP_SOFT = 2;
  private static final int WRAP_PHYSICAL = 3;
  private static final int WRAP_VIRTUAL = 4;
 
  private BodyContent bodyContent=null;

  private String basepath=BASE_PATH;
  private String fontFormats=null;
  private String fontNames=null;
  private String fontSizes=null;
 
  private boolean html=false;
  private boolean richText=false;
  private String skin=SKIN;
  private String stylesXML=STYLE_XML;
  private String templatesXML=TEMPLATE_XML;
  private String toolbar=TOOLBAR;
  private boolean toolbarOnFocus=false;
  private int wrap=WRAP_OFF;
 
  @Override
  public void release() {
    super.release();
    bodyContent=null;
   

    basepath=BASE_PATH;
    fontFormats=null;
    fontNames=null;
    fontSizes=null;
   
    html=false;
    richText=false;
    skin=SKIN;
    stylesXML=STYLE_XML;
    templatesXML=TEMPLATE_XML;
    toolbar=TOOLBAR;
    toolbarOnFocus=false;
    wrap=WRAP_OFF;
  }

  public void setCols(double cols) throws PageException {
    attributes.set("cols", Caster.toString(cols));
  }
  public void setRows(double rows) throws PageException {
    attributes.set("rows", Caster.toString(rows));
  }
  public void setBasepath(String basepath) {
    this.basepath=basepath;
  }
  public void setFontFormats(String fontFormats) {
    this.fontFormats=fontFormats;
  }
  public void setFontNames(String fontNames) {
    this.fontNames=fontNames;
  }
  public void setFontSizes(String fontSizes) {
    this.fontSizes=fontSizes;
  }
  public void setHtml(boolean html) {
    this.html=html;
  }
  public void setRichtext(boolean richText) {
    this.richText = richText;
  }
  public void setSkin(String skin) {
    this.skin = skin;
  }
  public void setStylesxml(String stylesXML) {
    this.stylesXML = stylesXML;
  }
  public void setTemplatesxml(String templatesXML) {
    this.templatesXML = templatesXML;
  }
  public void setToolbar(String toolbar) {
    this.toolbar = toolbar;
  }
  public void setToolbaronfocus(boolean toolbarOnFocus) {
    this.toolbarOnFocus = toolbarOnFocus;
  }
  public void setWrap(String strWrap) throws ExpressionException {
    strWrap=strWrap.trim().toLowerCase();
    if("hard".equals(strWrap))      wrap=WRAP_HARD;
    else if("soft".equals(strWrap))    wrap=WRAP_SOFT;
    else if("off".equals(strWrap))    wrap=WRAP_OFF;
    else if("physical".equals(strWrap))  wrap=WRAP_PHYSICAL;
    else if("virtual".equals(strWrap))  wrap=WRAP_VIRTUAL;
    else throw new ExpressionException("invalid value ["+strWrap+"] for attribute wrap, valid values are [hard,soft,off,physical,virtual]");   
  }

  @Override
  void draw() throws IOException, PageException {
   
    // value
    String attrValue=null;
    String bodyValue=null;
    String value="";
    if(bodyContent!=null)bodyValue=bodyContent.getString();
    if(attributes.containsKey(KeyConstants._value))attrValue=Caster.toString(attributes.get(KeyConstants._value,null));
   
    // check values
        if(!StringUtil.isEmpty(bodyValue) && !StringUtil.isEmpty(attrValue)) {
          throw new ApplicationException("the value of tag can't be set twice (tag body and attribute value)");
        }
        else if(!StringUtil.isEmpty(bodyValue)){
          value=enc(bodyValue);
        }
        else if(!StringUtil.isEmpty(attrValue)){
          value=enc(attrValue);
        }
        // id
    if(StringUtil.isEmpty(attributes.get(KeyConstants._id,null)))
      attributes.set(KeyConstants._id,StringUtil.toVariableName((String)attributes.get(KeyConstants._name)));
   
    // start output
        pageContext.forceWrite("<textarea");
       
        Iterator<Entry<Key, Object>> it = attributes.entryIterator();
        Entry<Key, Object> e;
        while(it.hasNext()) {
            e = it.next();
            pageContext.forceWrite(" ");
            pageContext.forceWrite(e.getKey().getString());
            pageContext.forceWrite("=\"");
            pageContext.forceWrite(enc(Caster.toString(e.getValue())));
            pageContext.forceWrite("\"");
        }
       
        if(passthrough!=null) {
            pageContext.forceWrite(" ");
            pageContext.forceWrite(passthrough);
        }
        pageContext.forceWrite(">");
        pageContext.forceWrite(value);
        pageContext.forceWrite("</textarea>");
  }

  @Override
  public int doStartTag()  {
    return EVAL_BODY_BUFFERED;
  }
 
  @Override
  public void setBodyContent(BodyContent bodyContent) {
    this.bodyContent=bodyContent;
  }

  @Override
  public void doInitBody() throws JspException {}

  @Override
  public int doAfterBody() throws JspException {
    return SKIP_BODY;
  }
  public void hasBody(boolean hasBody) {
     
  }
}
TOP

Related Classes of railo.runtime.tag.Textarea

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.