1 15 package org.apache.tapestry.wml; 16 17 import org.apache.hivemind.ApplicationRuntimeException; 18 import org.apache.hivemind.HiveMind; 19 import org.apache.tapestry.AbstractComponent; 20 import org.apache.tapestry.IMarkupWriter; 21 import org.apache.tapestry.IRequestCycle; 22 import org.apache.tapestry.Tapestry; 23 24 33 public abstract class Select extends AbstractComponent 34 { 35 39 40 private final static String ATTRIBUTE_NAME = "org.apache.tapestry.active.Select"; 41 42 45 46 protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle) 47 { 48 if (cycle.getAttribute(ATTRIBUTE_NAME) != null) 49 throw new ApplicationRuntimeException(Tapestry.getMessage("Select.may-not-nest"), this, 50 null, null); 51 52 cycle.setAttribute(ATTRIBUTE_NAME, this); 53 54 boolean render = !cycle.isRewinding(); 55 56 if (render) 57 { 58 writer.begin("select"); 59 60 writer.attribute("name", getName()); 61 62 String value = getValue(); 63 if (HiveMind.isNonBlank(value)) 64 writer.attribute("value", value); 65 66 String title = getTitle(); 67 if (HiveMind.isNonBlank(title)) 68 writer.attribute("title", title); 69 70 boolean multiple = isMultiple(); 71 if (multiple) 72 writer.attribute("multiple", multiple); 73 74 renderInformalParameters(writer, cycle); 75 } 76 77 renderBody(writer, cycle); 78 79 if (render) 80 { 81 writer.end(); 82 } 83 84 cycle.removeAttribute(ATTRIBUTE_NAME); 85 } 86 87 public abstract boolean isMultiple(); 88 89 public abstract String getName(); 90 91 public abstract String getValue(); 92 93 public abstract String getTitle(); 94 } | Popular Tags |