KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > cocoon > woody > formmodel > RepeaterAction


1 /*
2  * Copyright 1999-2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.apache.cocoon.woody.formmodel;
17
18 /**
19  * An action that acts on a repeater.
20  *
21  * @see RepeaterActionDefinitionBuilder
22  * @author <a HREF="http://www.apache.org/~sylvain/">Sylvain Wallez</a>
23  * @version CVS $Id: RepeaterAction.java 30932 2004-07-29 17:35:38Z vgritsenko $
24  */

25 public class RepeaterAction extends Action {
26     
27     private Repeater repeater;
28     
29
30     public RepeaterAction(ActionDefinition definition) {
31         super(definition);
32     }
33     
34     /**
35      * Get the repeater on which this action acts.
36      */

37     public Repeater getRepeater() {
38         if (this.repeater == null) {
39             String JavaDoc name = ((RepeaterActionDefinition)this.definition).getRepeaterName();
40             Widget widget;
41             if (name != null) {
42                 // Get the corresponding sibling
43
widget = getParent().getWidget(name);
44             } else {
45                 // Get the grand-parent (parent is the repeater row).
46
widget = getParent().getParent();
47             }
48          
49             if (widget == null || !(widget instanceof Repeater)) {
50                 throw new RuntimeException JavaDoc(name != null ?
51                     "Cannot find sibling repeater named '" + name + "'." :
52                     "Parent widget is not a repeater");
53             }
54             
55             this.repeater = (Repeater)widget;
56         }
57         
58         return this.repeater;
59     }
60 }
61
Popular Tags