001// Licensed under the Apache License, Version 2.0 (the "License");
002// you may not use this file except in compliance with the License.
003// You may obtain a copy of the License at
004//
005// http://www.apache.org/licenses/LICENSE-2.0
006//
007// Unless required by applicable law or agreed to in writing, software
008// distributed under the License is distributed on an "AS IS" BASIS,
009// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
010// See the License for the specific language governing permissions and
011// limitations under the License.
012
013package org.apache.tapestry5;
014
015import org.apache.tapestry5.http.Link;
016import org.apache.tapestry5.internal.InternalConstants;
017import org.apache.tapestry5.ioc.util.IdAllocator;
018import org.apache.tapestry5.services.ComponentEventRequestParameters;
019import org.apache.tapestry5.services.ComponentSource;
020import org.apache.tapestry5.services.PageRenderRequestParameters;
021
022/**
023 * Constant values for common event names fired by Tapestry components.
024 */
025public class EventConstants
026{
027    /**
028     * Default client event name, "action", used in most situations.
029     */
030    public static final String ACTION = "action";
031
032    /**
033     * Event triggered when a page is activated (for rendering). The component event handler will be
034     * passed the context
035     * provided by the passivate event.
036     */
037    public static final String ACTIVATE = "activate";
038
039    /**
040     * Event triggered when a link for a page is generated. The event handler for the page may
041     * provide an object, or an
042     * array of objects, as the context for the page. These values will become part of the page's
043     * context, and will be
044     * provided back when the page is activated.
045     */
046    public static final String PASSIVATE = "passivate";
047
048    /**
049     * Invoked before {@link #PREPARE} when rendering out the form.
050     *
051     * @see org.apache.tapestry5.corelib.components.Form
052     */
053    public static final String PREPARE_FOR_RENDER = "prepareForRender";
054
055    /**
056     * Invoked before {@link #PREPARE} when the form is submitted.
057     *
058     * @see org.apache.tapestry5.corelib.components.Form
059     */
060    public static final String PREPARE_FOR_SUBMIT = "prepareForSubmit";
061
062    /**
063     * Invoked to let the containing component(s) prepare for the form rendering or the form
064     * submission.
065     *
066     * @see org.apache.tapestry5.corelib.components.Form
067     */
068    public static final String PREPARE = "prepare";
069
070    /**
071     * Event type for a notification after the form has submitted. This event notification occurs on
072     * any form submit,
073     * without respect to "success" or "failure".
074     *
075     * @see org.apache.tapestry5.corelib.components.Form
076     */
077    public static final String SUBMIT = "submit";
078
079    /**
080     * Event triggered when a client-side form is canceled. This occurs after page activation, and after
081     * the prepare events for the form, but before any stored {@link ComponentAction}s for the form are triggered.
082     *
083     * @see org.apache.tapestry5.corelib.SubmitMode#CANCEL
084     *
085     * @since 5.2.0
086     */
087    public static final String CANCELED = "canceled";
088
089    /**
090     * Event type for a notification after the form has submitted, when there are no errors in the
091     * validation tracker.
092     * This occurs before the {@link #SUBMIT} event.
093     *
094     * @see org.apache.tapestry5.corelib.components.Form
095     */
096    public static final String SUCCESS = "success";
097
098    /**
099     * Event type for a notification after the form has been submitted, when there are errors in the
100     * validation tracker.
101     * This occurs before the {@link #SUBMIT} event.
102     */
103    public static final String FAILURE = "failure";
104
105    /**
106     * Event type triggered by the {@link org.apache.tapestry5.corelib.components.Submit} component
107     * when it is the cause
108     * of the form submission.
109     */
110    public static final String SELECTED = "selected";
111
112    /**
113     * Event triggered by some form-related components to parse a value provided by the client. This
114     * takes the place of a {@link org.apache.tapestry5.Translator}.
115     */
116    public static final String PARSE_CLIENT = "parseClient";
117
118    /**
119     * Event triggered by some form-related components to convert a server-side value to a
120     * client-side string, as an
121     * alternative to a {@link org.apache.tapestry5.Translator}.
122     */
123    public static final String TO_CLIENT = "toClient";
124
125    /**
126     * Event triggered by form-related components to validate user input. In addition, the Form component
127     * fires a validate event just before it fires {@link #SUCCESS} or {@link #FAILURE} as a chance
128     * to perform cross-form validations.
129     */
130    public static final String VALIDATE = "validate";
131
132    /**
133     * Event triggered by {@link org.apache.tapestry5.corelib.components.AjaxFormLoop} to inform the
134     * container about the
135     * row removed on the client side. The event context is the object that was removed.
136     */
137    public static final String REMOVE_ROW = "removeRow";
138
139    /**
140     * Event triggered by {@link org.apache.tapestry5.corelib.components.AjaxFormLoop} to inform the
141     * container that a new row has been requested. The return value from the event handler must be the newly created
142     * object, which must
143     * also be visible in the {@link org.apache.tapestry5.corelib.components.AjaxFormLoop#encoder} parameter.
144     */
145    public static final String ADD_ROW = "addRow";
146
147    /**
148     * Event triggered by the {@link org.apache.tapestry5.corelib.components.Loop} component to
149     * inform its container of
150     * all the values that were supplied from the client during a form submission. The event handler
151     * method should have
152     * a single parameter, of type Object[] or type List, to receive the values.
153     *
154     * @since 5.1.0.0
155     */
156    public static final String SYNCHRONIZE_VALUES = "synchronizeValues";
157
158    /**
159     * Event triggered by {@link org.apache.tapestry5.corelib.components.ProgressiveDisplay} component to inform its
160     * container of what context (if any) is available. The event handler may return a renderable
161     * object or null. If
162     * null is returned, the component renders its own body as the partial markup response.
163     *
164     * @since 5.1.0.1
165     */
166    public static final String PROGRESSIVE_DISPLAY = "progressiveDisplay";
167
168    /**
169     * Event triggered by an {@link org.apache.tapestry5.corelib.mixins.Autocomplete} mixin to
170     * request completions of
171     * the current input. The first value in the context is the input string; additional values
172     * in the context parameter of the {@link org.apache.tapestry5.corelib.mixins.Autocomplete}
173     * component.
174     *
175     * @since 5.1.0.4
176     */
177    public static final String PROVIDE_COMPLETIONS = "provideCompletions";
178
179    /**
180     * Event triggered by {@link org.apache.tapestry5.corelib.components.Select} component to inform
181     * its
182     * container that Select's value has changed.
183     *
184     * @since 5.2.0
185     */
186    public static final String VALUE_CHANGED = "valueChanged";
187
188    /**
189     * Event triggered during page render link generation. The first context parameter is the {@link Link} object, the
190     * second is the {@link PageRenderRequestParameters} from which the Link
191     * was created. The event is triggered on the actively rendering page.
192     *
193     * @since 5.2.0
194     */
195    public static final String DECORATE_PAGE_RENDER_LINK = "decoratePageRenderLink";
196
197    /**
198     * Event triggered during component event link generation. The first context parameter is the {@link Link} object,
199     * the second is the {@link ComponentEventRequestParameters} from which the Link
200     * was created. The event is triggered on the actively rendering page, not necessarily the page
201     * containing the component.
202     *
203     * @since 5.2.0
204     */
205    public static final String DECORATE_COMPONENT_EVENT_LINK = "decorateComponentEventLink";
206
207    /**
208     * Name of a event triggered by the form component on the {@linkplain ComponentSource#getActivePage() active page}
209     * to allow it to pre-allocate the names of any query parameters that might be used by the page for its own purposes
210     * and should not be allocated to components. An {@link IdAllocator} is passed as the event context.
211     *
212     * @since 5.2.0
213     */
214    public static final String PREALLOCATE_FORM_CONTROL_NAMES = "preallocateFormControlNames";
215
216    /**
217     * Event triggered by the {@link org.apache.tapestry5.corelib.components.Tree}
218     * component when a leaf node is selected.
219     *
220     * @since 5.3
221     */
222    public static final String NODE_SELECTED = "nodeSelected";
223
224    /**
225     * Event triggered by the {@link org.apache.tapestry5.corelib.components.Tree}
226     * component when a leaf node is unselected.
227     *
228     * @since 5.3
229     */
230    public static final String NODE_UNSELECTED = "nodeUnselected";
231
232    /**
233     * Event triggered by {@link org.apache.tapestry5.corelib.mixins.ZoneRefresh ZoneRefresh} to refresh the
234     * {@link org.apache.tapestry5.corelib.components.Zone Zone}
235     *
236     * @since 5.3
237     */
238    public static final String REFRESH = "refresh";
239    
240    /**
241     * Event triggered when a page receives an HTTP GET request. 
242     * Handling this event creates a REST endpoint.
243     * @since 5.8.0
244     */
245    public static final String HTTP_GET = InternalConstants.HTTP_METHOD_EVENT_PREFIX + "Get";
246    
247    /**
248     * Event triggered when a page receives an HTTP POST request.
249     * Handling this event creates a REST endpoint.
250     * @since 5.8.0
251     */
252    public static final String HTTP_POST = InternalConstants.HTTP_METHOD_EVENT_PREFIX + "Post";
253    
254    /**
255     * Event triggered when a page receives an HTTP DELETE request.
256     * Handling this event creates a REST endpoint.
257     * @since 5.8.0
258     */
259    public static final String HTTP_DELETE = InternalConstants.HTTP_METHOD_EVENT_PREFIX + "Delete";
260    
261    /**
262     * Event triggered when a page receives an HTTP PUT request.
263     * Handling this event creates a REST endpoint.
264     * @since 5.8.0
265     */
266    public static final String HTTP_PUT = InternalConstants.HTTP_METHOD_EVENT_PREFIX + "Put";
267
268    /**
269     * Event triggered when a page receives an HTTP HEAD request.
270     * Handling this event creates a REST endpoint.
271     * @since 5.8.0
272     */
273    public static final String HTTP_HEAD = InternalConstants.HTTP_METHOD_EVENT_PREFIX + "Head";
274
275    /**
276     * Event triggered when a page receives an HTTP PATCH request.
277     * Handling this event creates a REST endpoint.
278     * @since 5.8.0
279     */
280    public static final String HTTP_PATCH = InternalConstants.HTTP_METHOD_EVENT_PREFIX + "Patch";
281
282}