1 15 package org.apache.tapestry.form; 16 17 import org.apache.hivemind.ApplicationRuntimeException; 18 import org.apache.tapestry.AbstractComponent; 19 import org.apache.tapestry.IMarkupWriter; 20 import org.apache.tapestry.IRequestCycle; 21 import org.apache.tapestry.Tapestry; 22 23 30 31 public abstract class Option extends AbstractComponent 32 { 33 40 41 protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle) 42 { 43 Select select = Select.get(cycle); 44 if (select == null) 45 throw new ApplicationRuntimeException(Tapestry 46 .getMessage("Option.must-be-contained-by-select"), this, null, null); 47 48 51 boolean rewinding = select.isRewinding(); 52 53 String value = select.getNextOptionId(); 54 55 if (rewinding) 56 { 57 if (!select.isDisabled()) 58 setSelected(select.isSelected(value)); 59 60 renderBody(writer, cycle); 61 } 62 else 63 { 64 writer.begin("option"); 65 66 writer.attribute("value", value); 67 68 if (isSelected()) 69 writer.attribute("selected", "selected"); 70 71 renderInformalParameters(writer, cycle); 72 73 String label = getLabel(); 74 75 if (label != null) 76 writer.print(label); 77 78 renderBody(writer, cycle); 79 80 writer.end(); 81 } 82 83 } 84 85 public abstract String getLabel(); 86 87 public abstract boolean isSelected(); 88 89 public abstract void setSelected(boolean selected); 90 } | Popular Tags |