Coverage Report - org.apache.tapestry.form.Option
 
Classes in this File Line Coverage Branch Coverage Complexity
Option
0%
0/21
0%
0/10
2.5
 
 1  
 // Copyright 2004, 2005 The Apache Software Foundation
 2  
 //
 3  
 // Licensed under the Apache License, Version 2.0 (the "License");
 4  
 // you may not use this file except in compliance with the License.
 5  
 // You may obtain a copy of the License at
 6  
 //
 7  
 //     http://www.apache.org/licenses/LICENSE-2.0
 8  
 //
 9  
 // Unless required by applicable law or agreed to in writing, software
 10  
 // distributed under the License is distributed on an "AS IS" BASIS,
 11  
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12  
 // See the License for the specific language governing permissions and
 13  
 // limitations under the License.
 14  
 
 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  
 /**
 24  
  * A component that renders an HTML <option> form element. Such a component must be wrapped
 25  
  * (possibly indirectly) inside a {@link Select}component. [ <a
 26  
  * href="../../../../../components/form/option.html">Component Reference </a>]
 27  
  * 
 28  
  * @author Howard Lewis Ship
 29  
  */
 30  
 
 31  0
 public abstract class Option extends AbstractComponent
 32  
 {
 33  
     /**
 34  
      * Renders the &lt;option&gt; element, or responds when the form containing the element is
 35  
      * submitted (by checking {@link Form#isRewinding()}.
 36  
      * <p>
 37  
      * If the <code>label</code> property is set, it is inserted inside the &lt;option&gt;
 38  
      * element.
 39  
      */
 40  
 
 41  
     protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
 42  
     {
 43  0
         Select select = Select.get(cycle);
 44  0
         if (select == null)
 45  0
             throw new ApplicationRuntimeException(Tapestry
 46  
                     .getMessage("Option.must-be-contained-by-select"), this, null, null);
 47  
 
 48  
         // It isn't enough to know whether the cycle in general is rewinding, need to know
 49  
         // specifically if the form which contains this component is rewinding.
 50  
 
 51  0
         boolean rewinding = select.isRewinding();
 52  
 
 53  0
         String value = select.getNextOptionId();
 54  
 
 55  0
         if (rewinding)
 56  
         {
 57  0
             if (!select.isDisabled())
 58  0
                 setSelected(select.isSelected(value));
 59  
 
 60  0
             renderBody(writer, cycle);
 61  
         }
 62  
         else
 63  
         {
 64  0
             writer.begin("option");
 65  
 
 66  0
             writer.attribute("value", value);
 67  
 
 68  0
             if (isSelected())
 69  0
                 writer.attribute("selected", "selected");
 70  
 
 71  0
             renderInformalParameters(writer, cycle);
 72  
 
 73  0
             String label = getLabel();
 74  
 
 75  0
             if (label != null)
 76  0
                 writer.print(label);
 77  
 
 78  0
             renderBody(writer, cycle);
 79  
 
 80  0
             writer.end();
 81  
         }
 82  
 
 83  0
     }
 84  
 
 85  
     public abstract String getLabel();
 86  
 
 87  
     public abstract boolean isSelected();
 88  
 
 89  
     public abstract void setSelected(boolean selected);
 90  
 }