/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   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 .
 */
#ifndef __com_sun_star_ui_ModuleUIConfigurationManager_idl__
#define __com_sun_star_ui_ModuleUIConfigurationManager_idl__

#include <com/sun/star/ui/XModuleUIConfigurationManager2.idl>
#include <com/sun/star/configuration/CorruptedUIConfigurationException.idl>
#include <com/sun/star/beans/UnknownPropertyException.idl>
#include <com/sun/star/lang/WrappedTargetException.idl>

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

/** specifies a user interface configuration manager which gives access to user interface
    configuration data of a module.

    <p>
    A module user interface configuration manager supports two layers of configuration settings
    data:<br>
    1. Layer: A module default user interface configuration which describe all user interface
    elements settings that are used by OpenOffice. It is not possible to insert, remove or change
    elements settings in this layer through the interfaces.<br>
    2. Layer: A module user interface configuration which only contains customized user interface
    elements and user-defined ones. All changes on user interface element settings are done on
    this layer.
    </p>

    @since OOo 2.0
*/

service ModuleUIConfigurationManager : XModuleUIConfigurationManager2
{
    /** provides a function to initialize a module user interface configuration manager instance.

        <p>
        A module user interface configuration manager instance needs the following arguments as
        com::sun::star::beans::PropertyValue to be in a working state:
        <ul>
            <li><b>DefaultConfigStorage</b>a reference to a com::sun::star::embed::Storage that
            contains the default module user interface configuration settings.</li>
            <li><b>UserConfigStorage</b>a reference to a com::sun::star::embed::Storage that
            contains the user-defined module user interface configuration settings.</li>
            <li><b>ModuleIdentifier</b>string that provides the module identifier.</li>
            <li><b>UserRootCommit</b>a reference to a com::sun::star::embed::XTransactedObject which
            represents the customizable root storage. Every implementation must use this reference to commit its
            changes also at the root storage.</li>
        </ul>
        A non-initialized module user interface configuration manager cannot be used, it is treated
        as a read-only container.
        </p>
    */
    createDefault([in] string ModuleShortName, [in] string ModuleIdentifier)
        raises ( com::sun::star::configuration::CorruptedUIConfigurationException,
               com::sun::star::beans::UnknownPropertyException,
               com::sun::star::lang::WrappedTargetException );


};


}; }; }; };

#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
