001/**
002 * Copyright 2005-2018 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 org.kuali.rice.krad.uif.widget.Disclosure;
019import org.kuali.rice.krad.uif.widget.Scrollpane;
020
021/**
022 * Common interface for group components. 
023 * 
024 * @author Kuali Rice Team (rice.collab@kuali.org)
025 */
026public interface Group extends Container {
027
028    /**
029     * Binding prefix string to set on each of the groups <code>DataField</code> instances
030     *
031     * <p>
032     * As opposed to setting the bindingPrefix on each attribute field instance,
033     * it can be set here for the group. During initialize the string will then
034     * be set on each attribute field instance if the bindingPrefix is blank and
035     * not a form field
036     * </p>
037     *
038     * @return String binding prefix to set
039     */
040    String getFieldBindByNamePrefix();
041
042    /**
043     * Setter for the field binding prefix
044     *
045     * @param fieldBindByNamePrefix
046     */
047    void setFieldBindByNamePrefix(String fieldBindByNamePrefix);
048
049    /**
050     * Object binding path to set on each of the group's
051     * <code>InputField</code> instances
052     *
053     * <p>
054     * When the attributes of the group belong to a object whose path is
055     * different from the default then this property can be given to set each of
056     * the attributes instead of setting the model path on each one. The object
057     * path can be overridden at the attribute level. The object path is set to
058     * the fieldBindingObjectPath during the initialize phase.
059     * </p>
060     *
061     * @return String model path to set
062     * @see org.kuali.rice.krad.uif.component.BindingInfo#getBindingObjectPath()
063     */
064    String getFieldBindingObjectPath();
065
066    /**
067     * Setter for the field object binding path
068     *
069     * @param fieldBindingObjectPath
070     */
071    void setFieldBindingObjectPath(String fieldBindingObjectPath);
072
073    /**
074     * Disclosure widget that provides collapse/expand functionality for the
075     * group
076     *
077     * @return Disclosure instance
078     */
079    Disclosure getDisclosure();
080
081    /**
082     * Setter for the group's disclosure instance
083     *
084     * @param disclosure
085     */
086    void setDisclosure(Disclosure disclosure);
087
088    /**
089     * Scrollpane widget that provides scrolling functionality for the
090     * group
091     *
092     * @return Scrollpane instance
093     */
094    Scrollpane getScrollpane();
095
096    /**
097     * Setter for the group's scrollpane instance
098     *
099     * @param scrollpane
100     */
101    void setScrollpane(Scrollpane scrollpane);
102
103    /**
104     * Determine the group should be rendered on initial load, or if a loading message should be rendered instead.
105     *
106     * @return True if a loading message should be rendered, false if the group should be rendered now.
107     */
108    boolean isRenderLoading();
109
110    /**
111     * Getter for headerText
112     * 
113     * @return headerText
114     */
115    String getHeaderText();
116    
117    /**
118     * Setter for headerText.
119     * 
120     * @param headerText value
121     */
122    void setHeaderText(String headerText);
123
124    /**
125     * Setter for renderFooter.
126     * 
127     * @param renderFooter value
128     */
129    void setRenderFooter(boolean renderFooter);
130
131    /**
132     * This method ...
133     * 
134     * @return
135     */
136    String getWrapperTag();
137
138    /**
139     * This method ...
140     * 
141     * @param footer
142     */
143    void setWrapperTag(String footer);
144    
145}