001// Copyright 2009 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.services;
016
017import org.apache.tapestry5.Link;
018import org.apache.tapestry5.EventContext;
019
020/**
021 * A service that allows other services to create page render links (which are otherwise created by components, via
022 * {@link org.apache.tapestry5.ComponentResources#createPageLink(String, boolean, Object[])}).
023 *
024 * @since 5.1.0.2
025 */
026public interface PageRenderLinkSource
027{
028    /**
029     * Creates a page render link using the page's normal passivation context (if it has one).
030     *
031     * @param pageName name of page to create link to
032     * @return render link for the page
033     */
034    Link createPageRenderLink(String pageName);
035
036    /**
037     * Creates a page render link using an override of the page's passivation context (possibly an empty one).
038     *
039     * @param pageName name of page to create link to
040     * @param context zero or more values to encode as the passiviation context
041     * @return render link for the page
042     */
043    Link createPageRenderLinkWithContext(String pageName, Object... context);
044
045    /**
046     * Creates a page render link using an override of the page's passivation context.
047     *
048     * @param pageName name of page to create link to
049     * @param eventContext the EventContext to encode as the passiviation context
050     * @return render link for the page
051     * @since 5.2.0.0
052     */
053    public Link createPageRenderLinkWithContext(String pageName, EventContext eventContext);
054
055    /**
056     * Creates a page render link using the page's class to identify the target page, and using the pages normal
057     * passivation context (if it has one).
058     *
059     * @param pageClass
060     * @return render link for the page
061     */
062    Link createPageRenderLink(Class pageClass);
063
064    /**
065     * Creates a page render link using the page's class to identify the target page, and using an override of the
066     * page's passivation context (possibly an empty one).
067     *
068     * @param pageClass
069     * @param context zero or more values to encode as the passiviation context
070     * @return render link for the page
071     */
072    Link createPageRenderLinkWithContext(Class pageClass, Object... context);
073
074    /**
075     * Creates a page render link using the page's class to identify the target page, and using an override of the
076     * page's passivation context
077     *
078     * @param pageClass
079     * @param eventContext the EventContext to encode as the passiviation context
080     * @return render link for the page
081     * @since 5.2.0.0
082     */
083    Link createPageRenderLinkWithContext(Class pageClass, EventContext eventContext);
084
085}