001/**
002 * Copyright 2005-2016 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.rice.krad.uif.container;
017
018import java.util.List;
019
020import org.kuali.rice.krad.uif.element.BreadcrumbItem;
021import org.kuali.rice.krad.uif.element.BreadcrumbOptions;
022import org.kuali.rice.krad.uif.element.PageBreadcrumbOptions;
023
024/**
025 * Interface for top-level page components, to be used as items in a multi-page view. 
026 * 
027 * @author Kuali Rice Team (rice.collab@kuali.org)
028 */
029public interface PageGroup extends Group {
030
031    /**
032     * When this is true, the first field of the kualiForm will be focused by
033     * default, unless the parameter focusId is set on the form (by an
034     * actionField), then that field will be focused instead. When this setting
035     * if false, no field will be focused.
036     *
037     * @return the autoFocus
038     */
039    boolean isAutoFocus();
040
041    /**
042     * @param autoFocus the autoFocus to set
043     */
044    void setAutoFocus(boolean autoFocus);
045
046    /**
047     * The breadcrumbOptions specific to this page.
048     *
049     * <p>
050     * Important note: breadcrumbOptions for preViewBreadcrumbs, prePageBreadcrumbs, and
051     * breadcrumbOverrides are inherited from the View if not explicitly set from the PageGroup level's
052     * breadcrumbOptions
053     * (if they contain a value at the view level and the property is null at the page level - default behavior).
054     * Explicitly providing an empty list or setting these properties at the PageGroup level will
055     * override this inheritance.
056     * </p>
057     *
058     * @return the {@link BreadcrumbOptions}
059     */
060    PageBreadcrumbOptions getBreadcrumbOptions();
061
062    /**
063     * Set the breadcrumbOptions
064     *
065     * @param breadcrumbOptions
066     */
067    void setBreadcrumbOptions(PageBreadcrumbOptions breadcrumbOptions);
068
069    /**
070     * Gets the breadcrumb items indicating a homeward path.
071     *
072     * @return breadcrumb items
073     */
074    List<BreadcrumbItem> getHomewardPathBreadcrumbs();
075
076    /**
077     * Gets the breadcrumb items leading to the current view.
078     *
079     * @return breadcrumb items
080     */
081    List<BreadcrumbItem> getPreViewBreadcrumbs();
082
083    /**
084     * Gets the breadcrumb items leading to the current page.
085     *
086     * @return breadcrumb items
087     */
088    List<BreadcrumbItem> getPrePageBreadcrumbs();
089
090    /**
091     * Gets the breadcrumb items overrides.
092     *
093     * @return breadcrumb items
094     */
095    List<BreadcrumbItem> getBreadcrumbOverrides();
096
097    /**
098     * The breadcrumbItem for this page.  This is the item that (generally) appears last in the breadcrumb list.
099     *
100     * <p>
101     * If a label is not explicitly defined, the label is retrieved from the headerText of the PageGroup's header.
102     * If this is also not defined, the breadcrumbItem is NOT rendered.  The url properties do not need to be provided
103     * for this breadcrumbItem because it is automatically determined based on the this PageGroup's pageId, viewId,
104     * and controllerMapping retrieved from the initial controller request.
105     * </p>
106     *
107     * @return the breadcrumbItem for this page
108     */
109    BreadcrumbItem getBreadcrumbItem();
110
111    /**
112     * Set the breadcrumbItem for this PageGroup
113     *
114     * @param breadcrumbItem
115     */
116    void setBreadcrumbItem(BreadcrumbItem breadcrumbItem);
117
118    /**
119     * When true, this page's footer will become sticky (fixed) at the bottom of the window
120     *
121     * @return true if the page footer is sticky, false otherwise
122     */
123    boolean isStickyFooter();
124
125    /**
126     * Set to true to make this page's footer sticky
127     *
128     * @param stickyFooter
129     */
130    void setStickyFooter(boolean stickyFooter);
131
132    /**
133     * Specifies the URL the view's form should post to
134     *
135     * <p>
136     * Any valid form post URL (full or relative) can be specified. If left
137     * empty, the form will be posted to the same URL of the preceding request
138     * URL.
139     * </p>
140     *
141     * @return post URL
142     */
143    String getFormPostUrl();
144
145    /**
146     * Setter for the form post URL
147     *
148     * @param formPostUrl
149     */
150    void setFormPostUrl(String formPostUrl);
151
152}