/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/


#ifndef __com_sun_star_report_XGroup_idl__
#define __com_sun_star_report_XGroup_idl__

#ifndef __com_sun_star_container_NoSuchElementException_idl__
#include <com/sun/star/container/NoSuchElementException.idl>
#endif
#ifndef __com_sun_star_report_XSection_idl__
#include <com/sun/star/report/XSection.idl>
#endif
#ifndef __com_sun_star_report_XGroups_idl__
#include <com/sun/star/report/XGroups.idl>
#endif
#include <com/sun/star/report/XFunctions.idl>
//=============================================================================

 module com {  module sun {  module star {  module report {

//=============================================================================

/** identifies a <type>XGroup</type>.
    A group is always a child of the groups collection in the report.
    @see XReportDefinition
    @see XGroups
 */
published interface XGroup
{
    /** allows access to the groups collection of the report.
    */
    interface com::sun::star::container::XChild;

    /** allows access to the properties of the instance.
    */
    interface com::sun::star::beans::XPropertySet;

    /** allows life-time control of group instances.
     */
    interface com::sun::star::lang::XComponent;

    /** gives access to functions defined in the group definition.
    */
    interface XFunctionsSupplier;

    /** Defines if the group is sorted ascending or descending.
        The default is <TRUE/>.
     */
    [attribute,bound] boolean SortAscending;

    /** Defines if a group has a header.
    */
    [attribute,bound] boolean HeaderOn;

    /** Defines if a group has a footer.
    */
    [attribute,bound] boolean FooterOn;

    /** returns the group header.
        @throws <type scope="com::sun::star::container">NoSuchElementException</type>
            If the group has the header disabled.
        @see XSection
    */

    [attribute,readonly] XSection Header
    {
        get raises (com::sun::star::container::NoSuchElementException);
    };

    /** returns the group footer.
        @throws <type scope="com::sun::star::container">NoSuchElementException</type>
            If the group has the footer disabled.
        @see XSection
    */
    [attribute,readonly,bound] XSection Footer
    {
        get raises (com::sun::star::container::NoSuchElementException);
    };

    /** Specifies how to group data.
        @see GroupOn
    */
    [attribute,bound] short GroupOn
    {
        set raises (com::sun::star::lang::IllegalArgumentException);
    };

    /** Defines an interval value that rows are grouped by.
    */
    [attribute,bound] long GroupInterval;

    /** Specifies if a group header, detail, and footer section is printed on the same page.
        @see KeepTogether
    */
    [attribute,bound] short KeepTogether
    {
        set raises (com::sun::star::lang::IllegalArgumentException);
    };

    /** Specifies the parent of the group.
        @see XChild
    */
    [attribute,readonly] com::sun::star::report::XGroups Groups;

    /** Defines either a column name or a expression.
    */
    [attribute,bound] string Expression;

    /** Specifies that the group header should always be printed on a new column.
    */
    [attribute,bound] boolean StartNewColumn;

    /** Specifies that the group header should always be printed on a new page and the reset of the page number to zero.
    */
    [attribute,bound] boolean ResetPageNumber;
};

service Group : XGroup;
//=============================================================================

}; }; }; };

/*=============================================================================

=============================================================================*/
#endif
