01: // Copyright 2006, 2007 The Apache Software Foundation
02: //
03: // Licensed under the Apache License, Version 2.0 (the "License");
04: // you may not use this file except in compliance with the License.
05: // You may obtain a copy of the License at
06: //
07: // http://www.apache.org/licenses/LICENSE-2.0
08: //
09: // 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.services;
16:
17: import org.apache.tapestry.ClientElement;
18: import org.apache.tapestry.ComponentAction;
19:
20: /**
21: * Services provided by an enclosing Form control component to the various form element components
22: * it encloses. Implement {@link ClientElement}, to share the id of the enclosing form.
23: *
24: * @author Howard M. Lewis Ship
25: */
26: public interface FormSupport extends ClientElement {
27: /**
28: * Allocates a unique (within the form) element name for some component enclosed component,
29: * based on the component's id.
30: *
31: * @param id
32: * the component's id
33: * @return a unique string, usually the component's id, but sometime extended with a unique
34: * number or string
35: */
36: String allocateElementName(String id);
37:
38: /** Stores an action for execution during a later request. */
39: <T> void store(T component, ComponentAction<T> action);
40:
41: <T> void storeAndExecute(T component, ComponentAction<T> action);
42:
43: /**
44: * Defers a command until the end of the form submission. The command will be executed after the
45: * Form's validate notification, but before the Form's submit, success or failure notifications.
46: * During a form render, runnables are executed after the body of the form has rendered.
47: *
48: * @param command
49: */
50: void defer(Runnable command);
51:
52: /**
53: * Sets the encoding type for the Form. This should only be set once, and if
54: *
55: * @param encodingType
56: * MIME type indicating type of encoding for the form
57: * @throws IllegalStateException
58: * if the encoding type has already been set to a value different than the supplied
59: */
60: void setEncodingType(String encodingType);
61: }
|