1/*************************************************************************
2 *
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
6 *
7 * OpenOffice.org - a multi-platform office productivity suite
8 *
9 * This file is part of OpenOffice.org.
10 *
11 * OpenOffice.org is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
14 *
15 * OpenOffice.org is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 * GNU Lesser General Public License version 3 for more details
19 * (a copy is included in the LICENSE file that accompanied this code).
20 *
21 * You should have received a copy of the GNU Lesser General Public License
22 * version 3 along with OpenOffice.org.  If not, see
23 * <http://www.openoffice.org/license.html>
24 * for a copy of the LGPLv3 License.
25 *
26 ************************************************************************/
27#ifndef __com_sun_star_beans_XMultiPropertySet_idl__
28#define __com_sun_star_beans_XMultiPropertySet_idl__
29
30#ifndef __com_sun_star_uno_XInterface_idl__
31#include <com/sun/star/uno/XInterface.idl>
32#endif
33
34#ifndef __com_sun_star_beans_XPropertySetInfo_idl__
35#include <com/sun/star/beans/XPropertySetInfo.idl>
36#endif
37
38#ifndef __com_sun_star_beans_PropertyVetoException_idl__
39#include <com/sun/star/beans/PropertyVetoException.idl>
40#endif
41
42#ifndef __com_sun_star_lang_IllegalArgumentException_idl__
43#include <com/sun/star/lang/IllegalArgumentException.idl>
44#endif
45
46#ifndef __com_sun_star_lang_WrappedTargetException_idl__
47#include <com/sun/star/lang/WrappedTargetException.idl>
48#endif
49
50#ifndef __com_sun_star_beans_XPropertiesChangeListener_idl__
51#include <com/sun/star/beans/XPropertiesChangeListener.idl>
52#endif
53
54
55//=============================================================================
56
57module com {  module sun {  module star {  module beans {
58
59//=============================================================================
60
61/** provides access to multiple properties with a single call.
62 */
63published interface XMultiPropertySet: com::sun::star::uno::XInterface
64{
65	//-------------------------------------------------------------------------
66
67	/** @returns
68			the <type>XPropertySetInfo</type> interface, which describes
69			all properties of the object to which this interface belongs.
70			<const>NULL</const> is returned if the object cannot or will
71			not provide information about the properties.
72
73		@see XPropertySet::getPropertySetInfo
74	 */
75	com::sun::star::beans::XPropertySetInfo getPropertySetInfo();
76
77	//-------------------------------------------------------------------------
78
79	/** sets the values to the properties with the specified names.
80
81		<p>The values of the properties must change before the bound
82		events are fired. The values of the constrained properties
83		should change after the vetoable events are fired and only if no
84		exception occured. Unknown properties are ignored.  </p>
85
86		@param aPropertyNames
87			specifies the names of the properties. All names must be unique.
88			This sequence must be alphabetically sorted.
89
90		@param aValues
91			contains the new values of the properties. The order is the same
92			as in <var>aPropertyNames</var>.
93
94		@throws IllegalArgumentException
95			if one of the new values cannot be converted to the type
96			of the underlying property by an identity or widening conversion.
97
98		@throws com::sun::star::lang:WrappedTargetException
99			if the implementation has an internal reason for the exception.
100			In this case the original exception is wrapped.
101	 */
102	void setPropertyValues( [in] sequence<string> aPropertyNames,
103			 [in] sequence<any> aValues )
104			raises( com::sun::star::beans::PropertyVetoException,
105					com::sun::star::lang::IllegalArgumentException,
106					com::sun::star::lang::WrappedTargetException );
107
108	//-------------------------------------------------------------------------
109
110	/** @returns
111			a sequence of all values of the properties which are specified by their names.
112
113		<p>The order of the values in the returned sequence will be the same
114		as the order of the names in the argument. </p>
115
116		@param aPropertyNames
117			specifies the names of the properties.
118			This sequence must be alphabetically sorted.
119	 */
120	sequence<any> getPropertyValues( [in] sequence<string> aPropertyNames );
121
122	//-------------------------------------------------------------------------
123
124	/** adds an <type>XPropertiesChangeListener</type> to the
125		specified property with the specified names.
126
127		<p>The implementation can ignore the names of the properties
128		and fire the event on all properties. </p>
129
130		<p>It is suggested to allow multiple registration of the same listener,
131		thus for each time a listener is added, it has to be removed.
132
133		@param aPropertyNames
134			specifies the names of the properties.
135
136		@param xListener
137			contains the listener for the property change events.
138
139		@see removePropertiesChangeListener
140	 */
141	[oneway] void addPropertiesChangeListener( [in] sequence<string> aPropertyNames,
142			 [in] com::sun::star::beans::XPropertiesChangeListener xListener );
143
144	//-------------------------------------------------------------------------
145
146	/** removes an <type>XPropertiesChangeListener</type> from the listener list.
147
148		<p>It is a "noop" if the listener is not registered.  </p>
149
150		<p>It is suggested to allow multiple registration of the same listener,
151		thus for each time a listener is added, it has to be removed.
152
153		@param
154			contains the listener to be removed.
155
156		@see addPropertiesChangeListener
157	 */
158	[oneway] void removePropertiesChangeListener( [in] com::sun::star::beans::XPropertiesChangeListener xListener );
159
160	//-------------------------------------------------------------------------
161
162	/** fires a sequence of <type>PropertyChangeEvent</type>s to the specified
163		listener.
164
165		@param aPropertynames
166			specifies the sorted names of the properties.
167
168		@param xListener
169			contains the listener for the property change events.
170	 */
171	[oneway] void firePropertiesChangeEvent( [in] sequence<string> aPropertyNames,
172			 [in] com::sun::star::beans::XPropertiesChangeListener xListener );
173
174};
175
176//=============================================================================
177
178}; }; }; };
179
180#endif
181