/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef __com_sun_star_sdb_application_XDatabaseDocumentUI_idl__
#define __com_sun_star_sdb_application_XDatabaseDocumentUI_idl__
#include This interface is available when a database document has been loaded into
a frame, at the controller of this frame. Note that reading this attribute is equivalent to querying the component
for the com::sun::star::frame::XController interface,
asking the controller for its frame, and asking this frame for its
container window. Note that the connection returned here is really the working connection
of the application. Clients should not misuse it, in particular, closing
the connection can yield unexpected results and should definitely be
avoided. If you need a separate connection to the data source, use
com::sun::star::sdbc::XDataSource::getConnection(). If the application is already connected, nothing happens. If it is not
connected, the application will try to establish a connection by using
com::sun::star::sdbc::XDataSource::getConnection()
with the current settings, as specified in the
com::sun::star::sdb::DataSource::Settings member. If the connection cannot be established, the respective error message is shown
in the application window. During working with the database, the user might open different sub components:
forms, reports, tables, queries. Those components are tracked by the application,
and provided in this attribute. The components here might either be documents (com::sun::star::frame::XModel),
controllers (com::sun::star::frame::XController), or frames
(com::sun::star::frame::XFrame).
@since OOo 3.0
*/
[attribute, readonly] sequence< ::com::sun::star::lang::XComponent >
SubComponents;
/** identifies the given sub component
@param SubComponent
the component to identify. Must be one of the components in #SubComponents.
@return
a record describing the sub component. The first element of the returned pair is the type
of the component, denoted by one of the DatabaseObject constants. The second
element is the name of the component. For object types which support nested structures (forms
and reports, actually), this might be a hierarchical name. If the sub component has been newly created,
and not yet saved, this name is empty.
@throws ::com::sun::star::lang::IllegalArgumentException
if the given component is not one of the controller's sub components
*/
::com::sun::star::beans::Pair< long, string >
identifySubComponent(
[in] ::com::sun::star::lang::XComponent SubComponent
)
raises (
::com::sun::star::lang::IllegalArgumentException
);
/** closes all sub components of the database document.
During working with the database, the user might open different sub components:
forms, reports, tables, queries. If you need to close all those documents, use
In a first step, the sub components will be suspended
(com::sun::star::frame::XController::suspend()). There
are basically two reasons why suspending a single sub component can fail: The
user might veto it (she's asked if the document is currently modified), and
the component might be uncloseable currently, e.g. due to an open modal
dialog, or a long-lasting operation running currently (e.g. printing). Once all sub components have been suspended, they will, in a second step,
be closed. Again, closing might be vetoed by other instances, e.g. by a close
listener registered at the component. This method allows programmatic access to the functionality which is present in the UI:
it allows opening a table, query, form, or report for either editing or viewing. This method is a convenience wrapper for API which is also available otherwise. For instance,
for loading forms and reports, you could use the com::sun::star::frame::XComponentLoader
interface of the ::com::sun::star::sdb::Forms resp. ::com::sun::star::sdb::Reports
collections. Note there must exist a connection to the database before you can call this method. If an error occurs opening the given object, then this is reported to the user via an error dialog. For the different object types, this means the following
closeSubComponents
, which will gracefully do this.
ForEditing
= `TRUE`ForEditing
= `FALSE`
Tables
A table designer is opened, and allows to edit the structure of the table.
See also ::com::sun::star::sdb::TableDesign
A table data view is opened, and allows to view and edit the data contained in the table.
See also ::com::sun::star::sdb::DataSourceBrowser
Queries
A query designer is opened, and allows to edit the statement constituting the query.
See also ::com::sun::star::sdb::QueryDesign
A table data view is opened, and allows to view and edit the data contained in the query.
See also ::com::sun::star::sdb::DataSourceBrowser
Forms
The form document is opened in design mode, that is, you can modify it.
The form document is opened in read-only mode, allowing you to view and enter the data
which the form is based on, but not the form design.
Reports
The report document is opened in design mode, that is, you can modify it.
The report is executed, and the results will be displayed.
In opposite to loadComponent(), this method allows you to specify additional arguments which are passed to the to-be-loaded component.
The meaning of the arguments is defined at the service which is effectively created. See the above table for a list of those services.
*/ ::com::sun::star::lang::XComponent loadComponentWithArguments( [in] long ObjectType, [in] string ObjectName, [in] boolean ForEditing, [in] sequence< ::com::sun::star::beans::PropertyValue > Arguments ) raises ( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::sdbc::SQLException ); /** creates a new sub component of the given type @param ObjectType specifies the type of the object, must be one of the DatabaseObject constants. @param DocumentDefinition Upon successful return, and if and only if ObjectType equals DatabaseObject::FORM or DatabaseObject::REPORT, this will contain the com::sun::star::sdb::DocumentDefinition object which controls the sub component. */ ::com::sun::star::lang::XComponent createComponent( [in] long ObjectType, [out] ::com::sun::star::lang::XComponent DocumentDefinition ) raises ( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::sdbc::SQLException ); /** creates a new sub component of the given typeIn opposite to createComponent(), this method allows you to specify additional arguments which are passed to the to-be-loaded component.
@param ObjectType specifies the type of the object, must be one of the DatabaseObject constants. @param Arguments The meaning of the arguments is defined at the service which is effectively created. See the above table for a list of those services. @param DocumentDefinition Upon successful return, and if and only if ObjectType equals DatabaseObject::FORM or DatabaseObject::REPORT, this will contain the com::sun::star::sdb::DocumentDefinition object which controls the sub component.Hidden
flag (set to `TRUE`) in Arguments,
manipulate the component, and then finally show it by invoking the show
command at the
definition object.
*/
::com::sun::star::lang::XComponent createComponentWithArguments(
[in] long ObjectType,
[in] sequence< ::com::sun::star::beans::PropertyValue > Arguments,
[out] ::com::sun::star::lang::XComponent DocumentDefinition )
raises ( ::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::container::NoSuchElementException,
::com::sun::star::sdbc::SQLException );
};
}; }; }; }; };
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */