/**************************************************************
 * 
 * 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_sheet_DataPilotFieldGroups_idl__
#define __com_sun_star_sheet_DataPilotFieldGroups_idl__

#ifndef __com_sun_star_container_XNameContainer_idl__
#include <com/sun/star/container/XNameContainer.idl>
#endif
#ifndef __com_sun_star_container_XEnumerationAccess_idl__
#include <com/sun/star/container/XEnumerationAccess.idl>
#endif
#ifndef __com_sun_star_container_XIndexAccess_idl__
#include <com/sun/star/container/XIndexAccess.idl>
#endif

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

module com {  module sun {  module star {  module sheet {

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

/** represents a collection of groups in a data pilot field.

    <p>The members of this collection are instances of <type>DataPilotFieldGroup</type>
    containing the names of all items in the group.</p>

    @see DataPilotField
    @see DataPilotFieldGroup
    @see DataPilotFieldGroupInfo
 */
published service DataPilotFieldGroups
{
	//-------------------------------------------------------------------------

    /** provides access to the data pilot field groups in the collection via
        index.
	 */
	interface com::sun::star::container::XIndexAccess;

	//-------------------------------------------------------------------------

	/** creates an enumeration of all data pilot field groups.

        @see DataPilotFieldGroupsEnumeration
	 */
	interface com::sun::star::container::XEnumerationAccess;

	//-------------------------------------------------------------------------

    /** provides access to the data pilot field groups in the collection via
        name.
	 */
	interface com::sun::star::container::XNameAccess;

    //-------------------------------------------------------------------------

    /** provides read/write access to the data pilot field groups in the
        collection via name.

        <p>The <type scope="com::sun::star::container">XNameContainer</type>
        and <type scope="com::sun::star::container">XNameReplace</type>
        interfaces can be used to manage the item groups. It is possible to
        insert, remove, and replace item groups.</p>

        <p>The method <member scope="com::sun::star::container">
        XNameReplace::replaceByName</member> can be used to replace the item
        names in an existing group with a new collection of item names. An
        implementation should support the following data types:

        <ul>
        <li>an empty <atom>any</atom> to remove all items and leave the
        group empty. The group can be filled later with new item names.</li>
        <li>a <atom dim="[]">string</atom> containing all item names that will
        be part of the group.</li>
        <li>an object supporting <type scope="com::sun::star::container">
        XIndexAccess</type> containing elements that provide an item name per
        element via the interface <type scope="com::sun::star::container">
        XNamed</type>, for example an instance of <type>DataPilotFieldGroup
        </type>.</li>
        </ul></p>

        <p>The method <member scope="com::sun::star::container">
        XNameContainer::insertByName</member> can be used to insert a new
        field group with the passed collection of item names. An
        implementation should support the same data types as described above
        for the method <member scope="com::sun::star::container">
        XNameReplace::replaceByName</member>.</p>

        <p>The method <member scope="com::sun::star::container">
        XNameContainer::removeByName</member> can be used to remove an
        existing field group.</p>
     */
    [optional] interface com::sun::star::container::XNameContainer;

};

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

}; }; }; };

#endif