KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > tapestry > form > Option


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="../../../../../ComponentReference/Option.html">Component Reference </a>]
27  *
28  * @author Howard Lewis Ship
29  */

30
31 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         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         // 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         boolean rewinding = select.isRewinding();
52
53         String JavaDoc 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 JavaDoc 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 JavaDoc getLabel();
86
87     public abstract boolean isSelected();
88
89     public abstract void setSelected(boolean selected);
90 }
Popular Tags