/**************************************************************
 * 
 * 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_document_XDocumentInfo_idl__
#define __com_sun_star_document_XDocumentInfo_idl__

#ifndef __com_sun_star_uno_XInterface_idl__
#include <com/sun/star/uno/XInterface.idl>
#endif

#ifndef __com_sun_star_lang_ArrayIndexOutOfBoundsException_idl__
#include <com/sun/star/lang/ArrayIndexOutOfBoundsException.idl>
#endif

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

module com {   module sun {   module star {   module document {

//=============================================================================
/** provides access to the user fields for the information regarding the
    document

    <p>
    These fields are special one of the set of available document properties.
    Other ones are accessed as properties (by using the interface
    <type scope="com::sun::star::beans">XPropertySet</type>) of service
    <type>DocumentInfo</type>.
    </p>

    @deprecated     Use <type>XDocumentProperties</type> instead.

    @see DocumentInfo
    @see StandaloneDocumentInfo
    @see com::sun::star::beans::XPropertySet
 */
published interface XDocumentInfo: com::sun::star::uno::XInterface
{
	//-------------------------------------------------------------------------
    /** provides information about count of available fields

        <p>
        This count marks the top range of possible requests for get/set
        any of these fields. Range = [0..count-1]
        </p>

        @returns
            current count
	 */
	short getUserFieldCount();

	//-------------------------------------------------------------------------
    /** returns the name of an user field

        @param Index
            specifies the position of requested field
            Range = [0..count-1]

        @returns
            the name of the requested field

        @throws com::sun::star::lang::ArrayIndexOutOfBoundsException
            if <var>Index</var> don't fit range of [0..count-1]
	 */
    string getUserFieldName( [in] short Index )
        raises( com::sun::star::lang::ArrayIndexOutOfBoundsException );

	//-------------------------------------------------------------------------
    /** returns the value of an user field

        @param Index
            specifies the position of requested field
            Range = [0..count-1]

        @returns
            the value of the requested field

        @throws com::sun::star::lang::ArrayIndexOutOfBoundsException
            if <var>Index</var> don't fit range of [0..count-1]
	 */
    string getUserFieldValue( [in] short Index )
        raises( com::sun::star::lang::ArrayIndexOutOfBoundsException );

	//-------------------------------------------------------------------------
    /** changes the name of one of the user fields

        @param Index
            specifies the position of requested field
            Range = [0..count-1]

        @param Name
            the new name for this field to be set

        @throws com::sun::star::lang::ArrayIndexOutOfBoundsException
            if <var>Index</var> don't fit range of [0..count-1]
	 */
    void setUserFieldName(
        [in] short  Index ,
        [in] string Name  )
            raises( com::sun::star::lang::ArrayIndexOutOfBoundsException );

	//-------------------------------------------------------------------------
    /** changes the value of one of the user fields

        @param Index
            specifies the position of requested field
            Range = [0..count-1]

        @param Value
            the new value for this field to be set

        @throws com::sun::star::lang::ArrayIndexOutOfBoundsException
            if <var>Index</var> don't fit range of [0..count-1]
	 */
    void setUserFieldValue(
        [in] short  Index ,
        [in] string Value )
            raises( com::sun::star::lang::ArrayIndexOutOfBoundsException );
};

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

}; }; }; };

#endif