summaryrefslogtreecommitdiff
path: root/offapi/com
diff options
context:
space:
mode:
authorKurt Zenker <kz@openoffice.org>2010-01-15 14:01:24 +0100
committerKurt Zenker <kz@openoffice.org>2010-01-15 14:01:24 +0100
commitb302557d02c2b60a9f9aaa4efc94716c844b83b9 (patch)
tree2c39934afb527e14cb75f42c24366e4294966ba9 /offapi/com
parentf32a3036af4d9fdb6ba20f262b8d63f3be1df3df (diff)
parentc7e95706a4954e3c173884b2fb4a6933cc4407ee (diff)
CWS-TOOLING: integrate CWS dba33b
Diffstat (limited to 'offapi/com')
-rw-r--r--offapi/com/sun/star/awt/UnoControlCurrencyFieldModel.idl11
-rw-r--r--offapi/com/sun/star/awt/UnoControlDateFieldModel.idl11
-rw-r--r--offapi/com/sun/star/awt/UnoControlEditModel.idl11
-rw-r--r--offapi/com/sun/star/awt/UnoControlFileControlModel.idl10
-rw-r--r--offapi/com/sun/star/awt/UnoControlFormattedFieldModel.idl11
-rw-r--r--offapi/com/sun/star/awt/UnoControlNumericFieldModel.idl11
-rw-r--r--offapi/com/sun/star/awt/UnoControlPatternFieldModel.idl11
-rw-r--r--offapi/com/sun/star/awt/UnoControlTimeFieldModel.idl11
-rw-r--r--offapi/com/sun/star/form/FormController.idl105
-rw-r--r--offapi/com/sun/star/form/FormControllerDispatcher.idl170
-rw-r--r--offapi/com/sun/star/form/XFormController.idl53
-rw-r--r--offapi/com/sun/star/form/runtime/FilterEvent.idl64
-rw-r--r--offapi/com/sun/star/form/runtime/FormController.idl51
-rw-r--r--offapi/com/sun/star/form/runtime/FormOperations.idl4
-rw-r--r--offapi/com/sun/star/form/runtime/XFilterController.idl180
-rw-r--r--offapi/com/sun/star/form/runtime/XFilterControllerListener.idl84
-rw-r--r--offapi/com/sun/star/form/runtime/XFormController.idl373
-rw-r--r--offapi/com/sun/star/form/runtime/XFormControllerContext.idl57
-rw-r--r--offapi/com/sun/star/form/runtime/XFormOperations.idl6
-rw-r--r--offapi/com/sun/star/form/runtime/makefile.mk8
-rw-r--r--offapi/com/sun/star/sdb/DataSourceBrowser.idl6
-rw-r--r--offapi/com/sun/star/sdb/DatabaseContext.idl17
-rw-r--r--offapi/com/sun/star/sdb/DatabaseRegistrationEvent.idl60
-rw-r--r--offapi/com/sun/star/sdb/XDatabaseAccess.idl49
-rw-r--r--offapi/com/sun/star/sdb/XDatabaseAccessListener.idl35
-rw-r--r--offapi/com/sun/star/sdb/XDatabaseEnvironment.idl27
-rw-r--r--offapi/com/sun/star/sdb/XDatabaseRegistrations.idl158
-rw-r--r--offapi/com/sun/star/sdb/XDatabaseRegistrationsListener.idl70
-rw-r--r--offapi/com/sun/star/sdb/makefile.mk3
-rw-r--r--offapi/com/sun/star/view/XFormLayerAccess.idl8
30 files changed, 1236 insertions, 439 deletions
diff --git a/offapi/com/sun/star/awt/UnoControlCurrencyFieldModel.idl b/offapi/com/sun/star/awt/UnoControlCurrencyFieldModel.idl
index 17f72a2be100..6a7a49b826df 100644
--- a/offapi/com/sun/star/awt/UnoControlCurrencyFieldModel.idl
+++ b/offapi/com/sun/star/awt/UnoControlCurrencyFieldModel.idl
@@ -42,6 +42,9 @@
#include <com/sun/star/util/Color.idl>
#endif
+#ifndef __com_sun_star_style_VerticalAlignment_idl__
+#include <com/sun/star/style/VerticalAlignment.idl>
+#endif
//=============================================================================
@@ -262,6 +265,14 @@ published service UnoControlCurrencyFieldModel
this is possible.</p>
*/
[optional, property] short MouseWheelBehavior;
+
+ //-------------------------------------------------------------------------
+
+ /** specifies the vertical alignment of the text in the control.
+
+ @since OpenOffice.org 3.3
+ */
+ [optional, property] com::sun::star::style::VerticalAlignment VerticalAlign;
};
//=============================================================================
diff --git a/offapi/com/sun/star/awt/UnoControlDateFieldModel.idl b/offapi/com/sun/star/awt/UnoControlDateFieldModel.idl
index d14f602e817a..e5f8207e1ae9 100644
--- a/offapi/com/sun/star/awt/UnoControlDateFieldModel.idl
+++ b/offapi/com/sun/star/awt/UnoControlDateFieldModel.idl
@@ -42,6 +42,9 @@
#include <com/sun/star/util/Color.idl>
#endif
+#ifndef __com_sun_star_style_VerticalAlignment_idl__
+#include <com/sun/star/style/VerticalAlignment.idl>
+#endif
//=============================================================================
@@ -274,6 +277,14 @@ published service UnoControlDateFieldModel
this is possible.</p>
*/
[optional, property] short MouseWheelBehavior;
+
+ //-------------------------------------------------------------------------
+
+ /** specifies the vertical alignment of the text in the control.
+
+ @since OpenOffice.org 3.3
+ */
+ [optional, property] com::sun::star::style::VerticalAlignment VerticalAlign;
};
//=============================================================================
diff --git a/offapi/com/sun/star/awt/UnoControlEditModel.idl b/offapi/com/sun/star/awt/UnoControlEditModel.idl
index 705c9f206030..708af3edaaca 100644
--- a/offapi/com/sun/star/awt/UnoControlEditModel.idl
+++ b/offapi/com/sun/star/awt/UnoControlEditModel.idl
@@ -42,6 +42,9 @@
#include <com/sun/star/util/Color.idl>
#endif
+#ifndef __com_sun_star_style_VerticalAlignment_idl__
+#include <com/sun/star/style/VerticalAlignment.idl>
+#endif
//=============================================================================
@@ -274,6 +277,14 @@ published service UnoControlEditModel
@since OOo 3.1
*/
[optional, property] short WritingMode;
+
+ //-------------------------------------------------------------------------
+
+ /** specifies the vertical alignment of the text in the control.
+
+ @since OpenOffice.org 3.3
+ */
+ [optional, property] com::sun::star::style::VerticalAlignment VerticalAlign;
};
//=============================================================================
diff --git a/offapi/com/sun/star/awt/UnoControlFileControlModel.idl b/offapi/com/sun/star/awt/UnoControlFileControlModel.idl
index eafde096fd73..aba49c351400 100644
--- a/offapi/com/sun/star/awt/UnoControlFileControlModel.idl
+++ b/offapi/com/sun/star/awt/UnoControlFileControlModel.idl
@@ -42,6 +42,9 @@
#include <com/sun/star/util/Color.idl>
#endif
+#ifndef __com_sun_star_style_VerticalAlignment_idl__
+#include <com/sun/star/style/VerticalAlignment.idl>
+#endif
//=============================================================================
@@ -169,6 +172,13 @@ published service UnoControlFileControlModel
*/
[property] com::sun::star::util::Color TextLineColor;
+ //-------------------------------------------------------------------------
+
+ /** specifies the vertical alignment of the text in the control.
+
+ @since OpenOffice.org 3.3
+ */
+ [optional, property] com::sun::star::style::VerticalAlignment VerticalAlign;
};
//=============================================================================
diff --git a/offapi/com/sun/star/awt/UnoControlFormattedFieldModel.idl b/offapi/com/sun/star/awt/UnoControlFormattedFieldModel.idl
index 1575e1f6d6a6..a4c8bff2db3f 100644
--- a/offapi/com/sun/star/awt/UnoControlFormattedFieldModel.idl
+++ b/offapi/com/sun/star/awt/UnoControlFormattedFieldModel.idl
@@ -46,6 +46,9 @@
#include <com/sun/star/util/XNumberFormatsSupplier.idl>
#endif
+#ifndef __com_sun_star_style_VerticalAlignment_idl__
+#include <com/sun/star/style/VerticalAlignment.idl>
+#endif
//=============================================================================
@@ -307,6 +310,14 @@ published service UnoControlFormattedFieldModel
this is possible.</p>
*/
[optional, property] short MouseWheelBehavior;
+
+ //-------------------------------------------------------------------------
+
+ /** specifies the vertical alignment of the text in the control.
+
+ @since OpenOffice.org 3.3
+ */
+ [optional, property] com::sun::star::style::VerticalAlignment VerticalAlign;
};
//=============================================================================
diff --git a/offapi/com/sun/star/awt/UnoControlNumericFieldModel.idl b/offapi/com/sun/star/awt/UnoControlNumericFieldModel.idl
index 4846980a974c..8db4dec74d4b 100644
--- a/offapi/com/sun/star/awt/UnoControlNumericFieldModel.idl
+++ b/offapi/com/sun/star/awt/UnoControlNumericFieldModel.idl
@@ -42,6 +42,9 @@
#include <com/sun/star/util/Color.idl>
#endif
+#ifndef __com_sun_star_style_VerticalAlignment_idl__
+#include <com/sun/star/style/VerticalAlignment.idl>
+#endif
//=============================================================================
@@ -250,6 +253,14 @@ published service UnoControlNumericFieldModel
this is possible.</p>
*/
[optional, property] short MouseWheelBehavior;
+
+ //-------------------------------------------------------------------------
+
+ /** specifies the vertical alignment of the text in the control.
+
+ @since OpenOffice.org 3.3
+ */
+ [optional, property] com::sun::star::style::VerticalAlignment VerticalAlign;
};
//=============================================================================
diff --git a/offapi/com/sun/star/awt/UnoControlPatternFieldModel.idl b/offapi/com/sun/star/awt/UnoControlPatternFieldModel.idl
index b3bb7691e333..a155588191ca 100644
--- a/offapi/com/sun/star/awt/UnoControlPatternFieldModel.idl
+++ b/offapi/com/sun/star/awt/UnoControlPatternFieldModel.idl
@@ -42,6 +42,9 @@
#include <com/sun/star/util/Color.idl>
#endif
+#ifndef __com_sun_star_style_VerticalAlignment_idl__
+#include <com/sun/star/style/VerticalAlignment.idl>
+#endif
//=============================================================================
@@ -209,6 +212,14 @@ published service UnoControlPatternFieldModel
this is possible.</p>
*/
[optional, property] short MouseWheelBehavior;
+
+ //-------------------------------------------------------------------------
+
+ /** specifies the vertical alignment of the text in the control.
+
+ @since OpenOffice.org 3.3
+ */
+ [optional, property] com::sun::star::style::VerticalAlignment VerticalAlign;
};
//=============================================================================
diff --git a/offapi/com/sun/star/awt/UnoControlTimeFieldModel.idl b/offapi/com/sun/star/awt/UnoControlTimeFieldModel.idl
index 79bed704660f..0412ebc8c129 100644
--- a/offapi/com/sun/star/awt/UnoControlTimeFieldModel.idl
+++ b/offapi/com/sun/star/awt/UnoControlTimeFieldModel.idl
@@ -42,6 +42,9 @@
#include <com/sun/star/util/Color.idl>
#endif
+#ifndef __com_sun_star_style_VerticalAlignment_idl__
+#include <com/sun/star/style/VerticalAlignment.idl>
+#endif
//=============================================================================
@@ -254,6 +257,14 @@ published service UnoControlTimeFieldModel
this is possible.</p>
*/
[optional, property] short MouseWheelBehavior;
+
+ //-------------------------------------------------------------------------
+
+ /** specifies the vertical alignment of the text in the control.
+
+ @since OpenOffice.org 3.3
+ */
+ [optional, property] com::sun::star::style::VerticalAlignment VerticalAlign;
};
//=============================================================================
diff --git a/offapi/com/sun/star/form/FormController.idl b/offapi/com/sun/star/form/FormController.idl
index 03e4bffc2074..4bd94946f1c1 100644
--- a/offapi/com/sun/star/form/FormController.idl
+++ b/offapi/com/sun/star/form/FormController.idl
@@ -84,127 +84,26 @@ module runtime {
//=============================================================================
-/** specifies a component controlling the interaction between the user and form functionality.
-
- <p>As soon as a form (containing controls) is to be presented to the user,
- there is a need for an instance controlling the user interaction.<br/>
- Such a <type>FormController</type> is responsible for dialog processing,
- like controlling the tab order and the grouping of controls.</p>
-
- <p>As a form may contain one or many subforms, a <type>FormController</type> may
- contain one or more other <type>FormController</type>s, so the form model structure or hierarchy
- is reflected in the structure of <type>FormController</type>s.</p>
-
- <h3>Responsibilities</h3>
- <p>A <type>FormController</type> is responsible for a <type scope="com::sun::star::awt">UnoControlContainer</type>,
- and all controls therein.</p>
-
- <p>Furthermore, a form controller is responsible for preventing invalid user input. That is, if the form
- contains controls bound to a database, or to an external validator, then the form controller will
- check their current value when the current record is to be saved to the database.</p>
-
- <p>First, it will check whether any controls with an external validator exist. If so, those validators
- will be asked to validate the current control content. If this fails, the message provided by the validator
- is displayed to the user, the control is focused, and the update of the record is vetoed.</p>
-
- <p>Second, the controls are examined for NULL values. If a control is bound to a database field which
- is declared to be <code>NOT NULL</code>, no auto-increment field, but still <NULL/>, then an error
- message is shown to the user saying that input is required, the respective control is focused, and
- the update of the record is vetoed.</p>
-
- <p>Note that you can precent the second check - for database fields containing <NULL/> values - on
- a per-form and a per-database basis.<br/>
- For the former, you need to add a boolean property <code>FormsCheckRequiredFields</code> to the form
- (aka the <code>FormController</code>'s model), using its
- <member scope="com::sun::star::beans">XPropertyContainer::addProperty</member> method, with a value
- of <FALSE/>.<br/>
- For the latter, you need to set the respective property of the data source's <code>Settings</code>
- (also named <code>FormsCheckRequiredFields</code>) to <FALSE/>.</p>
-
- <p>Alternatively, you can prevent the check on a per-control basis, using the
- <member>DataAwareControlModel::InputRequired</member> property of a single control model.</p>
-
- @see com::sun::star::form::component:Form
- @see com::sun::star::awt::XTabController
- @see com::sun::star::form::binding::BindableControlModel
- @see com::sun::star::sdb::DataSource::Settings
+/** is superseded by <type scope="com::sun::star::form::runtime">FormController</type>.
+ @deprecated
*/
published service FormController
{
- /** allows delegating form controller functionality to the component
-
- <p>If a control which the controller is responsible for supports the <type scope="com::sun::star::frame">XDispatchProviderInterception</type>
- interface, the controller registers a dispatch interceptor. Then, the control can try to delegate part of its
- functionality to the controller by querying the dispatch interceptor for it.</p>
- */
[optional] service FormControllerDispatcher;
-
- /** denotes the instance which is used to implement operations on the form which the controller
- works for.
-
- <p>This instance can be used, for instance, to determine the current state of certain form features.</p>
- */
[optional, property] ::com::sun::star::form::runtime::XFormOperations FormOperations;
/** is used for notifying the (de)activation of the controller.
*/
interface com::sun::star::form::XFormController;
-
- /** is used for tab controlling and grouping of the controls.
- */
interface com::sun::star::awt::XTabController;
-
-
- /** A FormController may have a parent controller, such as when the related form is a subform.
- */
interface com::sun::star::container::XChild;
-
-
- /** A FormController must be disposable.
- */
interface com::sun::star::lang::XComponent;
-
-
- /** A FormController must provide access to its sub controllers.
- */
interface com::sun::star::container::XEnumerationAccess;
-
-
- /** A FormController must communicate if any of its children (means sub controllers) or contained
- controls have been modified.
- */
interface com::sun::star::util::XModifyBroadcaster;
-
- /** used to notify deletions of data in the form before they happen.
-
- <p>A form controller listens for deletion events at the form it is responsible for.<br/>
- If and only if no <type>XConfirmDeleteListener</type> is registered at
- the controller, it uses an own dialog to ask the user for confirmation.</p>
-
- <p>You may use this interface to integrate your own confirmation dialogs.</p>
- */
interface com::sun::star::form::XConfirmDeleteBroadcaster;
-
- /** used to notify errors which happen in the form the controller is responsible for.
-
- <p>A form controller listens for error events at the form it is responsible for.<br/>
- If and only if no <type scope="com::sun::star::sdb">XSQLErrorListener</type> is registered at the controller, it
- uses an own dialog to notify the user of the error.</p>
-
- */
interface com::sun::star::sdb::XSQLErrorBroadcaster;
-
- /** is used for multiplexing row set events happening on the form which the controller is responsible for.
- */
interface com::sun::star::sdb::XRowSetApproveBroadcaster;
-
- /** is used broadcasting parameter events in the form.
-
- <p>A form controller listens for parameter events at the form it is responsible for.<br/>
- If and only if no <type>XDatabaseParameterListener</type> is registered at the controller, it
- uses an own dialog to ask the user for parameter values.</p>
- */
interface com::sun::star::form::XDatabaseParameterBroadcaster;
};
diff --git a/offapi/com/sun/star/form/FormControllerDispatcher.idl b/offapi/com/sun/star/form/FormControllerDispatcher.idl
index 96cab9ee73f1..8e2513b62102 100644
--- a/offapi/com/sun/star/form/FormControllerDispatcher.idl
+++ b/offapi/com/sun/star/form/FormControllerDispatcher.idl
@@ -40,177 +40,13 @@ module com { module sun { module star { module form {
//=============================================================================
-/** specifies a component which can be used to dispatch form controller functionality.
+/** is not used anymore, and superseded by <type scope="com::sun::star::form::runtime">FormController</type> and
+ <type scope="com::sun::star::form::runtime">FormOperations</type>.
- <p>A form controller dispatcher is an instance which provides access to dispatchers
- (<type scope="com::sun::star::frame">XDispatch</type>) for certain form controller
- functionality.</p>
-
- <p>The way how access to these dispatchers is provided is not defined. It may either
- be directly via an <type scope="com::sun::star::frame">XDispatchProvider</type> interface,
- or indirectly, e.g. by registering dispatch interceptors (<type scope="com::sun::star::frame">XDispatchProviderInterceptor</type>)
- at another instance which supports this (by exposing the <type scope="com::sun::star::frame">XDispatchProviderInterception</type>
- interface).</p>
-
- <p>In any scenario, foreign components have a (implicit or explicit) possibility to request a dispatcher
- for a given URL.</p>
-
- <p>Below, there's a list of URLs which have a defined meaning - if a <type>FormControllerDispatcher</type>
- implementation supports one of them, there must be a guaranteed semantices. However, concrete implementations
- may support an arbitrary sub or super set of these URLs.</p>
-
- <p>In general, all URLs start with the same prefix, namely <em>.uno:FormController/</em>. To this, a suffix is
- appended which describes the requested functionality.<br/>
- Example: The URL suffix for deleting the current record is <em>deleteRecord</em>, so the complete URL for
- requesting a dispatcher for this functionality is <em>.uno:FormController/deleteRecord</em>.</p>
-
- <p>Some URLs may require parameters. For this, the sequence of <type scope="com::sun::star::beans">PropertyValue</type>s
- passed to the <member scope="com::sun::star::frame">XDispatch::dispatch</member> call is used - every property value is
- used as one named parameter.</p>
-
- <p>For all URLs, interested parties can register as status listeners (<type scope="com::sun::star::frame">XStatusListener</type>)
- at the dispatchers, and be notified whenever the functionality associated with the URL becomes enabled or
- disabled.<br/>
- For instance, the URL with the suffix <em>moveToFirst</em> is associated with moving the form to the first
- record, and it will be disabled in case the form is already positioned on the first record.</p>
-
- <p>Nearly all of the functionality offered by a <type>FormControllerDispatcher</type> can also be
- reached by other means. E.g., moving a form to its first record can be achieved by calling the
- method <member scope="com::sun::star::sdbc">XResultSet::first</member> of the form.<br/>
- However, the advantage of using a <type>FormControllerDispatcher</type> is that it's usually implemented
- by a component which has additional knowledge about the form. For instance, in a document which
- displays a form, there might be a control which contains uncommitted changes, plus a control
- whose changes were already committed to the current record, but <em>not</em> to the database. Simply
- calling <member scope="com::sun::star::sdbc">XResultSet::first</member> on the form would lose
- both the content in the uncommitted control, and the changes in the current record.<br/>
- An <type>FormControllerDispatcher</type> is expected to care for both of these.</p>
-
- <table style="width:100%;" border="0" cellpadding="2" cellspacing="2"><tbody>
-
- <tr style="vertical-align: top;">
- <td><b>URL suffix</b></td>
- <td><b>functionality</b></td>
- </tr>
-
- <tr style="vertical-align: top;">
- <td><em>positionForm</em></td>
- <td>positions the form on a record given by absolute number.<br/>
- There's one parameter for this functionality, named <em>Position</em>, which must be a long
- value specifying the absolute position to which the form should be moved</td>
- </tr>
-
- <tr style="vertical-align: top;">
- <td><em>RecordCount</em></td>
- <td>This is a passive functionality: It cannot be dispatched, instead, interested parties may
- use the dispatcher to add as <type scope="com::sun::star::frame">XStatusListener</type>, and be
- notified when the record count changes.<br/>
- The status value which is being notified (<member scope="com::sun::star::frame">FeatureStateEvent::State</member>)
- is a string which can be used to display the record count. In particular, if the record count is not yet known
- (<member scope="com::sun::star::sdb">RowSet::IsRowCountFinal</member> is <FALSE/>), this is indicated in the
- string, too.</td>
- </tr>
-
- <tr style="vertical-align: top;">
- <td><em>moveToFirst</em></td>
- <td>moves the form to the first record</td>
- </tr>
-
- <tr style="vertical-align: top;">
- <td><em>moveToPrev</em></td>
- <td>moves the form to the record preceding the current one</td>
- </tr>
-
- <tr style="vertical-align: top;">
- <td><em>moveToNext</em></td>
- <td>moves the form to the record after the current one</td>
- </tr>
-
- <tr style="vertical-align: top;">
- <td><em>moveToLast</em></td>
- <td>moves the form to the last record</td>
- </tr>
-
- <tr style="vertical-align: top;">
- <td><em>moveToNew</em></td>
- <td>moves the form to the virtual "insert row", where new records can be inserted</td>
- </tr>
-
- <tr style="vertical-align: top;">
- <td><em>saveRecord</em></td>
- <td>Commits any potentially pending changes in the current control, and saves the current record to
- the database, or inserts a new record if the form is currently positioned on the virtual insertion row.</td>
- </tr>
-
- <tr style="vertical-align: top;">
- <td><em>undoRecord</em></td>
- <td>reverts the changes done to the current record. Basically, this means refreshing the
- current row from the database, and updating all controls with the new content.</td>
- </tr>
-
- <tr style="vertical-align: top;">
- <td><em>deleteRecord</em></td>
- <td>deletes the current record, after asking the user for confirmation.</td>
- </tr>
-
- <tr style="vertical-align: top;">
- <td><em>refreshForm</em></td>
- <td>reloads the complete form. After this, the form is positioned on the first record</td>
- </tr>
-
- <tr style="vertical-align: top;">
- <td><em>sortUp</em></td>
- <td>Adds an order clause to the form, to sort it ascending by the field which the current control is bound to,
- and then reloads the form.</td>
- </tr>
-
- <tr style="vertical-align: top;">
- <td><em>sortDown</em></td>
- <td>Adds an order clause to the form, to sort it descending by the field which the current control is bound to,
- and then reloads the form.</td>
- </tr>
-
- <tr style="vertical-align: top;">
- <td><em>sort</em></td>
- <td>opens an dialog, which allows the user to manipulate the current sorting order of the form. If the dialog
- is closed with OK, the form is reloaded after setting the new sorting order.</td>
- </tr>
-
- <tr style="vertical-align: top;">
- <td><em>autoFilter</em></td>
- <td>creates, from the current control, a filter for the form. This is, if the current control is bound to
- the field, say, "customer", and contains the value "Furs, Inc.", then a filter "customer = 'Furs, Inc.'"
- is created and set at the form. After this, the form is reloaded.</td>
- </tr>
-
- <tr style="vertical-align: top;">
- <td><em>filter</em></td>
- <td>opens an dialog, which allows the user to manipulate the current filter of the form. If the dialog
- is closed with OK, the form is reloaded after setting the new filter.</td>
- </tr>
-
- <tr style="vertical-align: top;">
- <td><em>applyFilter</em></td>
- <td><p>Toggles the <member scope="com::sun::star::sdb">RowSet::ApplyFilter</member> property
- of the form.</p>
- <p>Additionally, status listeners will be provided with the current (boolean) state of this property
- in the <member scope="com::sun::star::frame">FeatureStateEvent::State</member> member of the event
- notified by the dispatcher.</p></td>
- </tr>
-
- <tr style="vertical-align: top;">
- <td><em>removeFilterOrder</em></td>
- <td>completely removes any filter and sorting order from the form, and reloads it.</td>
- </tr>
-
- </tbody></table>
-
- @see FormController
+ @deprecated
*/
published service FormControllerDispatcher
{
- //-------------------------------------------------------------------------
- /** allows direct access to the dispatchers provided by the component.
- */
[optional] interface com::sun::star::frame::XDispatchProvider;
};
diff --git a/offapi/com/sun/star/form/XFormController.idl b/offapi/com/sun/star/form/XFormController.idl
index 832ec077b264..e1ca56c0b276 100644
--- a/offapi/com/sun/star/form/XFormController.idl
+++ b/offapi/com/sun/star/form/XFormController.idl
@@ -49,57 +49,14 @@
//=============================================================================
-/** provides functionality to control the activation of forms controls.
-
- <p>There is a duality of forms (<type scope="com::sun::star::form::component">DataForm</type>)
- and form controllers. In a document view, for every loaded form there is a form controller which is
- responsible for exactly the controls which's models are direct children of the form.<br/>
-
- In some sense, a form controller is the view representation of a form, like a <em>form control</em> is the
- view representation of a <em>form control model</em>.<br/>
-
- This is also reflected in this interface: If you call
- <method scope="com::sun::star::awt">XTabController::getModel</method> on a form controller, the form which
- the controller is responsible for will be returned.<br/>
-
- As always in the model-view-paradigm, there is no way from a model to its controller, mostly, because for
- <em>one</em> given form, there is one controller for <em>every</em> view of the document.</p>
-
- <p>A controller is called <em>active</em> if one of the controls it is responsible for has the focus,
- else inactive. To be notified whenever this activation state of a given controller changes, you can
- add listeners.</p>
-
- @see com::sun::star::form::component::Form
+/** is superseded by <type scope="com::sun::star::form::runtime">XFormController</type>.
+ @deprecated
*/
published interface XFormController: com::sun::star::awt::XTabController
{
- //-------------------------------------------------------------------------
-
- /** access to the currently active control
-
- @returns
- the currently active control, or <NULL/> if there is no such control
- */
- com::sun::star::awt::XControl getCurrentControl();
-
- //-------------------------------------------------------------------------
-
- /** adds the specified listener to receive notifications whenever the activation state of
- the controller changes.
-
- @param l
- the listener to add.
- */
- [oneway] void addActivateListener( [in] com::sun::star::form::XFormControllerListener l );
-
- //-------------------------------------------------------------------------
-
- /** removes the specified listener
-
- @param l
- the listener to remove.
- */
- [oneway] void removeActivateListener( [in] com::sun::star::form::XFormControllerListener l );
+ ::com::sun::star::awt::XControl getCurrentControl();
+ [oneway] void addActivateListener( [in] ::com::sun::star::form::XFormControllerListener l );
+ [oneway] void removeActivateListener( [in] ::com::sun::star::form::XFormControllerListener l );
};
diff --git a/offapi/com/sun/star/form/runtime/FilterEvent.idl b/offapi/com/sun/star/form/runtime/FilterEvent.idl
new file mode 100644
index 000000000000..8ec7b202e175
--- /dev/null
+++ b/offapi/com/sun/star/form/runtime/FilterEvent.idl
@@ -0,0 +1,64 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef __com_sun_star_form_runtime_FilterEvent_idl__
+#define __com_sun_star_form_runtime_FilterEvent_idl__
+
+#include <com/sun/star/lang/EventObject.idl>
+
+//=============================================================================
+
+module com { module sun { module star { module form { module runtime {
+
+//=============================================================================
+
+/** is an event fired by a filter controller, when the filter managed by the controller changes.
+
+ @see XFilterController
+
+ @since OpenOffice.org 3.3
+ */
+struct FilterEvent : ::com::sun::star::lang::EventObject
+{
+ /** denotes the index of the <em>disjunctive term</em> to which the event applies, if any.
+ */
+ long DisjunctiveTerm;
+
+ /** denotes the index of the <em>filter component</em> to which the event applies, if any.
+ */
+ long FilterComponent;
+
+ /** denotes the <em>predicate expression</em> associated with the event.
+ */
+ string PredicateExpression;
+};
+
+//=============================================================================
+
+}; }; }; }; };
+
+//=============================================================================
+
+#endif
diff --git a/offapi/com/sun/star/form/runtime/FormController.idl b/offapi/com/sun/star/form/runtime/FormController.idl
new file mode 100644
index 000000000000..17501ffa162c
--- /dev/null
+++ b/offapi/com/sun/star/form/runtime/FormController.idl
@@ -0,0 +1,51 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef __offapi_com_sun_star_form_runtime_FormController_idl__
+#define __offapi_com_sun_star_form_runtime_FormController_idl__
+
+#include <com/sun/star/form/runtime/XFormController.idl>
+
+//=============================================================================
+
+module com { module sun { module star { module form { module runtime {
+
+//=============================================================================
+
+/** specifies a component controlling the interaction between the user and multiple
+ form controls belonging to a single form.
+ */
+service FormController
+{
+ interface XFormController;
+};
+
+//=============================================================================
+
+}; }; }; }; };
+
+//=============================================================================
+
+#endif
diff --git a/offapi/com/sun/star/form/runtime/FormOperations.idl b/offapi/com/sun/star/form/runtime/FormOperations.idl
index c9390ac25918..984a09e0d7c4 100644
--- a/offapi/com/sun/star/form/runtime/FormOperations.idl
+++ b/offapi/com/sun/star/form/runtime/FormOperations.idl
@@ -34,8 +34,8 @@
#ifndef __com_sun_star_form_runtime_XFormOperations_idl__
#include <com/sun/star/form/runtime/XFormOperations.idl>
#endif
-#ifndef __com_sun_star_form_XFormController_idl__
-#include <com/sun/star/form/XFormController.idl>
+#ifndef __com_sun_star_form_runtime_XFormController_idl__
+#include <com/sun/star/form/runtime/XFormController.idl>
#endif
#ifndef __com_sun_star_form_XForm_idl__
#include <com/sun/star/form/XForm.idl>
diff --git a/offapi/com/sun/star/form/runtime/XFilterController.idl b/offapi/com/sun/star/form/runtime/XFilterController.idl
new file mode 100644
index 000000000000..5ee9bab57540
--- /dev/null
+++ b/offapi/com/sun/star/form/runtime/XFilterController.idl
@@ -0,0 +1,180 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef __offapi_com_sun_star_form_runtime_XFilterController_idl__
+#define __offapi_com_sun_star_form_runtime_XFilterController_idl__
+
+#include <com/sun/star/awt/XControl.idl>
+#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
+
+//=============================================================================
+
+module com { module sun { module star { module form { module runtime {
+
+//=============================================================================
+
+interface XFilterControllerListener;
+
+/** provides access to a form based filter for a database form
+
+ <p>In a form based filter, form controls bound to a searchable database field are replaced with a control
+ which allows entering a search expression. This so-called <em>predicate expression</em> is basically a part of an
+ SQL <code>WHERE</code> clause, but without the the part denoting the database column. For instance, if you
+ have a form control bound to a table column named <code>Name</code>, then entering the string
+ <q>LIKE '%Smith%'</q> effectively consitutes a SQL <code>WHERE</code> clause <code>"Name" LIKE '%Smith%'</code>.</p>
+
+ <p>In the actual document view, there are usually some relaxations to this. For instance, keywords such as
+ <code>LIKE</code> might be localized, according to OpenOffice.org's UI locale. Also, for an equality criterion,
+ the equality sign <code>=</code> is usually omitted. However, this interface here provides programmatic access
+ to the form based filter, so those relaxations are not considered here.</p>
+
+ <p>The filter maintained by a filter controller is, logically, a disjunctive normal form of an SQL <code>WHERE</code>
+ class. That is, it is a disjunction of <em>m</em> terms, where each term is a conjunction of <em>n</em> clauses
+ of the form <code>&lt;column&gt; &lt;predicate&gt; &lt;literal&gt;</code> or of the form <code><em>&lt;column&gt;
+ IS [NOT] NULL</em></code>.</p>
+
+ <p><em>n</em> equals the number of filter controls which the filter controller is responsible for. This number
+ doesn't change during one session of the form based filter. On the other hand, <em>m</em>, the number of disjunctive
+ terms, is dynamic.</p>
+
+ <a name="active_term"></a>
+ <p>With the above, there are potentially <em>m * n</em> <em>predicate expressions</em> (though usually only a fraction
+ of those will actually exist). Since in a form based filter, there are only <em>n</em> filter controls, and each
+ filter control displays exactly one <em>predicate expression</em>, this means that only a part of the complete
+ filter can be displayed, in particular, only one <em>disjunctive term</em> can be displayed at a time. Thus,
+ the filter controller knows the concept of an <em>active term</em>, denoted by the <member>ActiveTerm</member>
+ attribute, controls which of the terms is currently displayed in the form controls.</p>
+
+ @see XFormController
+ @see com::sun::star::sdbc::XResultSetMetaData::isSearchable
+ @see com::sun::star::sdb::XSingleSelectQueryAnalyzer::getStructuredFilter
+ @see com::sun::star::sdb::SQLFilterOperator
+
+ @since OpenOffice.org 3.3
+ */
+interface XFilterController
+{
+ /** registers a listener to be notified of certain changes in the form based filter.
+
+ <p>Registering the same listener multiple times results in multiple notifications of the same event,
+ and also requires multiple revocations of the listener.
+ */
+ void addFilterControllerListener( [in] XFilterControllerListener _Listener );
+
+ /** revokes a listener which was previously registered to be notified of certain changes in the form based filter.
+ */
+ void removeFilterControllerListener( [in] XFilterControllerListener _Listener );
+
+ /** is the number of <em>filter components</em>, or filter controls, which the filter controller is responsible
+ for.
+
+ <p>This number is constant during one session of the form based filter.</p>
+ */
+ [attribute, readonly] long FilterComponents;
+
+ /** is the number of <em>disjunctive terms</em> of the filter expression represented by the form based filter.
+ */
+ [attribute, readonly] long DisjunctiveTerms;
+
+ /** denotes the <a href="#active_term"><em>active term</em></a> of the filter controller.
+ */
+ [attribute] long ActiveTerm
+ {
+ set raises ( ::com::sun::star::lang::IndexOutOfBoundsException );
+ };
+
+ /** sets a given <em>predicate expression</em>
+
+ @param _Component
+ denotes the filter component whose expression is to be set. Must be greater than or equal to 0, and smaller than
+ <member>FilterComponents</member>.
+
+ @param _Term
+ denotes the <em>disjunctive term</em> in which the expression is to be set. Must be greater than or equal to 0,
+ and smaller than <member>DisjunctiveTerms</member>.
+
+ @param _PredicateExpression
+ denotes the <em>predicate expression</em> to set for the given filter component in the given term.
+
+ @throws ::com::sun::star::lang::IndexOutOfBoundsException
+ if one of the indexes is out of the allowed range
+ */
+ void
+ setPredicateExpression( [in] long _Component, [in] long _Term, [in] string _PredicateExpression )
+ raises( ::com::sun::star::lang::IndexOutOfBoundsException );
+
+ /** retrieves the filter component with the given index.
+
+ <p>The filter control has the same control model as the control which it stands in for. Consequently, you can use this method
+ to obtain the database column which the filter control works on, by examining the control model's <code>BoundField</code>
+ property.</p>
+
+ @param _Component
+ denotes the index of the filter component whose control should be obtained. Must be greater than or equal to 0,
+ and smaller than <member>FilterComponents</member>.
+
+ @throws ::com::sun::star::lang::IndexOutOfBoundsException
+ if <arg>_Component</arg> is out of the allowed range.
+
+ @see ::com::sun::star::form::component::DataAwareControlModel::BoundField
+ */
+ ::com::sun::star::awt::XControl
+ getFilterComponent( [in] long _Component )
+ raises( ::com::sun::star::lang::IndexOutOfBoundsException );
+
+ /** retrieves the entirety of the <em>predicate expressions</em> represented by the filter controller.
+
+ <p>Each element of the returned sequence is a <em>disjunctive term</em>, having exactly <member>FilterComponents</member>
+ elements, which denote the single <em>predicate expressions</em> of this term.</p>
+ */
+ sequence< sequence< string > >
+ getPredicateExpressions();
+
+ /** removes a given <em>disjunctive term</em>
+
+ @param _Term
+ the index of the term to remove. Must be greater than or equal to 0, and smaller than
+ <member>DisjunctiveTerms</member>.
+
+ @throws ::com::sun::star::lang::IndexOutOfBoundsException
+ if <arg>_Term</arg> is out of the allowed range.
+ */
+ void
+ removeDisjunctiveTerm( [in] long _Term )
+ raises( ::com::sun::star::lang::IndexOutOfBoundsException );
+
+ /** appends an empty disjunctive term to the list of terms.
+ */
+ void
+ appendEmptyDisjunctiveTerm();
+};
+
+//=============================================================================
+
+}; }; }; }; };
+
+//=============================================================================
+
+#endif
diff --git a/offapi/com/sun/star/form/runtime/XFilterControllerListener.idl b/offapi/com/sun/star/form/runtime/XFilterControllerListener.idl
new file mode 100644
index 000000000000..230ba9656d81
--- /dev/null
+++ b/offapi/com/sun/star/form/runtime/XFilterControllerListener.idl
@@ -0,0 +1,84 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef __com_sun_star_form_runtime_XFilterControllerListener_idl__
+#define __com_sun_star_form_runtime_XFilterControllerListener_idl__
+
+#include <com/sun/star/lang/XEventListener.idl>
+#include <com/sun/star/form/runtime/FilterEvent.idl>
+
+//=============================================================================
+
+module com { module sun { module star { module form { module runtime {
+
+//=============================================================================
+
+/** is implemented by components listening for events fired by an <type>XFilterController</type>.
+
+ @since OpenOffice.org 3.3
+*/
+interface XFilterControllerListener : ::com::sun::star::lang::XEventListener
+{
+ /** is fired when a single <em>predicate expression</em> of the filter represented by the filter
+ controller changed.
+
+ <p><member>FilterEvent::DisjunctiveTerm</member> is the index of the <em>disjunctive term</em> in which the
+ expression changed. This usually equals <member>XFilterController::ActiveTerm</member>.</p>
+
+ <p><member>FilterEvent::FilterComponent</member> denotes the index of the filter component whose
+ <em>predicate expression</em> changed.</p>
+
+ <p><member>FilterEvent::PredicateExpression</member> is the new <em>predicate expressions</em>.</p>
+ */
+ void predicateExpressionChanged( [in] FilterEvent _Event );
+
+ /** is fired when a <em>disjunctive term</em> was removed from the filter of the filter controller.
+
+ <p><member>FilterEvent::DisjunctiveTerm</member> is the index of the <em>disjunctive term</em> which was
+ removed.</p>
+
+ <p><member>FilterEvent::FilterComponent</member> and <member>FilterEvent::PredicateExpression</member> are not
+ used for this event type.</p>
+ */
+ void disjunctiveTermRemoved( [in] FilterEvent _Event );
+
+ /** is fired when a <em>disjunctive term</em> was added to the filter of the filter controller.
+
+ <p><member>FilterEvent::DisjunctiveTerm</member> is the index of the <em>disjunctive term</em> which was
+ added.</p>
+
+ <p><member>FilterEvent::FilterComponent</member> and <member>FilterEvent::PredicateExpression</member> are not
+ used for this event type.</p>
+ */
+ void disjunctiveTermAdded( [in] FilterEvent _Event );
+};
+
+//=============================================================================
+
+}; }; }; }; };
+
+//=============================================================================
+
+#endif
diff --git a/offapi/com/sun/star/form/runtime/XFormController.idl b/offapi/com/sun/star/form/runtime/XFormController.idl
new file mode 100644
index 000000000000..f0573383860a
--- /dev/null
+++ b/offapi/com/sun/star/form/runtime/XFormController.idl
@@ -0,0 +1,373 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef __offapi_com_sun_star_form_runtime_XFormController_idl__
+#define __offapi_com_sun_star_form_runtime_XFormController_idl__
+
+#include <com/sun/star/awt/XTabController.idl>
+#include <com/sun/star/container/XChild.idl>
+#include <com/sun/star/lang/XComponent.idl>
+#include <com/sun/star/container/XIndexAccess.idl>
+#include <com/sun/star/container/XEnumerationAccess.idl>
+#include <com/sun/star/util/XModifyBroadcaster.idl>
+#include <com/sun/star/util/XModeSelector.idl>
+#include <com/sun/star/form/XConfirmDeleteBroadcaster.idl>
+#include <com/sun/star/sdb/XSQLErrorBroadcaster.idl>
+#include <com/sun/star/sdb/XRowSetApproveBroadcaster.idl>
+#include <com/sun/star/form/XDatabaseParameterBroadcaster2.idl>
+#include <com/sun/star/form/XFormControllerListener.idl>
+#include <com/sun/star/task/XInteractionHandler.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/form/runtime/XFilterController.idl>
+
+//=============================================================================
+
+module com { module sun { module star { module form { module runtime {
+
+interface XFormOperations;
+interface XFormControllerContext;
+
+//=============================================================================
+
+/** specifies a component controlling the interaction between the user and form functionality.
+
+ <p>As soon as a form (containing controls) is to be presented to the user,
+ there is a need for an instance controlling the user interaction.<br/>
+ Such a <code>FormController</code> is responsible for dialog processing,
+ like controlling the tab order and the grouping of controls.</p>
+
+ <p>As a form may contain one or many subforms, a <type>FormController</type> may
+ contain one or more other <type>FormController</type>s, so the form model structure or hierarchy
+ is reflected in the structure of <type>FormController</type>s. That is, retrieving the parent of
+ the model of a controller will give you the same object as retrieving the model of the parent of
+ the controller. Similarly, retrieving the model of the <code>n</code><sup>th</sup> child of
+ a controller gives you the same object as retrieving the <code>n</code><sup>th</sup> child of
+ the model of the controller.</p>
+
+ <p>A controller is called <em>active</em> if one of the controls it is responsible for has the focus,
+ else inactive. To be notified whenever this activation state of a given controller changes, you can
+ add listeners.</p>
+
+ <p>This interface supersedes the <type scope="com::sun::star::form">FormController</type>.</p>
+
+ <h3>Responsibilities</h3>
+ <p>A <type>FormController</type> is responsible for a <type scope="com::sun::star::awt">UnoControlContainer</type>,
+ and all controls therein.</p>
+
+ <p>Furthermore, a form controller is responsible for preventing invalid user input. That is, if the form
+ contains controls bound to a database, or to an external validator, then the form controller will
+ check their current value when the current record is to be saved to the database.</p>
+
+ <p>First, it will check whether any controls with an external validator exist. If so, those validators
+ will be asked to validate the current control content. If this fails, the message provided by the validator
+ is displayed to the user, the control is focused, and the update of the record is vetoed.</p>
+
+ <p>Second, the controls are examined for NULL values. If a control is bound to a database field which
+ is declared to be <code>NOT NULL</code>, no auto-increment field, but still <NULL/>, then an error
+ message is shown to the user saying that input is required, the respective control is focused, and
+ the update of the record is vetoed.</p>
+
+ <p>Note that you can precent the second check - for database fields containing <NULL/> values - on
+ a per-form and a per-database basis.<br/>
+ For the former, you need to add a boolean property <code>FormsCheckRequiredFields</code> to the form
+ (aka the <code>FormController</code>'s model), using its
+ <member scope="com::sun::star::beans">XPropertyContainer::addProperty</member> method, with a value
+ of <FALSE/>.<br/>
+ For the latter, you need to set the respective property of the data source's <code>Settings</code>
+ (also named <code>FormsCheckRequiredFields</code>) to <FALSE/>.</p>
+
+ <p>Alternatively, you can prevent the check on a per-control basis, using the
+ <member>DataAwareControlModel::InputRequired</member> property of a single control model.</p>
+
+ <p>If a control which the controller is responsible for supports the <type scope="com::sun::star::frame">XDispatchProviderInterception</type>
+ interface, the controller registers a dispatch interceptor. Then, the control can try to delegate part of its
+ functionality to the controller by querying the dispatch interceptor for it.</p>
+
+ <p>Below, there's a list of URLs which have a defined meaning - if an implementation supports one of them,
+ there must be a guaranteed semantices. However, concrete implementations may support an arbitrary sub or super
+ set of these URLs.</p>
+
+ <p>In general, all URLs start with the same prefix, namely <em>.uno:FormController/</em>. To this, a suffix is
+ appended which describes the requested functionality.<br/>
+ Example: The URL suffix for deleting the current record is <em>deleteRecord</em>, so the complete URL for
+ requesting a dispatcher for this functionality is <em>.uno:FormController/deleteRecord</em>.</p>
+
+ <p>Some URLs may require parameters. For this, the sequence of <type scope="com::sun::star::beans">PropertyValue</type>s
+ passed to the <member scope="com::sun::star::frame">XDispatch::dispatch</member> call is used - every property value is
+ used as one named parameter.</p>
+
+ <p>For all URLs, interested parties can register as status listeners (<type scope="com::sun::star::frame">XStatusListener</type>)
+ at the dispatchers, and be notified whenever the functionality associated with the URL becomes enabled or
+ disabled.<br/>
+ For instance, the URL with the suffix <em>moveToFirst</em> is associated with moving the form to the first
+ record, and it will be disabled in case the form is already positioned on the first record.</p>
+
+ <table style="width:100%;" border="0" cellpadding="2" cellspacing="2"><tbody>
+
+ <tr style="vertical-align: top;">
+ <td><b>URL suffix</b></td>
+ <td><b>functionality</b></td>
+ </tr>
+
+ <tr style="vertical-align: top;">
+ <td><em>positionForm</em></td>
+ <td>positions the form on a record given by absolute number.<br/>
+ There's one parameter for this functionality, named <em>Position</em>, which must be a long
+ value specifying the absolute position to which the form should be moved</td>
+ </tr>
+
+ <tr style="vertical-align: top;">
+ <td><em>RecordCount</em></td>
+ <td>This is a passive functionality: It cannot be dispatched, instead, interested parties may
+ use the dispatcher to add as <type scope="com::sun::star::frame">XStatusListener</type>, and be
+ notified when the record count changes.<br/>
+ The status value which is being notified (<member scope="com::sun::star::frame">FeatureStateEvent::State</member>)
+ is a string which can be used to display the record count. In particular, if the record count is not yet known
+ (<member scope="com::sun::star::sdb">RowSet::IsRowCountFinal</member> is <FALSE/>), this is indicated in the
+ string, too.</td>
+ </tr>
+
+ <tr style="vertical-align: top;">
+ <td><em>moveToFirst</em></td>
+ <td>moves the form to the first record</td>
+ </tr>
+
+ <tr style="vertical-align: top;">
+ <td><em>moveToPrev</em></td>
+ <td>moves the form to the record preceding the current one</td>
+ </tr>
+
+ <tr style="vertical-align: top;">
+ <td><em>moveToNext</em></td>
+ <td>moves the form to the record after the current one</td>
+ </tr>
+
+ <tr style="vertical-align: top;">
+ <td><em>moveToLast</em></td>
+ <td>moves the form to the last record</td>
+ </tr>
+
+ <tr style="vertical-align: top;">
+ <td><em>moveToNew</em></td>
+ <td>moves the form to the virtual "insert row", where new records can be inserted</td>
+ </tr>
+
+ <tr style="vertical-align: top;">
+ <td><em>saveRecord</em></td>
+ <td>Commits any potentially pending changes in the current control, and saves the current record to
+ the database, or inserts a new record if the form is currently positioned on the virtual insertion row.</td>
+ </tr>
+
+ <tr style="vertical-align: top;">
+ <td><em>undoRecord</em></td>
+ <td>reverts the changes done to the current record. Basically, this means refreshing the
+ current row from the database, and updating all controls with the new content.</td>
+ </tr>
+
+ <tr style="vertical-align: top;">
+ <td><em>deleteRecord</em></td>
+ <td>deletes the current record, after asking the user for confirmation.</td>
+ </tr>
+
+ <tr style="vertical-align: top;">
+ <td><em>refreshForm</em></td>
+ <td>reloads the complete form. After this, the form is positioned on the first record</td>
+ </tr>
+
+ <tr style="vertical-align: top;">
+ <td><em>sortUp</em></td>
+ <td>Adds an order clause to the form, to sort it ascending by the field which the current control is bound to,
+ and then reloads the form.</td>
+ </tr>
+
+ <tr style="vertical-align: top;">
+ <td><em>sortDown</em></td>
+ <td>Adds an order clause to the form, to sort it descending by the field which the current control is bound to,
+ and then reloads the form.</td>
+ </tr>
+
+ <tr style="vertical-align: top;">
+ <td><em>sort</em></td>
+ <td>opens an dialog, which allows the user to manipulate the current sorting order of the form. If the dialog
+ is closed with OK, the form is reloaded after setting the new sorting order.</td>
+ </tr>
+
+ <tr style="vertical-align: top;">
+ <td><em>autoFilter</em></td>
+ <td>creates, from the current control, a filter for the form. This is, if the current control is bound to
+ the field, say, "customer", and contains the value "Furs, Inc.", then a filter "customer = 'Furs, Inc.'"
+ is created and set at the form. After this, the form is reloaded.</td>
+ </tr>
+
+ <tr style="vertical-align: top;">
+ <td><em>filter</em></td>
+ <td>opens an dialog, which allows the user to manipulate the current filter of the form. If the dialog
+ is closed with OK, the form is reloaded after setting the new filter.</td>
+ </tr>
+
+ <tr style="vertical-align: top;">
+ <td><em>applyFilter</em></td>
+ <td><p>Toggles the <member scope="com::sun::star::sdb">RowSet::ApplyFilter</member> property
+ of the form.</p>
+ <p>Additionally, status listeners will be provided with the current (boolean) state of this property
+ in the <member scope="com::sun::star::frame">FeatureStateEvent::State</member> member of the event
+ notified by the dispatcher.</p></td>
+ </tr>
+
+ <tr style="vertical-align: top;">
+ <td><em>removeFilterOrder</em></td>
+ <td>completely removes any filter and sorting order from the form, and reloads it.</td>
+ </tr>
+
+ </tbody></table>
+
+ @see ::com::sun::star::form::component:Form
+ @see ::com::sun::star::form::binding::BindableControlModel
+ @see ::com::sun::star::sdb::DataSource::Settings
+
+ @since OpenOffice.org 3.3
+ */
+interface XFormController
+{
+ /** is used for tab controlling and grouping of the controls.
+
+ <p>The model obtained via <member scope="com::sun::star::awt">XTabController::getModel</member> is the form for which the
+ controller is responsible.</p>
+ */
+ interface ::com::sun::star::awt::XTabController;
+
+ /** allows access to the parent controller.
+ */
+ interface ::com::sun::star::container::XChild;
+
+ /** allows access to the sub controllers.
+ */
+ interface ::com::sun::star::container::XIndexAccess;
+
+ /** allows enumerating sub controllers
+ */
+ interface ::com::sun::star::container::XEnumerationAccess;
+
+ /** allows life time control of the controller.
+ */
+ interface ::com::sun::star::lang::XComponent;
+
+ /** allows to register as listener for modifications in the controls which the controller is responsible
+ for.
+ */
+ interface ::com::sun::star::util::XModifyBroadcaster;
+
+ /** used to notify deletions of data in the form before they happen.
+
+ <p>A form controller listens for deletion events at the form it is responsible for. If and only if no
+ <type scope="com::sun::star::form">XConfirmDeleteListener</type> is registered at
+ the controller, it uses an own dialog to ask the user for confirmation.</p>
+ */
+ interface ::com::sun::star::form::XConfirmDeleteBroadcaster;
+
+ /** is used to notify errors which happen in the form the controller is responsible for.
+
+ <p>A form controller listens for error events at the form it is responsible for. If and only if no
+ <type scope="com::sun::star::sdb">XSQLErrorListener</type> is registered at the controller, it
+ uses an own dialog to notify the user of the error.</p>
+
+ */
+ interface ::com::sun::star::sdb::XSQLErrorBroadcaster;
+
+ /** is used for multiplexing row set events happening on the form which the controller is responsible for.
+ */
+ interface ::com::sun::star::sdb::XRowSetApproveBroadcaster;
+
+ /** is used broadcasting parameter events in the form.
+
+ <p>A form controller listens for parameter events at the form it is responsible for. If and only if no
+ <type scope="com::sun::star::form">XDatabaseParameterListener</type> is registered at the controller, it
+ uses an own dialog to ask the user for parameter values.</p>
+ */
+ interface ::com::sun::star::form::XDatabaseParameterBroadcaster2;
+
+ /** allows switching the form controller to different operation modes.
+
+ <a name="mode_selector"></a>
+ <p>The two modes usually (but not necessarily) supported by a form controller are the <code>DataMode</code>
+ and the <code>FilterMode</code>, where the former is the usual modus operandi for displaying and modifying
+ data, and the latter is a special mode to enter a filter for the database form which the controller is
+ responsible for.</p>
+ */
+ interface ::com::sun::star::util::XModeSelector;
+
+ /** allows controlling the filter mode.
+
+ <p>If the form controller supports a <a href="#mode_selector">form based filter mode</a>, then it shall also
+ support the <type>XFilterController</type> interface, which allows controlling this mode.</p>
+ */
+ [optional] interface XFilterController;
+
+ /** denotes the instance which is used to implement operations on the form which the controller
+ works for.
+
+ <p>This instance can be used, for instance, to determine the current state of certain form features.</p>
+ */
+ [attribute, readonly] XFormOperations FormOperations;
+
+ /** provicdes access to the currently active control
+ */
+ [attribute, readonly] ::com::sun::star::awt::XControl CurrentControl;
+
+ /** allows to delegate certain tasks to the context of the form controller
+ */
+ [attribute] XFormControllerContext Context;
+
+ /** used (if not <NULL/>) for user interactions triggered by the form controller.
+ */
+ [attribute] ::com::sun::star::task::XInteractionHandler InteractionHandler;
+
+ /** adds the specified listener to receive notifications whenever the activation state of
+ the controller changes.
+ */
+ void addActivateListener( [in] ::com::sun::star::form::XFormControllerListener _Listener );
+
+ /** removes the specified listener from the list of components to receive notifications whenever the activation
+ state of the controller changes.
+ */
+ void removeActivateListener( [in] ::com::sun::star::form::XFormControllerListener _Listener );
+
+ /** adds a controller to the list of child controllers
+ @throws ::com::sun::star::lang::IllegalArgumentException
+ if the given controller is <NULL/>, or cannot rightfully be a child controller. Since controllers
+ mirror the hierarchy of the forms the are responsible for, this means that the form of the given
+ child controller must be a child of the controller at which the method is invoked.
+ */
+ void addChildController( [in] XFormController _ChildController )
+ raises ( ::com::sun::star::lang::IllegalArgumentException );
+};
+
+//=============================================================================
+
+}; }; }; }; };
+
+//=============================================================================
+
+#endif
diff --git a/offapi/com/sun/star/form/runtime/XFormControllerContext.idl b/offapi/com/sun/star/form/runtime/XFormControllerContext.idl
new file mode 100644
index 000000000000..da0999ee17a7
--- /dev/null
+++ b/offapi/com/sun/star/form/runtime/XFormControllerContext.idl
@@ -0,0 +1,57 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef __offapi_com_sun_star_form_runtime_XFormControllerContext_idl__
+#define __offapi_com_sun_star_form_runtime_XFormControllerContext_idl__
+
+#include <com/sun/star/awt/XControl.idl>
+
+//=============================================================================
+
+module com { module sun { module star { module form { module runtime {
+
+//=============================================================================
+
+/** provides a context for a <type>FormController</type>
+
+<p>A <type>FormController</type> knows about the controls it is responsible
+ for, and about the control container which those controls live in. However, it doesn't know
+ about a possible larger context, like a scrollable view which the controls are embedded into.
+ To compensate this, it can be provided a <code>XFormControllerContext</code>.</p>
+ */
+interface XFormControllerContext
+{
+ /** ensures the given control is visible, by scrolling the view if necessary.
+ */
+ void makeVisible( [in] ::com::sun::star::awt::XControl _Control );
+};
+
+//=============================================================================
+
+}; }; }; }; };
+
+//=============================================================================
+
+#endif
diff --git a/offapi/com/sun/star/form/runtime/XFormOperations.idl b/offapi/com/sun/star/form/runtime/XFormOperations.idl
index 24552584aa29..10b568923ec5 100644
--- a/offapi/com/sun/star/form/runtime/XFormOperations.idl
+++ b/offapi/com/sun/star/form/runtime/XFormOperations.idl
@@ -44,8 +44,8 @@
#ifndef __com_sun_star_sdbc_XResultSetUpdate_idl__
#include <com/sun/star/sdbc/XResultSetUpdate.idl>
#endif
-#ifndef __com_sun_star_form_XFormController_idl__
-#include <com/sun/star/form/XFormController.idl>
+#ifndef __com_sun_star_form_runtime_XFormController_idl__
+#include <com/sun/star/form/runtime/XFormController.idl>
#endif
#ifndef __com_sun_star_lang_IllegalArgumentException_idl__
#include <com/sun/star/lang/IllegalArgumentException.idl>
@@ -115,7 +115,7 @@ interface XFormOperations : ::com::sun::star::lang::XComponent
case some functionality will not be available. In particular, every feature
which relies on the active control of the controller might be of limited use.</p>
*/
- [attribute, readonly] ::com::sun::star::form::XFormController Controller;
+ [attribute, readonly] ::com::sun::star::form::runtime::XFormController Controller;
/** retrieves the current state of the given feature
diff --git a/offapi/com/sun/star/form/runtime/makefile.mk b/offapi/com/sun/star/form/runtime/makefile.mk
index 81c66826793b..97c4451edf40 100644
--- a/offapi/com/sun/star/form/runtime/makefile.mk
+++ b/offapi/com/sun/star/form/runtime/makefile.mk
@@ -42,10 +42,16 @@ PACKAGE=com$/sun$/star$/form$/runtime
# ------------------------------------------------------------------------
IDLFILES=\
- FeatureState.idl\
+ FeatureState.idl \
+ FilterEvent.idl \
FormFeature.idl \
FormOperations.idl \
+ FormController.idl \
XFeatureInvalidation.idl \
+ XFilterController.idl \
+ XFilterControllerListener.idl \
+ XFormController.idl \
+ XFormControllerContext.idl \
XFormOperations.idl \
# ------------------------------------------------------------------
diff --git a/offapi/com/sun/star/sdb/DataSourceBrowser.idl b/offapi/com/sun/star/sdb/DataSourceBrowser.idl
index 36c73ae9da2c..0690321608a4 100644
--- a/offapi/com/sun/star/sdb/DataSourceBrowser.idl
+++ b/offapi/com/sun/star/sdb/DataSourceBrowser.idl
@@ -168,13 +168,11 @@ published service DataSourceBrowser
<p>
With a data source browser implementing this interface, external components have access to
<ul><li>the grid control which is used to display the currently selected table/query
- (see
- <method scope="com.sun.star.form">XFormController::getControls()</method>
- )
+ (see <method scope="com::sun::star::awt">XTabController::getControls</method>)
</li>
<li>the data form used for displaying objects. As always for components implementing this service,
the object returned by
- <method scope="com.sun.star.awt">XTabController::getModel()</method>isadataform.
+ <method scope="com::sun::star::awt">XTabController::getModel</method>is a dataform.
</li>
</ul>
</p>
diff --git a/offapi/com/sun/star/sdb/DatabaseContext.idl b/offapi/com/sun/star/sdb/DatabaseContext.idl
index e82cce64de3d..623b28c887b8 100644
--- a/offapi/com/sun/star/sdb/DatabaseContext.idl
+++ b/offapi/com/sun/star/sdb/DatabaseContext.idl
@@ -52,6 +52,8 @@
module com { module sun { module star { module sdb {
+published interface XDatabaseRegistrations;
+
/** is the context for accessing datasource.
<p>
@@ -65,12 +67,10 @@
*/
published service DatabaseContext
{
-
/** Enumeration on all registered data sources.
*/
interface com::sun::star::container::XEnumerationAccess;
-
/** NameAccess on all registered data sources.
<p>One exception is the <method "com.sun.star.container.XNameAccess">getByName</method>, this method also allows to ask
for a <member "DataAccessDescriptor">DatabaseLocation</member>.
@@ -89,6 +89,19 @@ published service DatabaseContext
/** Interface for creation of new datasources.
*/
interface com::sun::star::lang::XSingleServiceFactory;
+
+ /** allows to access and modify the configuration data for registered data source.
+
+ <p>The main purpose of this interface is to allow you to register data sources which you know
+ by URL only, and have not yet loaded.</p>
+
+ <p>Also, it hides the details of the configuration data where the data source registrations
+ are maintained, so if possible at all, you should use this interface, instead of modifying or
+ querying the configuration data directly.</p>
+
+ @since OpenOffice.org 3.3
+ */
+ [optional] interface XDatabaseRegistrations;
};
//=============================================================================
diff --git a/offapi/com/sun/star/sdb/DatabaseRegistrationEvent.idl b/offapi/com/sun/star/sdb/DatabaseRegistrationEvent.idl
new file mode 100644
index 000000000000..3f2a82aa13cb
--- /dev/null
+++ b/offapi/com/sun/star/sdb/DatabaseRegistrationEvent.idl
@@ -0,0 +1,60 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef __com_sun_star_sdb_DatabaseRegistrationEvent_idl__
+#define __com_sun_star_sdb_DatabaseRegistrationEvent_idl__
+
+#include <com/sun/star/lang/EventObject.idl>
+
+//=============================================================================
+
+module com { module sun { module star { module sdb {
+
+//=============================================================================
+
+/** describes a change in a database registration
+
+ @see XDatabaseRegistrations
+ @see XDatabaseRegistrationsListener
+
+ @since OpenOffice.org 3.3
+ */
+struct DatabaseRegistrationEvent : ::com::sun::star::lang::EventObject
+{
+ /// is the name of the database registration affected by the event
+ string Name;
+ /// is the old location of the database which is affected by the event
+ string OldLocation;
+ /// is the new location of the database which is affected by the event
+ string NewLocation;
+};
+
+//=============================================================================
+
+}; }; }; };
+
+//=============================================================================
+
+#endif
diff --git a/offapi/com/sun/star/sdb/XDatabaseAccess.idl b/offapi/com/sun/star/sdb/XDatabaseAccess.idl
index a9091be56ce5..61667e73a1af 100644
--- a/offapi/com/sun/star/sdb/XDatabaseAccess.idl
+++ b/offapi/com/sun/star/sdb/XDatabaseAccess.idl
@@ -54,60 +54,17 @@
//=============================================================================
-/** is used to connect to a data access bean. A data access bean represents a
- database connection and provides additional information related to the connection
- such as forms, reports, or queries.
+/** is not to be used anymore
+ @deprecated
*/
published interface XDatabaseAccess: com::sun::star::sdbc::XDataSource
{
-
- /** indicates that connections already exist.
- @returns
- <TRUE/> if so
- */
boolean hasConnections();
- //-------------------------------------------------------------------------
-
- /** attempts to establish a database connection, that can not be shared with
- other components. This should be used for transaction processing.
- @param user
- the user name
- @param password
- the password
- @returns
- an isolated connection object
- @throws com::sun::star::sdbc::SQLException
- if a database access error occurs.
- @see com::sun::star::sdbc::XConnection
- */
com::sun::star::sdbc::XConnection getIsolatedConnection([in]string user, [in]string password)
raises (com::sun::star::sdbc::SQLException);
- //-------------------------------------------------------------------------
-
- /** closes the all connections to database. This request could be aborted by
- listeners of the component.
- @throws com::sun::star::sdbc::SQLException
- if a database access error occurs.
- */
boolean suspendConnections() raises (com::sun::star::sdbc::SQLException);
- //-------------------------------------------------------------------------
-
- /** adds the specified listener to receive the events "connectionChanged",
- "approveConnectionClose", and "connectionClosing".
- @param listener
- the listener to append
- @see com::sun::star::sdb::XDatabaseAccessListener
- */
[oneway] void addDatabaseAccessListener([in]XDatabaseAccessListener listener);
- //-------------------------------------------------------------------------
-
- /** removes the specified listener.
- @param listener
- the listener to append
- @see com::sun::star::sdb::XDatabaseAccessListener
- */
- [oneway] void removeDatabaseAccessListener(
- [in]XDatabaseAccessListener listener);
+ [oneway] void removeDatabaseAccessListener([in]XDatabaseAccessListener listener);
};
//=============================================================================
diff --git a/offapi/com/sun/star/sdb/XDatabaseAccessListener.idl b/offapi/com/sun/star/sdb/XDatabaseAccessListener.idl
index 1c9361f9da09..2a502f632d86 100644
--- a/offapi/com/sun/star/sdb/XDatabaseAccessListener.idl
+++ b/offapi/com/sun/star/sdb/XDatabaseAccessListener.idl
@@ -37,44 +37,13 @@
module com { module sun { module star { module sdb {
-/** is used for receiving "connectionChanged", "approveConnectionClose", and
- "connectionClosing" events posted by a database access bean.
-
-
- <p>
- A database access bean setting may be changed to connect to a different database.
- In that case, the connection of the bean must be closed and a new connection must
- be established. The could affect the current data processing on the bean, as it
- could be shared by a number of components. To prevent the bean from closing it's
- connection, a DatabaseAccessListener could abort the closing.
- </p>
+/** is not to be used anymore
+ @deprecated
*/
published interface XDatabaseAccessListener: com::sun::star::lang::XEventListener
{
-
- /** indicates that a new connection for the bean has been established.
- @param evenet
- the event happend
- */
[oneway] void connectionChanged([in]com::sun::star::lang::EventObject event);
- //-------------------------------------------------------------------------
-
- /** indicates that the connection of the bean will be closed. If there are pending
- actions on the connection of the bean, "approveConnectionClosing" should return
- <FALSE/>.
-
- @param evenet
- the event happend
- @returns
- <TRUE/> when approved, otherwise <FALSE/>
- */
boolean approveConnectionClosing([in]com::sun::star::lang::EventObject event);
- //-------------------------------------------------------------------------
-
- /** indicates that the connection will definitely be closed.
- @param evenet
- the event happend
- */
[oneway] void connectionClosing([in]com::sun::star::lang::EventObject event);
};
diff --git a/offapi/com/sun/star/sdb/XDatabaseEnvironment.idl b/offapi/com/sun/star/sdb/XDatabaseEnvironment.idl
index 2e7f9b46200c..5cb3aa4832fd 100644
--- a/offapi/com/sun/star/sdb/XDatabaseEnvironment.idl
+++ b/offapi/com/sun/star/sdb/XDatabaseEnvironment.idl
@@ -54,39 +54,14 @@
//=============================================================================
-/** specifies the root of the data access beans. It provides the possiblity
- to open a data access bean, which contains tables, queries, forms, and
- report documents, or to open a connection to a database.
+/** is not to be used anymore.
@deprecated
*/
published interface XDatabaseEnvironment: com::sun::star::sdbc::XDriverManager
{
- //-------------------------------------------------------------------------
-
- /** returns an existing DatabaseAccess bean specified by it's URL.
-
-
- <p>Database Access beans are always shared, so if there's a second request
- for the same bean, the same instance of the bean will be returned, if it is still alive.
- </p>
- @param URL
- a database url of the form sdbc:subprotocol:subname
- @returns
- the database access object for this url
- */
XDatabaseAccess getDatabaseAccess([in]string URL)
raises (com::sun::star::sdbc::SQLException);
- //-------------------------------------------------------------------------
-
- /** creates a new DatabaseAccess bean specified by it's URL.
- @param URL
- a database url of the form sdbc:subprotocol:subname
- @param title
- the title of the database access
- @returns
- the new created database access object for this url
- */
XDatabaseAccess createDatabaseAccess([in]string URL, [in]string title)
raises (com::sun::star::sdbc::SQLException);
};
diff --git a/offapi/com/sun/star/sdb/XDatabaseRegistrations.idl b/offapi/com/sun/star/sdb/XDatabaseRegistrations.idl
new file mode 100644
index 000000000000..ce8e54b8d359
--- /dev/null
+++ b/offapi/com/sun/star/sdb/XDatabaseRegistrations.idl
@@ -0,0 +1,158 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef __com_sun_star_sdb_XDatabaseRegistrations_idl__
+#define __com_sun_star_sdb_XDatabaseRegistrations_idl__
+
+#include <com/sun/star/container/NoSuchElementException.idl>
+#include <com/sun/star/container/ElementExistException.idl>
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#include <com/sun/star/lang/IllegalAccessException.idl>
+
+//=============================================================================
+
+module com { module sun { module star { module sdb {
+
+interface XDatabaseRegistrationsListener;
+
+//=============================================================================
+
+/** provides access to the application-wide registered databases.
+
+ <p>This interface provides a mere wrapper around the respective configuration data,
+ this way hiding the concrete configuration structure from its clients. You should,
+ if possible at all, use this interface, instead of modifying or querying the configuration
+ data directly.</p>
+
+ @since OpenOffice.org 3.3
+ */
+interface XDatabaseRegistrations
+{
+ /** determines whether a database is registered under the given name.
+
+ @throws ::com::sun::star::lang::IllegalArgumentException
+ if the given name is empty
+ */
+ boolean hasRegisteredDatabase( [in] string Name )
+ raises ( ::com::sun::star::lang::IllegalArgumentException
+ );
+
+ /** returns the names of all registered databases
+ */
+ sequence< string >
+ getRegistrationNames();
+
+ /** returns the location of the database registered under the given name
+
+ @throws ::com::sun::star::lang::IllegalArgumentException
+ if the given name is empty
+
+ @throws ::com::sun::star::container::NoSuchElementException
+ if there is no database registered under this name
+ */
+ string getDatabaseLocation( [in] string Name )
+ raises ( ::com::sun::star::lang::IllegalArgumentException
+ , ::com::sun::star::container::NoSuchElementException
+ );
+
+ /** registers a database, given by location, under a given name
+
+ @throws ::com::sun::star::lang::IllegalArgumentException
+ if the given name is empty, or the given location is invalid.
+
+ @throws ::com::sun::star::container::ElementExistException
+ if there already is a databases registered under the given name.
+ */
+ void registerDatabaseLocation( [in] string Name, [in] string Location )
+ raises ( ::com::sun::star::lang::IllegalArgumentException
+ , ::com::sun::star::container::ElementExistException
+ );
+
+ /** revokes the registration of a database, given by name
+
+ @throws ::com::sun::star::lang::IllegalArgumentException
+ if the given name is empty
+
+ @throws ::com::sun::star::container::NoSuchElementException
+ if there is no database registered under this name
+
+ @throws ::com::sun::star::lang::IllegalAccessException
+ if the registration data for this database is read-only
+ */
+ void revokeDatabaseLocation( [in] string Name )
+ raises ( ::com::sun::star::lang::IllegalArgumentException
+ , ::com::sun::star::container::NoSuchElementException
+ , ::com::sun::star::lang::IllegalAccessException
+ );
+
+ /** changes the location of a given database registration
+
+ @throws ::com::sun::star::lang::IllegalArgumentException
+ if the given name is empty, or the given location is invalid.
+
+ @throws ::com::sun::star::container::NoSuchElementException
+ if there is no database registered under this name
+
+ @throws ::com::sun::star::lang::IllegalAccessException
+ if the registration data for this database is read-only
+ */
+ void changeDatabaseLocation( [in] string Name, [in] string NewLocation )
+ raises ( ::com::sun::star::lang::IllegalArgumentException
+ , ::com::sun::star::container::NoSuchElementException
+ , ::com::sun::star::lang::IllegalAccessException
+ );
+
+ /** determines whether the registration data for a database given by name is
+ read-only.
+
+ <p>In this case, attempts to revoke this registration will fail.</p>
+
+ @throws ::com::sun::star::lang::IllegalArgumentException
+ if the given name is empty
+
+ @throws ::com::sun::star::container::NoSuchElementException
+ if there is no database registered under this name
+ */
+ boolean isDatabaseRegistrationReadOnly( [in] string Name )
+ raises ( ::com::sun::star::lang::IllegalArgumentException
+ , ::com::sun::star::container::NoSuchElementException
+ );
+
+ /** registers a listener which is notified of changes in the registered databases
+ */
+ void addDatabaseRegistrationsListener( [in] XDatabaseRegistrationsListener Listener );
+
+ /** revokes a previously registered listener
+ */
+ void removeDatabaseRegistrationsListener( [in] XDatabaseRegistrationsListener Listener );
+};
+
+//=============================================================================
+
+}; }; }; };
+
+//=============================================================================
+
+#endif
diff --git a/offapi/com/sun/star/sdb/XDatabaseRegistrationsListener.idl b/offapi/com/sun/star/sdb/XDatabaseRegistrationsListener.idl
new file mode 100644
index 000000000000..f5fc65513d6e
--- /dev/null
+++ b/offapi/com/sun/star/sdb/XDatabaseRegistrationsListener.idl
@@ -0,0 +1,70 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef __com_sun_star_sdb_XDatabaseRegistrationsListener_idl__
+#define __com_sun_star_sdb_XDatabaseRegistrationsListener_idl__
+
+#include <com/sun/star/lang/XEventListener.idl>
+#include <com/sun/star/sdb/DatabaseRegistrationEvent.idl>
+
+//=============================================================================
+
+module com { module sun { module star { module sdb {
+
+//=============================================================================
+
+/** implemented by components which want to be notified of changes in the application-wide registered
+ databases.
+
+ @see XDatabaseRegistrations
+
+ @since OpenOffice.org 3.3
+ */
+interface XDatabaseRegistrationsListener : ::com::sun::star::lang::XEventListener
+{
+ /** called when a database has been registered
+ */
+ void registeredDatabaseLocation( [in] DatabaseRegistrationEvent Event );
+
+ /** called when a database registration has been revoked
+ */
+ void revokedDatabaseLocation( [in] DatabaseRegistrationEvent Event );
+
+ /** called when a the location of a registered database changed
+
+ <p>Note that this talks about registration data only. That is, if the actual file denoted by the database
+ registration is moved, this is in no way monitored or reported. Only (successful) calls to
+ <member>XDatabaseRegistrations::changeDatabaseLocation</member> are reported here.</p>
+ */
+ void changedDatabaseLocation( [in] DatabaseRegistrationEvent Event );
+};
+
+//=============================================================================
+
+}; }; }; };
+
+//=============================================================================
+
+#endif
diff --git a/offapi/com/sun/star/sdb/makefile.mk b/offapi/com/sun/star/sdb/makefile.mk
index b535584fc4b8..3e76283ecf18 100644
--- a/offapi/com/sun/star/sdb/makefile.mk
+++ b/offapi/com/sun/star/sdb/makefile.mk
@@ -62,6 +62,7 @@ IDLFILES=\
DatabaseContext.idl \
DatabaseDocument.idl \
DatabaseEnvironment.idl \
+ DatabaseRegistrationEvent.idl \
DataColumn.idl \
DataSettings.idl \
DataSource.idl \
@@ -113,6 +114,8 @@ IDLFILES=\
XDataAccessDescriptorFactory.idl \
XDatabaseAccess.idl \
XDatabaseAccessListener.idl \
+ XDatabaseRegistrations.idl \
+ XDatabaseRegistrationsListener.idl \
XDatabaseEnvironment.idl \
XDocumentDataSource.idl \
XFormDocumentsSupplier.idl \
diff --git a/offapi/com/sun/star/view/XFormLayerAccess.idl b/offapi/com/sun/star/view/XFormLayerAccess.idl
index a5a96dd31e5d..16d8fb5137c3 100644
--- a/offapi/com/sun/star/view/XFormLayerAccess.idl
+++ b/offapi/com/sun/star/view/XFormLayerAccess.idl
@@ -37,8 +37,8 @@
#ifndef __com_sun_star_form_XForm_idl__
#include <com/sun/star/form/XForm.idl>
#endif
-#ifndef __com_sun_star_form_XFormController_idl__
-#include <com/sun/star/form/XFormController.idl>
+#ifndef __com_sun_star_form_runtime_XFormController_idl__
+#include <com/sun/star/form/runtime/XFormController.idl>
#endif
#ifndef __com_sun_star_lang_IllegalArgumentException_idl__
#include <com/sun/star/lang/IllegalArgumentException.idl>
@@ -73,10 +73,10 @@ interface XFormLayerAccess
@see isDesignMode
@see setDesignMode
- @see ::com::sun::star::form::FormController
+ @see ::com::sun::star::form::runtime::FormController
@see ::com::sun::star::form::runtime::FormOperations
*/
- ::com::sun::star::form::XFormController
+ ::com::sun::star::form::runtime::XFormController
getFormController(
[in] ::com::sun::star::form::XForm Form
);