summaryrefslogtreecommitdiffstats
path: root/offapi/com/sun/star/ui/XUIElementFactoryRegistration.idl
blob: 7d184485c5b65aa96ab3503d96825d4142a684f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
/* -*- 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_XUIElementFactoryRegistration_idl__
#define __com_sun_star_ui_XUIElementFactoryRegistration_idl__

#include <com/sun/star/uno/XInterface.idl>
#include <com/sun/star/ui/XUIElementFactory.idl>
#include <com/sun/star/container/ElementExistException.idl>
#include <com/sun/star/container/NoSuchElementException.idl>
#include <com/sun/star/beans/PropertyValue.idl>


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 identify 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 OOo 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 property 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 ModuleIdentifier
            an optional module identifier. This value can remain empty, if a generic factory is requested.
            The module identifier can be retrieved from the com::sun::star::frame::ModuleManager 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 com::sun::star::frame::ModuleManager 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 ModuleIdentifier
            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 deregistered. The module identifier can be retrieved
            from the com::sun::star::frame::ModuleManager 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 ModuleIdentifier ) raises (com::sun::star::container::NoSuchElementException);
};

}; }; }; };


#endif

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