1/**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements.  See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership.  The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License.  You may obtain a copy of the License at
10 *
11 *   http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied.  See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24#ifndef __com_sun_star_frame_XUIElementFactoryRegistration_idl__
25#define __com_sun_star_frame_XUIElementFactoryRegistration_idl__
26
27#ifndef __com_sun_star_uno_XInterface_idl__
28#include <com/sun/star/uno/XInterface.idl>
29#endif
30
31#ifndef __com_sun_star_ui_XUIElementFactory_idl__
32#include <com/sun/star/ui/XUIElementFactory.idl>
33#endif
34
35#ifndef __com_sun_star_container_ElementExistException_idl__
36#include <com/sun/star/container/ElementExistException.idl>
37#endif
38
39#ifndef __com_sun_star_container_NoSuchElementException_idl__
40#include <com/sun/star/container/NoSuchElementException.idl>
41#endif
42
43#ifndef __com_sun_star_beans_PropertyValue_idl__
44#include <com/sun/star/beans/PropertyValue.idl>
45#endif
46
47//=============================================================================
48
49module com { module sun { module star { module ui {
50
51//=============================================================================
52
53/** is used to query, register and deregister user interface element factories.
54
55    <p>
56    A user interface element factory is registered for a set of three properties.
57    <ul>
58        <li><b>Type</b>a string that identifies a type of a user interface element.</li>
59        <li><b>Name</b>a string that identifies a single user interface element within a type class.</li>
60        <li><b>Module</b>a string that identifies a single module of OpenOffice.</li>
61    <ul>
62    A combination of these three property values can uniquely identifiy every user interface
63    element within OpenOffice.
64
65    Currently the following user interface element types are defined:
66    <ul>
67        <li><b>menubar</b></li>
68        <li><b>popupmenu</b></li>
69        <li><b>toolbar</b></li>
70        <li><b>statusbar</b></li>
71        <li><b>floater</b></li>
72    </ul>
73    </p>
74
75    @since OpenOffice 2.0
76 */
77
78interface XUIElementFactoryRegistration : com::sun::star::uno::XInterface
79{
80    /** function to retrieve a list of all registered user interface element factories
81
82        @returns
83            a sequence of sequence of propert values which describe every registered
84            user interface element factory.<br/>
85
86            The following properties are defined:
87            <ul>
88                <li><b>Type</b>a string property that identifies the type of the user interface
89                element which this factory can create.</li>
90                <li><b>Name</b>an optional string property which identifies a single user interface
91                element within a type class which this factory can create. If this property is not
92                returned, the factory is a generic factory for all user interface elements of the
93                same type.</li>
94                <li><b>Module</b>an optional string property that specifies to which module this factory is
95                bound to. If this property is not returned, the factory is a generic factory.</li>
96            </ul>
97    */
98    sequence< sequence< com::sun::star::beans::PropertyValue > > getRegisteredFactories();
99
100    /** function to retrieve a previously registered user interface element factory.
101
102        @returns
103            a reference to a registered user interface element factory if a factory has been
104            found. An empty reference when no factory has been found.
105            <b>The defined search order of factories must be from special to generic ones.</b>
106
107        @param ResourceURL
108            a resource URL which identifies a user interface element. A resource URL uses the
109            following syntax: "private:resource/$type/$name". It is only allowed to use ascii
110            characters for type and name.
111
112        @param ModuleName
113            an optional module identifier. This value can remain empty, if a generic factory is requested.
114            The module identifier can be retrieved from the <type scope="com::sun::star::frame">ModuleManager</type> service.
115    */
116    ::com::sun::star::ui::XUIElementFactory getFactory( [in] string ResourceURL, [in] string ModuleIdentifier );
117
118    /** function to register a user interface element factory.
119
120        @param aType
121            a string that identifies a type of a user interface element. Currently the following types
122            are supported:
123            <ul>
124                <li><b>menubar</b></li>
125                <li><b>toolbar</b></li>
126                <li><b>statusbar</b></li>
127            </ul>
128
129        @param aName
130            an optional name of a single user interface element. This name must be unique within a user
131            interface element type class. This value can remain empty if no special factory for a single
132            user interface element is needed.
133
134        @param aModuleIdentifier
135            an optional module identifier that can be used to register a factory only for a single module. This value
136            can remain empty if no special factory for a single module is needed. The module identifier can be retrieved
137            from the <type scope="com::sun::star::frame">ModuleManager</type> service.
138
139        @param aFactoryImplementationName
140            a UNO implementation name that can be used by an implementation to create a factory instance.
141    */
142    void registerFactory( [in] string aType, [in] string aName, [in] string aModuleIdentifier, [in] string aFactoryImplementationName ) raises (com::sun::star::container::ElementExistException);
143
144    /** function to remove a previously defined user interface element factory.
145
146        @param aType
147            a string that identifies a type of a user interface element. Currently the following types
148            are supported:
149            <ul>
150                <li><b>menubar</b></li>
151                <li><b>toolbar</b></li>
152                <li><b>statusbar</b></li>
153            </ul>
154
155        @param aName
156            an optional name of a single user interface element. This name must be unique within a user
157            interface element type class. This value can remain empty if no special factory for a single
158            user interface element should be deregistered.
159
160        @param aModuleName
161            an optional module name that can be used to deregister a factory only for a single module. This value
162            can remain empty if not a module based factory should be deregisted. The module identifier can be retrieved
163            from the <type scope="com::sun::star::frame">ModuleManager</type> service.
164
165        <p>
166        <b>Using this function can be very dangerous as other implementation with OpenOffice may not be able to  create their
167        user interface element anymore.
168        </b>
169        </p>
170    */
171    void deregisterFactory( [in] string aType, [in] string aName, [in] string aModuleIdentifier ) raises (com::sun::star::container::NoSuchElementException);
172};
173
174}; }; }; };
175
176//=============================================================================
177
178#endif
179