/* -*- 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_XModuleUIConfigurationManager_idl__
#define __com_sun_star_ui_XModuleUIConfigurationManager_idl__

#include <com/sun/star/container/XIndexContainer.idl>
#include <com/sun/star/container/XIndexAccess.idl>
#include <com/sun/star/container/NoSuchElementException.idl>
#include <com/sun/star/lang/IllegalArgumentException.idl>
#include <com/sun/star/lang/IllegalAccessException.idl>

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

/** specifies specific functions of a module based user interface
    configuration manager interface.

    <p>
    A module user interface configuration manager supports, unlike a
    document based ui configuration manager, 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. This layer is the same as the document ui
              configuration manager uses.
    </p>

    @since OOo 2.0
*/

interface XModuleUIConfigurationManager : ::com::sun::star::uno::XInterface
{
    /** determine if the settings of a user interface element is part
        of the default layer of the user interface configuration manager.

        @param ResourceURL
            a resource URL which identifies the user interface element. A
            resource URL must meet the following syntax:
            "private:resource/$type/$name. It is only allowed to use ASCII
            characters for type and name.

        @return
            `TRUE` if settings have been found in the default layer,
            otherwise `FALSE`.
    */
    boolean isDefaultSettings( [in] string ResourceURL ) raises ( com::sun::star::lang::IllegalArgumentException );

    /** retrieves the settings from the default layer of the user interface
        configuration manager if it has a default layer.

        @param ResourceURL
            a resource URL which identifies the user interface element. A
            resource URL must meet the following syntax:
            "private:resource/$type/$name. It is only allowed to use ASCII
            characters for type and name.

        @return
            `TRUE` if default settings have been found in the default layer,
            otherwise `FALSE`.
    */
    ::com::sun::star::container::XIndexAccess getDefaultSettings( [in] string ResourceURL ) raises ( com::sun::star::container::NoSuchElementException, com::sun::star::lang::IllegalArgumentException );

};


}; }; }; };

#endif

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