    001// Copyright 2012 The Apache Software Foundation
    002//
    003// Licensed under the Apache License, Version 2.0 (the "License");
    004// you may not use this file except in compliance with the License.
    005// You may obtain a copy of the License at
    006//
    007// http://www.apache.org/licenses/LICENSE-2.0
    008//
    009// Unless required by applicable law or agreed to in writing, software
    010// distributed under the License is distributed on an "AS IS" BASIS,
    011// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    012// See the License for the specific language governing permissions and
    013// limitations under the License.
    014
    015package org.apache.tapestry5.runtime;
    016
    017/**
    018 * Defines a way for different aspects of a page to add callbacks for important lifecycle events.
    019 *
    020 * @see org.apache.tapestry5.ComponentResources#getPageLifecycleCallbackHub()
    021 * @since 5.3.4
    022 */
    023public interface PageLifecycleCallbackHub
    024{
    025    /**
    026     * Adds a callback for when the page is first loaded.  Callbacks are invoked in the order they
    027     * are added to the page. They are invoked once and then discarded.
    028     *
    029     * @param callback
    030     *         invoked once, when page is first loaded
    031     * @since 5.3.4
    032     */
    033    void addPageLoadedCallback(Runnable callback);
    034
    035    /**
    036     * Adds a callback for when the page is attached to the request.
    037     *
    038     * @param callback
    039     * @since 5.3.4
    040     */
    041    void addPageAttachedCallback(Runnable callback);
    042
    043    /**
    044     * Adds a callback for when the page is detached from the request.
    045     *
    046     * @param callback
    047     * @since 5.3.4
    048     */
    049    void addPageDetachedCallback(Runnable callback);
    050
    051    /**
    052     * Adds a verify callback, which is allowed while the page is loading. Such callbacks are invoked once,
    053     * after the page has been loaded successfully, and are then discarded. This was added specifically to ensure that components
    054     * only verify that required parameters are bound after all components and mixins of the page have had a chance
    055     * to initialize.
    056     *
    057     * @param callback
    058     *         to be invoked after page loaded
    059     * @since 5.3
    060     */
    061    void addVerifyCallback(Runnable callback);
    062
    063    /**
    064     * A reset occurs when a request for a page arrives that did not originate on the same page. This gives the application a chance to reset the state of the page.
    065     *
    066     * @param callback
    067     *         invoked when a page is activated by link from some other page.
    068     */
    069    void addResetCallback(Runnable callback);
    070}