/*************************************************************************
 *
 *  OpenOffice.org - a multi-platform office productivity suite
 *
 *  $RCSfile: XUIConfigurationPersistence.idl,v $
 *
 *  $Revision: 1.3 $
 *
 *  last change: $Author: rt $ $Date: 2005-09-08 08:30:43 $
 *
 *  The Contents of this file are made available subject to
 *  the terms of GNU Lesser General Public License Version 2.1.
 *
 *
 *    GNU Lesser General Public License Version 2.1
 *    =============================================
 *    Copyright 2005 by Sun Microsystems, Inc.
 *    901 San Antonio Road, Palo Alto, CA 94303, USA
 *
 *    This library is free software; you can redistribute it and/or
 *    modify it under the terms of the GNU Lesser General Public
 *    License version 2.1, as published by the Free Software Foundation.
 *
 *    This library is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *    Lesser General Public License for more details.
 *
 *    You should have received a copy of the GNU Lesser General Public
 *    License along with this library; if not, write to the Free Software
 *    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 *    MA  02111-1307  USA
 *
 ************************************************************************/

#ifndef __com_sun_star_ui_XUIConfigurationPersistence_idl__
#define __com_sun_star_ui_XUIConfigurationPersistence_idl__

#ifndef __com_sun_star_embed_XStorage_idl__
#include <com/sun/star/embed/XStorage.idl>
#endif

module com { module sun { module star { module ui {

/** specifies a persistence interface which supports to load/store user
    interface configuration data to a storage and to retrieve information
    about the current state.

    @since OOo 2.0.0
*/

interface XUIConfigurationPersistence : ::com::sun::star::uno::XInterface
{
    /** reloads the configuration data from the storage and reinitialize
        the user interface configuration manager instance with this data.

        <p>
        It is up to the implementation if it defers the first loading process
        until the first data request using <type>XUIConfigurationManager</type>
        interface.
        </p>
    */
    void reload() raises ( ::com::sun::star::uno::Exception );

    /** stores the configuration data to the storage provided by
        <member>setStorage</member> from the storage and initialize the
        user interface configuration manager instance with the newly
        data. This call can throw an
        <type scope="com::sun::star::io">IOException</type> if
        <member>store</member> cannot store its data into the internal
        storage.
    */
    void store() raises ( ::com::sun::star::uno::Exception );

    /** stores the configuration data to the provided storage, ignoring
        the previously set storage by <member>setStorage</member>. Can
        be used to make copy of the current user interface configuration
        data to another storage. This call will throw an
        <type scope="com::sun::star::io">IOException</type> if the provided
        storage is in read-only mode.

        @param Storage
            all configuration data will be stored to this storage.
    */
    void storeToStorage( [in] ::com::sun::star::embed::XStorage Storage ) raises ( ::com::sun::star::uno::Exception );

    /** provides the current modify state of the configuration manager
        instance.

        @return
            <TRUE/> if the configuration manager has changed since the
            last <member>store</member> call. <FALSE/> if the configuration
            manager has not been changed.
    */
    boolean isModified();

    /** provides the current read-only state of the user configuration
        manager. Storing a user interface configuration to a read-only storage
        is not possible. A read-only configuration manager instance will also
        not support any changes to its configuration settings.

        @return
            <TRUE/> if the configuration manager storage is read-only otherwise
            <FALSE/>.
    */
    boolean isReadOnly();
};

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

}; }; }; };

#endif
