157 lines
5.8 KiB
Text
157 lines
5.8 KiB
Text
/* -*- 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 .
|
|
*/
|
|
|
|
|
|
module com { module sun { module star { module configuration {
|
|
|
|
/** provides information about a dynamic element that can be inserted into a
|
|
homogeneous set of elements within a hierarchy.
|
|
|
|
<p>Provides information about the element.
|
|
Provides access to its containing set object.
|
|
Allows controlling the lifetime of the element.
|
|
</p>
|
|
|
|
<p>Set elements may be added to and removed from the hierarchy at runtime.
|
|
They bear user-defined names. They may exist independently, outside any
|
|
container.
|
|
</p>
|
|
|
|
<p>New set element instances generally are created through members of
|
|
com::sun::star::lang::XSingleServiceFactory or,
|
|
if supported, com::sun::star::lang::XMultiServiceFactory
|
|
on an implementation of SetUpdate. Initially, they are not
|
|
contained in a set object and have no meaningful name.
|
|
</p>
|
|
|
|
<p>While an instance is not contained in a set object, it is owned by
|
|
the client and can be disposed by calling
|
|
com::sun::star::lang::XComponent::dispose(). The name
|
|
of the object can freely be changed in that situation though without
|
|
persistent effect.
|
|
</p>
|
|
|
|
<p>When the instance is inserted into a set (this includes replacing an
|
|
existing element), ownership is transferred to the container.
|
|
While it is contained in the container, clients must not dispose the
|
|
object. When inserted, the name of the object is fixed and is used to
|
|
identify it within the container. An implementation may support
|
|
com::sun::star::container::XNamed::setName() even in
|
|
this case. If it does, changing the name has the same effect of removing
|
|
the object (under the old name) and then reinserting it into the same
|
|
container (using the new name).
|
|
</p>
|
|
|
|
<p>When an instance is removed from a set (this includes being replaced by
|
|
a new element), ownership is transferred to the client again. It can then be
|
|
disposed or reinserted into a container. An instance can only be inserted
|
|
into a container, if it was obtained from the same hierarchy.
|
|
</p>
|
|
|
|
<p>When a set element is removed from its set from outside the hierarchy, the
|
|
container disposes of the object. This occurrence can be detected by registering
|
|
a com::sun::star::lang::XEventListener with the object.
|
|
</p>
|
|
|
|
<p>If an implementation is part of a <em>read-only</em> view of the hierarchy,
|
|
changing the name or parent is not supported (the object can't be removed from
|
|
its container anyway).
|
|
</p>
|
|
|
|
@see com::sun::star::configuration::SetAccess
|
|
Parent objects of this service generally implement service SetAccess.
|
|
|
|
@see com::sun::star::configuration::GroupElement
|
|
A complementary service for elements of a static heterogeneous collection.
|
|
|
|
@see com::sun::star::configuration::AccessRootElement
|
|
A complementary service for the root element of a hierarchy.
|
|
|
|
*/
|
|
published service SetElement
|
|
{
|
|
/** is the basic service for accessing information about an element in the
|
|
hierarchy.
|
|
*/
|
|
service HierarchyElement;
|
|
|
|
/** provides access to the containing set object.
|
|
|
|
<p>In this service, this interface is mandatory</p>
|
|
|
|
<p>com::sun::star::container::XChild::getParent()
|
|
returns `NULL`, if the object is currently not contained in a container.
|
|
</p>
|
|
|
|
<p>An implementation may also support
|
|
com::sun::star::container::XChild::setParent().
|
|
If it does, changing the parent has the effect of first removing the object
|
|
from its old parent (if any) and then inserting it into the new parent
|
|
(unless that is `NULL`) under the same name. The new parent must be part of
|
|
the same hierarchy as the old one. The name of the object must have been set
|
|
before.
|
|
</p>
|
|
*/
|
|
interface com::sun::star::container::XChild;
|
|
|
|
/** allows controlling or observing the lifetime of the object.
|
|
|
|
<p>Clients may dispose of the object using
|
|
com::sun::star::lang::XComponent::dispose(), only if
|
|
the object is currently not contained in a container (
|
|
com::sun::star::container::XChild::getParent()
|
|
returns `NULL`).
|
|
</p>
|
|
|
|
<p>Clients may register a com::sun::star::lang::XEventListener
|
|
to be notified, if the object is removed from its container by an outside source.
|
|
</p>
|
|
*/
|
|
interface com::sun::star::lang::XComponent;
|
|
|
|
/** provides information about the type of the element.
|
|
|
|
<p>Set elements have a predetermined structure (their <em>type</em>),
|
|
that is described by and can be generated from a <em>template</em>.
|
|
</p>
|
|
|
|
<p>If the object was created using interface
|
|
com::sun::star::lang::XSingleServiceFactory
|
|
on an implementation of SetUpdate, this interface describes the
|
|
same template as interface XTemplateContainer on that
|
|
SetUpdate.
|
|
</p>
|
|
<p>If the object was created using interface
|
|
com::sun::star::lang::XMultiServiceFactory
|
|
on an implementation of SetUpdate, this interface describes the
|
|
template whose name was used as a service identifier for the factory method.
|
|
</p>
|
|
<p>Otherwise, the semantics of the information provided about the template depends on the
|
|
implementation.
|
|
</p>
|
|
|
|
@see com::sun::star::configuration::XTemplateContainer
|
|
*/
|
|
interface com::sun::star::configuration::XTemplateInstance;
|
|
};
|
|
|
|
|
|
}; }; }; };
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|