1*b1cdbd2cSJim Jagielski/**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_configuration_SimpleSetUpdate_idl__
24*b1cdbd2cSJim Jagielski#define __com_sun_star_configuration_SimpleSetUpdate_idl__
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_configuration_SimpleSetAccess_idl__
27*b1cdbd2cSJim Jagielski#include <com/sun/star/configuration/SimpleSetAccess.idl>
28*b1cdbd2cSJim Jagielski#endif
29*b1cdbd2cSJim Jagielski
30*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_container_XNameContainer_idl__
31*b1cdbd2cSJim Jagielski#include <com/sun/star/container/XNameContainer.idl>
32*b1cdbd2cSJim Jagielski#endif
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_lang_XSingleServiceFactory_idl__
35*b1cdbd2cSJim Jagielski#include <com/sun/star/lang/XSingleServiceFactory.idl>
36*b1cdbd2cSJim Jagielski#endif
37*b1cdbd2cSJim Jagielski
38*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_lang_XMultiServiceFactory_idl__
39*b1cdbd2cSJim Jagielski#include <com/sun/star/lang/XMultiServiceFactory.idl>
40*b1cdbd2cSJim Jagielski#endif
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim Jagielski//=============================================================================
43*b1cdbd2cSJim Jagielski
44*b1cdbd2cSJim Jagielskimodule com { module sun { module star { module configuration {
45*b1cdbd2cSJim Jagielski
46*b1cdbd2cSJim Jagielski//=============================================================================
47*b1cdbd2cSJim Jagielski/** provides write access to a dynamic, homogeneous, non-hierarchical set of
48*b1cdbd2cSJim Jagielski values or objects.
49*b1cdbd2cSJim Jagielski
50*b1cdbd2cSJim Jagielski <p>Allows adding and removing elements.
51*b1cdbd2cSJim Jagielski Helps create new elements to be added.
52*b1cdbd2cSJim Jagielski </p>
53*b1cdbd2cSJim Jagielski
54*b1cdbd2cSJim Jagielski <p>This service extends <type>SimpleSetAccess</type> to support
55*b1cdbd2cSJim Jagielski modifying the container. Any child objects shall in turn support
56*b1cdbd2cSJim Jagielski modifying access.
57*b1cdbd2cSJim Jagielski </p>
58*b1cdbd2cSJim Jagielski*/
59*b1cdbd2cSJim Jagielskipublished service SimpleSetUpdate
60*b1cdbd2cSJim Jagielski{
61*b1cdbd2cSJim Jagielski/** is the basic service providing read access to a (not necessarily
62*b1cdbd2cSJim Jagielski hierarchical) <em>set</em>.
63*b1cdbd2cSJim Jagielski*/
64*b1cdbd2cSJim Jagielski	service SimpleSetAccess;
65*b1cdbd2cSJim Jagielski
66*b1cdbd2cSJim Jagielski/** allows inserting, removing, and replacing elements.
67*b1cdbd2cSJim Jagielski
68*b1cdbd2cSJim Jagielski <p>This interface extends the interface
69*b1cdbd2cSJim Jagielski <type scope="com::sun::star::container">XNameAccess</type> supported
70*b1cdbd2cSJim Jagielski by service <type>SimpleSetAccess</type> to allow modifying the container.
71*b1cdbd2cSJim Jagielski </p>
72*b1cdbd2cSJim Jagielski
73*b1cdbd2cSJim Jagielski <p>If available, changes can be observed by registering a listener with interface
74*b1cdbd2cSJim Jagielski <type scope="com::sun::star::container">XContainer</type>.
75*b1cdbd2cSJim Jagielski </p>
76*b1cdbd2cSJim Jagielski
77*b1cdbd2cSJim Jagielski <p>If the elements of this set are of simple type (the type returned by
78*b1cdbd2cSJim Jagielski <member scope="com::sun::star::container">XElementAccess::getElementType()</member>
79*b1cdbd2cSJim Jagielski is not an interface type), then values of that type can directly be passed to
80*b1cdbd2cSJim Jagielski <member scope="com::sun::star::container">XNameContainer::insertByName()</member>
81*b1cdbd2cSJim Jagielski and
82*b1cdbd2cSJim Jagielski <member scope="com::sun::star::container">XNameContainer::replaceByName()</member>.
83*b1cdbd2cSJim Jagielski </p>
84*b1cdbd2cSJim Jagielski
85*b1cdbd2cSJim Jagielski <p>Otherwise new elements have to be constructed to match the type
86*b1cdbd2cSJim Jagielski prescribed by the element template of this set. Such elements can be created
87*b1cdbd2cSJim Jagielski using interfaces <type scope="com::sun::star::lang">XSingleServiceFactory</type>
88*b1cdbd2cSJim Jagielski and, if supported, <type scope="com::sun::star::lang">XMultiServiceFactory</type>.
89*b1cdbd2cSJim Jagielski </p>
90*b1cdbd2cSJim Jagielski
91*b1cdbd2cSJim Jagielski <p>Objects to be inserted must not be contained in any set at the time of
92*b1cdbd2cSJim Jagielski insertion. <member scope="com::sun::star::container">XChild::getParent()</member>
93*b1cdbd2cSJim Jagielski must return <NULL/>. If a name had been assigned to the object prior to insertion
94*b1cdbd2cSJim Jagielski (using <member scope="com::sun::star::container">XNamed::setName()</member>
95*b1cdbd2cSJim Jagielski or by other means), this name is ignored and will be lost.
96*b1cdbd2cSJim Jagielski After insertion the name of the object is the name that was used as argument
97*b1cdbd2cSJim Jagielski to <member scope="com::sun::star::container">XNameContainer::insertByName()</member>
98*b1cdbd2cSJim Jagielski or <member scope="com::sun::star::container">XNameContainer::replaceByName()</member>.
99*b1cdbd2cSJim Jagielski</p>
100*b1cdbd2cSJim Jagielski
101*b1cdbd2cSJim Jagielski
102*b1cdbd2cSJim Jagielski <p>Objects that are removed using
103*b1cdbd2cSJim Jagielski <member scope="com::sun::star::container">XNameContainer::removeByName()</member>
104*b1cdbd2cSJim Jagielski or replaced using
105*b1cdbd2cSJim Jagielski <member scope="com::sun::star::container">XNameContainer::replaceByName()</member>
106*b1cdbd2cSJim Jagielski remain valid and can be reinserted into a set supporting the same template and
107*b1cdbd2cSJim Jagielski even under a different name.
108*b1cdbd2cSJim Jagielski </p>
109*b1cdbd2cSJim Jagielski
110*b1cdbd2cSJim Jagielski <p>An implementation need not support insertion of objects that were not
111*b1cdbd2cSJim Jagielski obtained in one of the ways described above. If it does, the implementation
112*b1cdbd2cSJim Jagielski must reject elements that do not have the correct structure as described
113*b1cdbd2cSJim Jagielski by the template.
114*b1cdbd2cSJim Jagielski </p>
115*b1cdbd2cSJim Jagielski*/
116*b1cdbd2cSJim Jagielski	interface com::sun::star::container::XNameContainer;
117*b1cdbd2cSJim Jagielski
118*b1cdbd2cSJim Jagielski/** allows creating an object that can be inserted into this set. [conditional]
119*b1cdbd2cSJim Jagielski
120*b1cdbd2cSJim Jagielski <p>This interface shall be implemented by an implementation,
121*b1cdbd2cSJim Jagielski if and only if the element type of the set, as returned by
122*b1cdbd2cSJim Jagielski <member scope="com::sun::star::container">XElementAccess::getElementType()</member>,
123*b1cdbd2cSJim Jagielski is an object type, such as an interface.
124*b1cdbd2cSJim Jagielski </p>
125*b1cdbd2cSJim Jagielski
126*b1cdbd2cSJim Jagielski <p>Using <member scope="com::sun::star::lang">XSingleServiceFactory::createInstance()</member>
127*b1cdbd2cSJim Jagielski an instance of the element template of this set is created. If the set
128*b1cdbd2cSJim Jagielski supports multiple templates or variations of the basic template, a default
129*b1cdbd2cSJim Jagielski variant of the basic template is instantiated. If an implementation supports
130*b1cdbd2cSJim Jagielski variations, they may be specified by passing arguments to
131*b1cdbd2cSJim Jagielski <member scope="com::sun::star::lang">XSingleServiceFactory::createInstanceWithArguments()</member>.
132*b1cdbd2cSJim Jagielski There are no predefined arguments for all versions of this service.
133*b1cdbd2cSJim Jagielski </p>
134*b1cdbd2cSJim Jagielski
135*b1cdbd2cSJim Jagielski <p>The object created is not contained in the set and does not have a name yet.
136*b1cdbd2cSJim Jagielski It may subsequently be inserted into the set and named using
137*b1cdbd2cSJim Jagielski <member scope="com::sun::star::container">XNameContainer::insertByName()</member>
138*b1cdbd2cSJim Jagielski or
139*b1cdbd2cSJim Jagielski <member scope="com::sun::star::container">XNameContainer::replaceByName()</member>.
140*b1cdbd2cSJim Jagielski </p>
141*b1cdbd2cSJim Jagielski*/
142*b1cdbd2cSJim Jagielski	[optional] interface com::sun::star::lang::XSingleServiceFactory;
143*b1cdbd2cSJim Jagielski
144*b1cdbd2cSJim Jagielski/** allows creating various objects that can be inserted into this set. [optional]
145*b1cdbd2cSJim Jagielski
146*b1cdbd2cSJim Jagielski <p>This interface may be implemented by an implementation of
147*b1cdbd2cSJim Jagielski service SetUpdate to support creating elements from other than
148*b1cdbd2cSJim Jagielski the basic element template. An example of this would be an
149*b1cdbd2cSJim Jagielski implementation that supports inheritance, allowing the use of
150*b1cdbd2cSJim Jagielski templates derived from the basic template by extension.
151*b1cdbd2cSJim Jagielski </p>
152*b1cdbd2cSJim Jagielski
153*b1cdbd2cSJim Jagielski <p>This interface may only be implemented if the element type of the set
154*b1cdbd2cSJim Jagielski (as returned by
155*b1cdbd2cSJim Jagielski <member scope="com::sun::star::container">XElementAccess::getElementType()</member>)
156*b1cdbd2cSJim Jagielski is an object type, such as an interface. An implementation should also implement
157*b1cdbd2cSJim Jagielski interface <type>XTemplateContainer</type> which is optional in this service.
158*b1cdbd2cSJim Jagielski </p>
159*b1cdbd2cSJim Jagielski
160*b1cdbd2cSJim Jagielski <p>The service identifier argument passed
161*b1cdbd2cSJim Jagielski to <member scope="com::sun::star::lang">XMultiServiceFactory::createInstance()</member>
162*b1cdbd2cSJim Jagielski or <member scope="com::sun::star::lang">XMultiServiceFactory::createInstanceWithArguments()</member>
163*b1cdbd2cSJim Jagielski names the template to be instantiated or otherwise identifies the structure
164*b1cdbd2cSJim Jagielski to be built. The implementation must at least support using the template
165*b1cdbd2cSJim Jagielski name obtained from <member>XTemplateContainer::getElementTemplateName()</member>
166*b1cdbd2cSJim Jagielski as a service identifier, in which case the result shall be the same as if
167*b1cdbd2cSJim Jagielski the corresponding member of <type scope="com::sun::star::lang">XSingleServiceFactory</type>
168*b1cdbd2cSJim Jagielski had been called.
169*b1cdbd2cSJim Jagielski </p>
170*b1cdbd2cSJim Jagielski
171*b1cdbd2cSJim Jagielski*/
172*b1cdbd2cSJim Jagielski	[optional] interface com::sun::star::lang::XMultiServiceFactory;
173*b1cdbd2cSJim Jagielski
174*b1cdbd2cSJim Jagielski};
175*b1cdbd2cSJim Jagielski
176*b1cdbd2cSJim Jagielski//=============================================================================
177*b1cdbd2cSJim Jagielski
178*b1cdbd2cSJim Jagielski}; }; }; };
179*b1cdbd2cSJim Jagielski
180*b1cdbd2cSJim Jagielski#endif
181