1d1766043SAndrew Rist/**************************************************************
2cdf0e10cSrcweir *
3d1766043SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4d1766043SAndrew Rist * or more contributor license agreements.  See the NOTICE file
5d1766043SAndrew Rist * distributed with this work for additional information
6d1766043SAndrew Rist * regarding copyright ownership.  The ASF licenses this file
7d1766043SAndrew Rist * to you under the Apache License, Version 2.0 (the
8d1766043SAndrew Rist * "License"); you may not use this file except in compliance
9d1766043SAndrew Rist * with the License.  You may obtain a copy of the License at
10d1766043SAndrew Rist *
11d1766043SAndrew Rist *   http://www.apache.org/licenses/LICENSE-2.0
12d1766043SAndrew Rist *
13d1766043SAndrew Rist * Unless required by applicable law or agreed to in writing,
14d1766043SAndrew Rist * software distributed under the License is distributed on an
15d1766043SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16d1766043SAndrew Rist * KIND, either express or implied.  See the License for the
17d1766043SAndrew Rist * specific language governing permissions and limitations
18d1766043SAndrew Rist * under the License.
19d1766043SAndrew Rist *
20d1766043SAndrew Rist *************************************************************/
21d1766043SAndrew Rist
22d1766043SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir#ifndef __offapi_com_sun_star_form_runtime_XFormController_idl__
25cdf0e10cSrcweir#define __offapi_com_sun_star_form_runtime_XFormController_idl__
26cdf0e10cSrcweir
27cdf0e10cSrcweir#include <com/sun/star/awt/XTabController.idl>
28cdf0e10cSrcweir#include <com/sun/star/container/XChild.idl>
29cdf0e10cSrcweir#include <com/sun/star/lang/XComponent.idl>
30cdf0e10cSrcweir#include <com/sun/star/container/XIndexAccess.idl>
31cdf0e10cSrcweir#include <com/sun/star/container/XEnumerationAccess.idl>
32cdf0e10cSrcweir#include <com/sun/star/util/XModifyBroadcaster.idl>
33cdf0e10cSrcweir#include <com/sun/star/util/XModeSelector.idl>
34cdf0e10cSrcweir#include <com/sun/star/form/XConfirmDeleteBroadcaster.idl>
35cdf0e10cSrcweir#include <com/sun/star/sdb/XSQLErrorBroadcaster.idl>
36cdf0e10cSrcweir#include <com/sun/star/sdb/XRowSetApproveBroadcaster.idl>
37cdf0e10cSrcweir#include <com/sun/star/form/XDatabaseParameterBroadcaster2.idl>
38cdf0e10cSrcweir#include <com/sun/star/form/XFormControllerListener.idl>
39cdf0e10cSrcweir#include <com/sun/star/task/XInteractionHandler.idl>
40cdf0e10cSrcweir#include <com/sun/star/lang/IllegalArgumentException.idl>
41cdf0e10cSrcweir#include <com/sun/star/form/runtime/XFilterController.idl>
42cdf0e10cSrcweir
43cdf0e10cSrcweir//=============================================================================
44cdf0e10cSrcweir
45cdf0e10cSrcweirmodule com { module sun { module star { module form { module runtime {
46cdf0e10cSrcweir
47cdf0e10cSrcweirinterface XFormOperations;
48cdf0e10cSrcweirinterface XFormControllerContext;
49cdf0e10cSrcweir
50cdf0e10cSrcweir//=============================================================================
51cdf0e10cSrcweir
52cdf0e10cSrcweir/** specifies a component controlling the interaction between the user and form functionality.
53cdf0e10cSrcweir
54cdf0e10cSrcweir	<p>As soon as a form (containing controls) is to be presented to the user,
55cdf0e10cSrcweir	there is a need for an instance controlling the user interaction.<br/>
56cdf0e10cSrcweir	Such a <code>FormController</code> is responsible for dialog processing,
57cdf0e10cSrcweir	like controlling the tab order and the grouping of controls.</p>
58cdf0e10cSrcweir
59cdf0e10cSrcweir	<p>As a form may contain one or many subforms, a <type>FormController</type> may
60cdf0e10cSrcweir	contain one or more other <type>FormController</type>s, so the form model structure or hierarchy
61cdf0e10cSrcweir	is reflected in the structure of <type>FormController</type>s. That is, retrieving the parent of
62cdf0e10cSrcweir    the model of a controller will give you the same object as retrieving the model of the parent of
63cdf0e10cSrcweir    the controller. Similarly, retrieving the model of the <code>n</code><sup>th</sup> child of
64cdf0e10cSrcweir    a controller gives you the same object as retrieving the <code>n</code><sup>th</sup> child of
65cdf0e10cSrcweir    the model of the controller.</p>
66cdf0e10cSrcweir
67cdf0e10cSrcweir	<p>A controller is called <em>active</em> if one of the controls it is responsible for has the focus,
68cdf0e10cSrcweir	else inactive. To be notified whenever this activation state of a given controller changes, you can
69cdf0e10cSrcweir	add listeners.</p>
70cdf0e10cSrcweir
71cdf0e10cSrcweir    <p>This interface supersedes the <type scope="com::sun::star::form">FormController</type>.</p>
72cdf0e10cSrcweir
73cdf0e10cSrcweir	<h3>Responsibilities</h3>
74cdf0e10cSrcweir    <p>A <type>FormController</type> is responsible for a <type scope="com::sun::star::awt">UnoControlContainer</type>,
75cdf0e10cSrcweir    and all controls therein.</p>
76cdf0e10cSrcweir
77cdf0e10cSrcweir    <p>Furthermore, a form controller is responsible for preventing invalid user input. That is, if the form
78cdf0e10cSrcweir    contains controls bound to a database, or to an external validator, then the form controller will
79cdf0e10cSrcweir    check their current value when the current record is to be saved to the database.</p>
80cdf0e10cSrcweir
81cdf0e10cSrcweir    <p>First, it will check whether any controls with an external validator exist. If so, those validators
82cdf0e10cSrcweir    will be asked to validate the current control content. If this fails, the message provided by the validator
83cdf0e10cSrcweir    is displayed to the user, the control is focused, and the update of the record is vetoed.</p>
84cdf0e10cSrcweir
85cdf0e10cSrcweir    <p>Second, the controls are examined for NULL values. If a control is bound to a database field which
86cdf0e10cSrcweir    is declared to be <code>NOT NULL</code>, no auto-increment field, but still <NULL/>, then an error
87cdf0e10cSrcweir    message is shown to the user saying that input is required, the respective control is focused, and
88cdf0e10cSrcweir    the update of the record is vetoed.</p>
89cdf0e10cSrcweir
90cdf0e10cSrcweir    <p>Note that you can precent the second check - for database fields containing <NULL/> values - on
91cdf0e10cSrcweir    a per-form and a per-database basis.<br/>
92cdf0e10cSrcweir    For the former, you need to add a boolean property <code>FormsCheckRequiredFields</code> to the form
93cdf0e10cSrcweir    (aka the <code>FormController</code>'s model), using its
94cdf0e10cSrcweir    <member scope="com::sun::star::beans">XPropertyContainer::addProperty</member> method, with a value
95cdf0e10cSrcweir    of <FALSE/>.<br/>
96cdf0e10cSrcweir    For the latter, you need to set the respective property of the data source's <code>Settings</code>
97cdf0e10cSrcweir    (also named <code>FormsCheckRequiredFields</code>) to <FALSE/>.</p>
98cdf0e10cSrcweir
99cdf0e10cSrcweir    <p>Alternatively, you can prevent the check on a per-control basis, using the
100cdf0e10cSrcweir    <member>DataAwareControlModel::InputRequired</member> property of a single control model.</p>
101cdf0e10cSrcweir
102cdf0e10cSrcweir    <p>If a control which the controller is responsible for supports the <type scope="com::sun::star::frame">XDispatchProviderInterception</type>
103cdf0e10cSrcweir    interface, the controller registers a dispatch interceptor. Then, the control can try to delegate part of its
104cdf0e10cSrcweir    functionality to the controller by querying the dispatch interceptor for it.</p>
105cdf0e10cSrcweir
106cdf0e10cSrcweir    <p>Below, there's a list of URLs which have a defined meaning - if an implementation supports one of them,
107cdf0e10cSrcweir    there must be a guaranteed semantices. However, concrete implementations may support an arbitrary sub or super
108cdf0e10cSrcweir    set of these URLs.</p>
109cdf0e10cSrcweir
110cdf0e10cSrcweir    <p>In general, all URLs start with the same prefix, namely <em>.uno:FormController/</em>. To this, a suffix is
111cdf0e10cSrcweir    appended which describes the requested functionality.<br/>
112cdf0e10cSrcweir    Example: The URL suffix for deleting the current record is <em>deleteRecord</em>, so the complete URL for
113cdf0e10cSrcweir    requesting a dispatcher for this functionality is <em>.uno:FormController/deleteRecord</em>.</p>
114cdf0e10cSrcweir
115cdf0e10cSrcweir    <p>Some URLs may require parameters. For this, the sequence of <type scope="com::sun::star::beans">PropertyValue</type>s
116cdf0e10cSrcweir    passed to the <member scope="com::sun::star::frame">XDispatch::dispatch</member> call is used - every property value is
117cdf0e10cSrcweir    used as one named parameter.</p>
118cdf0e10cSrcweir
119cdf0e10cSrcweir    <p>For all URLs, interested parties can register as status listeners (<type scope="com::sun::star::frame">XStatusListener</type>)
120cdf0e10cSrcweir    at the dispatchers, and be notified whenever the functionality associated with the URL becomes enabled or
121cdf0e10cSrcweir    disabled.<br/>
122cdf0e10cSrcweir    For instance, the URL with the suffix <em>moveToFirst</em> is associated with moving the form to the first
123cdf0e10cSrcweir    record, and it will be disabled in case the form is already positioned on the first record.</p>
124cdf0e10cSrcweir
125cdf0e10cSrcweir    <table style="width:100%;" border="0" cellpadding="2" cellspacing="2"><tbody>
126cdf0e10cSrcweir
127cdf0e10cSrcweir      <tr style="vertical-align: top;">
128cdf0e10cSrcweir        <td><b>URL suffix</b></td>
129cdf0e10cSrcweir        <td><b>functionality</b></td>
130cdf0e10cSrcweir      </tr>
131cdf0e10cSrcweir
132cdf0e10cSrcweir      <tr style="vertical-align: top;">
133cdf0e10cSrcweir        <td><em>positionForm</em></td>
134cdf0e10cSrcweir        <td>positions the form on a record given by absolute number.<br/>
135cdf0e10cSrcweir        There's one parameter for this functionality, named <em>Position</em>, which must be a long
136cdf0e10cSrcweir        value specifying the absolute position to which the form should be moved</td>
137cdf0e10cSrcweir      </tr>
138cdf0e10cSrcweir
139cdf0e10cSrcweir      <tr style="vertical-align: top;">
140cdf0e10cSrcweir        <td><em>RecordCount</em></td>
141cdf0e10cSrcweir        <td>This is a passive functionality: It cannot be dispatched, instead, interested parties may
142cdf0e10cSrcweir        use the dispatcher to add as <type scope="com::sun::star::frame">XStatusListener</type>, and be
143cdf0e10cSrcweir        notified when the record count changes.<br/>
144cdf0e10cSrcweir        The status value which is being notified (<member scope="com::sun::star::frame">FeatureStateEvent::State</member>)
145cdf0e10cSrcweir        is a string which can be used to display the record count. In particular, if the record count is not yet known
146cdf0e10cSrcweir        (<member scope="com::sun::star::sdb">RowSet::IsRowCountFinal</member> is <FALSE/>), this is indicated in the
147cdf0e10cSrcweir        string, too.</td>
148cdf0e10cSrcweir      </tr>
149cdf0e10cSrcweir
150cdf0e10cSrcweir      <tr style="vertical-align: top;">
151cdf0e10cSrcweir        <td><em>moveToFirst</em></td>
152cdf0e10cSrcweir        <td>moves the form to the first record</td>
153cdf0e10cSrcweir      </tr>
154cdf0e10cSrcweir
155cdf0e10cSrcweir      <tr style="vertical-align: top;">
156cdf0e10cSrcweir        <td><em>moveToPrev</em></td>
157cdf0e10cSrcweir        <td>moves the form to the record preceding the current one</td>
158cdf0e10cSrcweir      </tr>
159cdf0e10cSrcweir
160cdf0e10cSrcweir      <tr style="vertical-align: top;">
161cdf0e10cSrcweir        <td><em>moveToNext</em></td>
162cdf0e10cSrcweir        <td>moves the form to the record after the current one</td>
163cdf0e10cSrcweir      </tr>
164cdf0e10cSrcweir
165cdf0e10cSrcweir      <tr style="vertical-align: top;">
166cdf0e10cSrcweir        <td><em>moveToLast</em></td>
167cdf0e10cSrcweir        <td>moves the form to the last record</td>
168cdf0e10cSrcweir      </tr>
169cdf0e10cSrcweir
170cdf0e10cSrcweir      <tr style="vertical-align: top;">
171cdf0e10cSrcweir        <td><em>moveToNew</em></td>
172cdf0e10cSrcweir        <td>moves the form to the virtual "insert row", where new records can be inserted</td>
173cdf0e10cSrcweir      </tr>
174cdf0e10cSrcweir
175cdf0e10cSrcweir      <tr style="vertical-align: top;">
176cdf0e10cSrcweir        <td><em>saveRecord</em></td>
177cdf0e10cSrcweir        <td>Commits any potentially pending changes in the current control, and saves the current record to
178cdf0e10cSrcweir        the database, or inserts a new record if the form is currently positioned on the virtual insertion row.</td>
179cdf0e10cSrcweir      </tr>
180cdf0e10cSrcweir
181cdf0e10cSrcweir      <tr style="vertical-align: top;">
182cdf0e10cSrcweir        <td><em>undoRecord</em></td>
183cdf0e10cSrcweir        <td>reverts the changes done to the current record. Basically, this means refreshing the
184cdf0e10cSrcweir        current row from the database, and updating all controls with the new content.</td>
185cdf0e10cSrcweir      </tr>
186cdf0e10cSrcweir
187cdf0e10cSrcweir      <tr style="vertical-align: top;">
188cdf0e10cSrcweir        <td><em>deleteRecord</em></td>
189cdf0e10cSrcweir        <td>deletes the current record, after asking the user for confirmation.</td>
190cdf0e10cSrcweir      </tr>
191cdf0e10cSrcweir
192cdf0e10cSrcweir      <tr style="vertical-align: top;">
193cdf0e10cSrcweir        <td><em>refreshForm</em></td>
194cdf0e10cSrcweir        <td>reloads the complete form. After this, the form is positioned on the first record</td>
195cdf0e10cSrcweir      </tr>
196cdf0e10cSrcweir
197cdf0e10cSrcweir      <tr style="vertical-align: top;">
198cdf0e10cSrcweir        <td><em>sortUp</em></td>
199cdf0e10cSrcweir        <td>Adds an order clause to the form, to sort it ascending by the field which the current control is bound to,
200cdf0e10cSrcweir        and then reloads the form.</td>
201cdf0e10cSrcweir      </tr>
202cdf0e10cSrcweir
203cdf0e10cSrcweir      <tr style="vertical-align: top;">
204cdf0e10cSrcweir        <td><em>sortDown</em></td>
205cdf0e10cSrcweir        <td>Adds an order clause to the form, to sort it descending by the field which the current control is bound to,
206cdf0e10cSrcweir        and then reloads the form.</td>
207cdf0e10cSrcweir      </tr>
208cdf0e10cSrcweir
209cdf0e10cSrcweir      <tr style="vertical-align: top;">
210cdf0e10cSrcweir        <td><em>sort</em></td>
211cdf0e10cSrcweir        <td>opens an dialog, which allows the user to manipulate the current sorting order of the form. If the dialog
212cdf0e10cSrcweir        is closed with OK, the form is reloaded after setting the new sorting order.</td>
213cdf0e10cSrcweir      </tr>
214cdf0e10cSrcweir
215cdf0e10cSrcweir      <tr style="vertical-align: top;">
216cdf0e10cSrcweir        <td><em>autoFilter</em></td>
217cdf0e10cSrcweir        <td>creates, from the current control, a filter for the form. This is, if the current control is bound to
218cdf0e10cSrcweir        the field, say, "customer", and contains the value "Furs, Inc.", then a filter "customer = 'Furs, Inc.'"
219cdf0e10cSrcweir        is created and set at the form. After this, the form is reloaded.</td>
220cdf0e10cSrcweir      </tr>
221cdf0e10cSrcweir
222cdf0e10cSrcweir      <tr style="vertical-align: top;">
223cdf0e10cSrcweir        <td><em>filter</em></td>
224cdf0e10cSrcweir        <td>opens an dialog, which allows the user to manipulate the current filter of the form. If the dialog
225cdf0e10cSrcweir        is closed with OK, the form is reloaded after setting the new filter.</td>
226cdf0e10cSrcweir      </tr>
227cdf0e10cSrcweir
228cdf0e10cSrcweir      <tr style="vertical-align: top;">
229cdf0e10cSrcweir        <td><em>applyFilter</em></td>
230cdf0e10cSrcweir        <td><p>Toggles the <member scope="com::sun::star::sdb">RowSet::ApplyFilter</member> property
231cdf0e10cSrcweir        of the form.</p>
232cdf0e10cSrcweir        <p>Additionally, status listeners will be provided with the current (boolean) state of this property
233cdf0e10cSrcweir        in the <member scope="com::sun::star::frame">FeatureStateEvent::State</member> member of the event
234cdf0e10cSrcweir        notified by the dispatcher.</p></td>
235cdf0e10cSrcweir      </tr>
236cdf0e10cSrcweir
237cdf0e10cSrcweir      <tr style="vertical-align: top;">
238cdf0e10cSrcweir        <td><em>removeFilterOrder</em></td>
239cdf0e10cSrcweir        <td>completely removes any filter and sorting order from the form, and reloads it.</td>
240cdf0e10cSrcweir      </tr>
241cdf0e10cSrcweir
242cdf0e10cSrcweir    </tbody></table>
243cdf0e10cSrcweir
244cdf0e10cSrcweir    @see ::com::sun::star::form::component:Form
245cdf0e10cSrcweir    @see ::com::sun::star::form::binding::BindableControlModel
246cdf0e10cSrcweir    @see ::com::sun::star::sdb::DataSource::Settings
247cdf0e10cSrcweir
248*96af39f7SJürgen Schmidt    @since OpenOffice 3.3
249cdf0e10cSrcweir */
250cdf0e10cSrcweirinterface XFormController
251cdf0e10cSrcweir{
252cdf0e10cSrcweir	/** is used for tab controlling and grouping of the controls.
253cdf0e10cSrcweir
254cdf0e10cSrcweir        <p>The model obtained via <member scope="com::sun::star::awt">XTabController::getModel</member> is the form for which the
255cdf0e10cSrcweir        controller is responsible.</p>
256cdf0e10cSrcweir	 */
257cdf0e10cSrcweir	interface ::com::sun::star::awt::XTabController;
258cdf0e10cSrcweir
259cdf0e10cSrcweir    /** allows access to the parent controller.
260cdf0e10cSrcweir	 */
261cdf0e10cSrcweir	interface ::com::sun::star::container::XChild;
262cdf0e10cSrcweir
263cdf0e10cSrcweir	/** allows access to the sub controllers.
264cdf0e10cSrcweir	 */
265cdf0e10cSrcweir	interface ::com::sun::star::container::XIndexAccess;
266cdf0e10cSrcweir
267cdf0e10cSrcweir    /** allows enumerating sub controllers
268cdf0e10cSrcweir     */
269cdf0e10cSrcweir    interface ::com::sun::star::container::XEnumerationAccess;
270cdf0e10cSrcweir
271cdf0e10cSrcweir    /** allows life time control of the controller.
272cdf0e10cSrcweir	 */
273cdf0e10cSrcweir	interface ::com::sun::star::lang::XComponent;
274cdf0e10cSrcweir
275cdf0e10cSrcweir    /** allows to register as listener for modifications in the controls which the controller is responsible
276cdf0e10cSrcweir        for.
277cdf0e10cSrcweir     */
278cdf0e10cSrcweir    interface ::com::sun::star::util::XModifyBroadcaster;
279cdf0e10cSrcweir
280cdf0e10cSrcweir    /** used to notify deletions of data in the form before they happen.
281cdf0e10cSrcweir
282cdf0e10cSrcweir		<p>A form controller listens for deletion events at the form it is responsible for. If and only if no
283cdf0e10cSrcweir        <type scope="com::sun::star::form">XConfirmDeleteListener</type> is registered at
284cdf0e10cSrcweir		the controller, it uses an own dialog to ask the user for confirmation.</p>
285cdf0e10cSrcweir	*/
286cdf0e10cSrcweir    interface ::com::sun::star::form::XConfirmDeleteBroadcaster;
287cdf0e10cSrcweir
288cdf0e10cSrcweir	/** is used to notify errors which happen in the form the controller is responsible for.
289cdf0e10cSrcweir
290cdf0e10cSrcweir		<p>A form controller listens for error events at the form it is responsible for. If and only if no
291cdf0e10cSrcweir        <type scope="com::sun::star::sdb">XSQLErrorListener</type> is registered at the controller, it
292cdf0e10cSrcweir		uses an own dialog to notify the user of the error.</p>
293cdf0e10cSrcweir
294cdf0e10cSrcweir	*/
295cdf0e10cSrcweir	interface ::com::sun::star::sdb::XSQLErrorBroadcaster;
296cdf0e10cSrcweir
297cdf0e10cSrcweir    /** is used for multiplexing row set events happening on the form which the controller is responsible for.
298cdf0e10cSrcweir	*/
299cdf0e10cSrcweir	interface ::com::sun::star::sdb::XRowSetApproveBroadcaster;
300cdf0e10cSrcweir
301cdf0e10cSrcweir    /** is used broadcasting parameter events in the form.
302cdf0e10cSrcweir
303cdf0e10cSrcweir		<p>A form controller listens for parameter events at the form it is responsible for. If and only if no
304cdf0e10cSrcweir        <type scope="com::sun::star::form">XDatabaseParameterListener</type> is registered at the controller, it
305cdf0e10cSrcweir        uses an own dialog to ask the user for parameter values.</p>
306cdf0e10cSrcweir	*/
307cdf0e10cSrcweir	interface ::com::sun::star::form::XDatabaseParameterBroadcaster2;
308cdf0e10cSrcweir
309cdf0e10cSrcweir    /** allows switching the form controller to different operation modes.
310cdf0e10cSrcweir
311cdf0e10cSrcweir        <a name="mode_selector"></a>
312cdf0e10cSrcweir        <p>The two modes usually (but not necessarily) supported by a form controller are the <code>DataMode</code>
313cdf0e10cSrcweir        and the <code>FilterMode</code>, where the former is the usual modus operandi for displaying and modifying
314cdf0e10cSrcweir        data, and the latter is a special mode to enter a filter for the database form which the controller is
315cdf0e10cSrcweir        responsible for.</p>
316cdf0e10cSrcweir    */
317cdf0e10cSrcweir    interface ::com::sun::star::util::XModeSelector;
318cdf0e10cSrcweir
319cdf0e10cSrcweir    /** allows controlling the filter mode.
320cdf0e10cSrcweir
321cdf0e10cSrcweir        <p>If the form controller supports a <a href="#mode_selector">form based filter mode</a>, then it shall also
322cdf0e10cSrcweir        support the <type>XFilterController</type> interface, which allows controlling this mode.</p>
323cdf0e10cSrcweir    */
324cdf0e10cSrcweir    [optional] interface XFilterController;
325cdf0e10cSrcweir
326cdf0e10cSrcweir    /** denotes the instance which is used to implement operations on the form which the controller
327cdf0e10cSrcweir        works for.
328cdf0e10cSrcweir
329cdf0e10cSrcweir        <p>This instance can be used, for instance, to determine the current state of certain form features.</p>
330cdf0e10cSrcweir    */
331cdf0e10cSrcweir    [attribute, readonly] XFormOperations FormOperations;
332cdf0e10cSrcweir
333cdf0e10cSrcweir	/** provicdes access to the currently active control
334cdf0e10cSrcweir      */
335cdf0e10cSrcweir    [attribute, readonly] ::com::sun::star::awt::XControl CurrentControl;
336cdf0e10cSrcweir
337cdf0e10cSrcweir    /** allows to delegate certain tasks to the context of the form controller
338cdf0e10cSrcweir    */
339cdf0e10cSrcweir    [attribute] XFormControllerContext  Context;
340cdf0e10cSrcweir
341cdf0e10cSrcweir    /** used (if not <NULL/>) for user interactions triggered by the form controller.
342cdf0e10cSrcweir    */
343cdf0e10cSrcweir    [attribute] ::com::sun::star::task::XInteractionHandler InteractionHandler;
344cdf0e10cSrcweir
345cdf0e10cSrcweir    /** adds the specified listener to receive notifications whenever the activation state of
346cdf0e10cSrcweir		the controller changes.
347cdf0e10cSrcweir	 */
348cdf0e10cSrcweir    void addActivateListener( [in] ::com::sun::star::form::XFormControllerListener _Listener );
349cdf0e10cSrcweir
350cdf0e10cSrcweir    /** removes the specified listener from the list of components to receive notifications whenever the activation
351cdf0e10cSrcweir        state of the controller changes.
352cdf0e10cSrcweir	 */
353cdf0e10cSrcweir    void removeActivateListener( [in] ::com::sun::star::form::XFormControllerListener _Listener );
354cdf0e10cSrcweir
355cdf0e10cSrcweir    /** adds a controller to the list of child controllers
356cdf0e10cSrcweir        @throws ::com::sun::star::lang::IllegalArgumentException
357cdf0e10cSrcweir            if the given controller is <NULL/>, or cannot rightfully be a child controller. Since controllers
358cdf0e10cSrcweir            mirror the hierarchy of the forms the are responsible for, this means that the form of the given
359cdf0e10cSrcweir            child controller must be a child of the controller at which the method is invoked.
360cdf0e10cSrcweir    */
361cdf0e10cSrcweir    void addChildController( [in] XFormController _ChildController )
362cdf0e10cSrcweir        raises ( ::com::sun::star::lang::IllegalArgumentException );
363cdf0e10cSrcweir};
364cdf0e10cSrcweir
365cdf0e10cSrcweir//=============================================================================
366cdf0e10cSrcweir
367cdf0e10cSrcweir}; }; }; }; };
368cdf0e10cSrcweir
369cdf0e10cSrcweir//=============================================================================
370cdf0e10cSrcweir
371cdf0e10cSrcweir#endif
372