blob: d7cbb35eeb1ea009f8ffb85ec4287eaf707d3694 [file] [log] [blame]
/**************************************************************
*
* 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_frame_XUIElementFactoryRegistration_idl__
#define __com_sun_star_frame_XUIElementFactoryRegistration_idl__
#ifndef __com_sun_star_uno_XInterface_idl__
#include <com/sun/star/uno/XInterface.idl>
#endif
#ifndef __com_sun_star_ui_XUIElementFactory_idl__
#include <com/sun/star/ui/XUIElementFactory.idl>
#endif
#ifndef __com_sun_star_container_ElementExistException_idl__
#include <com/sun/star/container/ElementExistException.idl>
#endif
#ifndef __com_sun_star_container_NoSuchElementException_idl__
#include <com/sun/star/container/NoSuchElementException.idl>
#endif
#ifndef __com_sun_star_beans_PropertyValue_idl__
#include <com/sun/star/beans/PropertyValue.idl>
#endif
//=============================================================================
module com { module sun { module star { module ui {
//=============================================================================
/** is used to query, register and deregister user interface element factories.
<p>
A user interface element factory is registered for a set of three properties.
<ul>
<li><b>Type</b>a string that identifies a type of a user interface element.</li>
<li><b>Name</b>a string that identifies a single user interface element within a type class.</li>
<li><b>Module</b>a string that identifies a single module of OpenOffice.</li>
<ul>
A combination of these three property values can uniquely identifiy every user interface
element within OpenOffice.
Currently the following user interface element types are defined:
<ul>
<li><b>menubar</b></li>
<li><b>popupmenu</b></li>
<li><b>toolbar</b></li>
<li><b>statusbar</b></li>
<li><b>floater</b></li>
</ul>
</p>
@since OpenOffice 2.0
*/
interface XUIElementFactoryRegistration : com::sun::star::uno::XInterface
{
/** function to retrieve a list of all registered user interface element factories
@returns
a sequence of sequence of propert values which describe every registered
user interface element factory.<br/>
The following properties are defined:
<ul>
<li><b>Type</b>a string property that identifies the type of the user interface
element which this factory can create.</li>
<li><b>Name</b>an optional string property which identifies a single user interface
element within a type class which this factory can create. If this property is not
returned, the factory is a generic factory for all user interface elements of the
same type.</li>
<li><b>Module</b>an optional string property that specifies to which module this factory is
bound to. If this property is not returned, the factory is a generic factory.</li>
</ul>
*/
sequence< sequence< com::sun::star::beans::PropertyValue > > getRegisteredFactories();
/** function to retrieve a previously registered user interface element factory.
@returns
a reference to a registered user interface element factory if a factory has been
found. An empty reference when no factory has been found.
<b>The defined search order of factories must be from special to generic ones.</b>
@param ResourceURL
a resource URL which identifies a user interface element. A resource URL uses the
following syntax: "private:resource/$type/$name". It is only allowed to use ascii
characters for type and name.
@param ModuleName
an optional module identifier. This value can remain empty, if a generic factory is requested.
The module identifier can be retrieved from the <type scope="com::sun::star::frame">ModuleManager</type> service.
*/
::com::sun::star::ui::XUIElementFactory getFactory( [in] string ResourceURL, [in] string ModuleIdentifier );
/** function to register a user interface element factory.
@param aType
a string that identifies a type of a user interface element. Currently the following types
are supported:
<ul>
<li><b>menubar</b></li>
<li><b>toolbar</b></li>
<li><b>statusbar</b></li>
</ul>
@param aName
an optional name of a single user interface element. This name must be unique within a user
interface element type class. This value can remain empty if no special factory for a single
user interface element is needed.
@param aModuleIdentifier
an optional module identifier that can be used to register a factory only for a single module. This value
can remain empty if no special factory for a single module is needed. The module identifier can be retrieved
from the <type scope="com::sun::star::frame">ModuleManager</type> service.
@param aFactoryImplementationName
a UNO implementation name that can be used by an implementation to create a factory instance.
*/
void registerFactory( [in] string aType, [in] string aName, [in] string aModuleIdentifier, [in] string aFactoryImplementationName ) raises (com::sun::star::container::ElementExistException);
/** function to remove a previously defined user interface element factory.
@param aType
a string that identifies a type of a user interface element. Currently the following types
are supported:
<ul>
<li><b>menubar</b></li>
<li><b>toolbar</b></li>
<li><b>statusbar</b></li>
</ul>
@param aName
an optional name of a single user interface element. This name must be unique within a user
interface element type class. This value can remain empty if no special factory for a single
user interface element should be deregistered.
@param aModuleName
an optional module name that can be used to deregister a factory only for a single module. This value
can remain empty if not a module based factory should be deregisted. The module identifier can be retrieved
from the <type scope="com::sun::star::frame">ModuleManager</type> service.
<p>
<b>Using this function can be very dangerous as other implementation with OpenOffice may not be able to create their
user interface element anymore.
</b>
</p>
*/
void deregisterFactory( [in] string aType, [in] string aName, [in] string aModuleIdentifier ) raises (com::sun::star::container::NoSuchElementException);
};
}; }; }; };
//=============================================================================
#endif