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