KickJava   Java API By Example, From Geeks To Geeks.

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


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 import java.util.Iterator JavaDoc;
19
20 import org.w3c.dom.Element JavaDoc;
21 import org.apache.cocoon.woody.util.DomHelper;
22 import org.apache.cocoon.woody.Constants;
23 import org.apache.cocoon.woody.datatype.Datatype;
24 import org.apache.cocoon.woody.event.ValueChangedListener;
25
26 /**
27  * Builds {@link MultiValueFieldDefinition}s.
28  *
29  * @version $Id: MultiValueFieldDefinitionBuilder.java 30932 2004-07-29 17:35:38Z vgritsenko $
30  */

31 public class MultiValueFieldDefinitionBuilder extends AbstractDatatypeWidgetDefinitionBuilder {
32     public WidgetDefinition buildWidgetDefinition(Element JavaDoc widgetElement) throws Exception JavaDoc {
33         MultiValueFieldDefinition definition = new MultiValueFieldDefinition();
34         setLocation(widgetElement, definition);
35         setId(widgetElement, definition);
36         setDisplayData(widgetElement, definition);
37         setValidators(widgetElement, definition);
38
39         Element JavaDoc datatypeElement = DomHelper.getChildElement(widgetElement, Constants.WD_NS, "datatype");
40         if (datatypeElement == null)
41             throw new Exception JavaDoc("A nested datatype element is required for the widget specified at " + DomHelper.getLocation(widgetElement));
42
43         Datatype datatype = datatypeManager.createDatatype(datatypeElement, true);
44         definition.setDatatype(datatype);
45
46         boolean hasSelectionList = buildSelectionList(widgetElement, definition);
47         if (!hasSelectionList)
48             throw new Exception JavaDoc("Error: multivaluefields always require a selectionlist at " + DomHelper.getLocation(widgetElement));
49
50         boolean required = DomHelper.getAttributeAsBoolean(widgetElement, "required", false);
51         definition.setRequired(required);
52
53         Iterator JavaDoc iter = buildEventListeners(widgetElement, "on-value-changed", ValueChangedListener.class).iterator();
54         while (iter.hasNext()) {
55             definition.addValueChangedListener((ValueChangedListener)iter.next());
56         }
57         return definition;
58     }
59 }
60
Popular Tags