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#ifndef __com_sun_star_form_FormComponent_idl__
24#define __com_sun_star_form_FormComponent_idl__
25
26#ifndef __com_sun_star_form_XFormComponent_idl__
27#include <com/sun/star/form/XFormComponent.idl>
28#endif
29#ifndef __com_sun_star_lang_XComponent_idl__
30#include <com/sun/star/lang/XComponent.idl>
31#endif
32#ifndef __com_sun_star_container_XNamed_idl__
33#include <com/sun/star/container/XNamed.idl>
34#endif
35#ifndef __com_sun_star_beans_XPropertySet_idl__
36#include <com/sun/star/beans/XPropertySet.idl>
37#endif
38#ifndef __com_sun_star_io_XPersistObject_idl__
39#include <com/sun/star/io/XPersistObject.idl>
40#endif
41#ifndef __com_sun_star_beans_PropertyBag_idl__
42#include <com/sun/star/beans/PropertyBag.idl>
43#endif
44
45
46//=============================================================================
47
48 module com {  module sun {  module star {  module form {
49
50//=============================================================================
51
52/** specifies a component which can be part of a form.
53
54	@see FormControlModel
55	@see com::sun::star::form::component::Form
56 */
57published service FormComponent
58{
59	/** identifies the component as a candidate for being part of a form.
60		<p>This interface also provides the access to the component's parent.</p>
61	 */
62	interface com::sun::star::form::XFormComponent;
63
64
65	/** allows life-time control of form components.
66	 */
67	interface com::sun::star::lang::XComponent;
68
69
70	/** Each FormComponent must supply a name for identification.
71	 */
72	interface com::sun::star::container::XNamed;
73
74	/** gives access to the properties.
75	*/
76	interface com::sun::star::beans::XPropertySet;
77
78
79	/** Each FormComponent must be able to be stored into and read from a stream.
80	 */
81	interface com::sun::star::io::XPersistObject;
82
83    /** allows to associate arbitrary properties with the form component
84
85        <p>Every concrete form component - i.e. every service which includes
86        the <code>FormComponent</code> service - has a set of properties which
87        are available as long as the component lives - the so-called <em>static
88        properties</em>.</p>
89
90        <p>Additionally, you can add more properties to the component as needed,
91        using the <type scope="com::sun::star::beans">XPropertyContainer</type> interface.
92        Those properties are called <em>dynamic properties</em>.</p>
93
94        <p>Dynamic properties are not evaluated by the component itself,
95        nor by the form's runtime environment. They're only remembered and available for
96        use by other instances.</p>
97
98        <p>Note that dynamic properties added to a form component are, by definition,
99        removeable. That is, the <member scope="com::sun::star::beans">PropertyAttribute::REMOVEABLE</member>
100        will always be set, even if you do not specify it in the
101        <member scope="com::sun::star::beans">XPropertyContainer::addProperty</member> call.</p>
102
103        @since OpenOffice 2.3
104    */
105    [optional] service com::sun::star::beans::PropertyBag;
106
107	//-------------------------------------------------------------------------
108
109	/** the name of the component.
110
111        <p>Note that the name accessed here is the same as when using the
112		<type scope="com::sun::star::container">XNamed</type> interface.</p>
113	 */
114	[property] string Name;
115
116};
117
118//=============================================================================
119
120}; }; }; };
121
122/*=============================================================================
123
124=============================================================================*/
125#endif
126