office-gobmx/dbaccess/source/ui/app/AppController.hxx
Jens-Heiner Rechtien c418aa2076 dba33a: summary migration from SVN
2009-11-06 13:10:39 +0000 msc  r277387 : minor fix for automatic test
2009-11-06 13:09:33 +0000 msc  r277385 : minor fix for automatic test
2009-11-06 12:30:57 +0000 fs  r277383 : argh. On some virtual machines, waiting 5 seconds for the event to arrive is not enough. Increasing the timeout ...
2009-11-06 12:13:34 +0000 fs  r277382 : this diagnostic code should not have slipped in
2009-11-05 13:21:06 +0000 fs  r277369 : SHL2NOCHECK=TRUE (requested by hjs)
2009-11-04 14:09:46 +0000 msc  r277355 : minor fix for automatic testing
2009-11-04 13:23:02 +0000 msc  r277352 : minor fix for automatic testing
2009-11-04 10:53:28 +0000 msc  r277341 : minor fix for automated testscript
2009-11-04 08:30:58 +0000 msc  r277333 : minor fix for automatic test
2009-11-04 08:15:43 +0000 msc  r277332 : minor fix for automatic test
2009-11-03 14:25:44 +0000 fs  r277324 : #i10000#
2009-11-03 09:47:47 +0000 fs  r277315 : found yet another help ID zombie ... moved formhelpid.hrc content to propctrlr.hrc, where it belongs
2009-11-03 08:50:24 +0000 fs  r277312 : use createTempFileURL, which cares for some more specialities ...
2009-11-03 08:44:55 +0000 fs  r277311 : when creating a temp file for purpose of getting a temp file URL, the delete the file immediately. On some machines/JVMs, the file exists, with write access denied, which isn't Good (TM)
2009-10-22 13:06:17 +0000 fs  r277126 : removed wrong assertion
2009-10-21 08:10:35 +0000 fs  r277077 : reverted the previous change, which was nonsense
2009-10-21 07:19:43 +0000 fs  r277076 : export the component_foo functions, now that some of the objects are built with VISIBILITY_HIDDEN=TRUE
2009-10-21 07:08:35 +0000 fs  r277075 : spare useless call
2009-10-20 21:26:31 +0000 fs  r277072 : #i10000#
2009-10-20 08:06:04 +0000 fs  r277039 : CWS-TOOLING: rebase CWS dba33a to trunk@277035 (milestone: DEV300:m62)
2009-10-16 09:55:25 +0000 fs  r276960 : remove one of the superfluous implts_doLayout calls introduced with the previous patch
2009-10-15 13:18:52 +0000 fs  r276941 : removed the basic tests. According to cn, they're not used anymore (for a long time), and according to 'du -h', they take up 6.0M on my hard disc. For too much for useless code, /me thinks.
2009-10-15 13:06:51 +0000 fs  r276940 : #i10000# remove useless include (otherwise the compiler warning it provokes would need to be fixed by declaring VISIBILITY_HIDDEN=TRUE in the makefile.mk)
2009-10-15 12:52:39 +0000 fs  r276939 : #i10000#
2009-10-15 12:44:26 +0000 fs  r276938 : #i10000#
2009-10-15 12:00:33 +0000 fs  r276936 : #i10000#
2009-10-15 10:31:37 +0000 fs  r276934 : #i105259# prepare for the Hidden arg
2009-10-15 10:31:05 +0000 fs  r276933 : IsMaximized -> const
2009-10-15 09:50:15 +0000 fs  r276932 : during #i105259#:
introduce an option to the layout manager to preserve, if possible, the size of the content window
when layouting. Enable this option for embedded (SFX-based) documents opened for outplace editing.
(the option is incompatible with in-place editing, anyway)
This is because such embedded objects couple the (content) window size to the VisAreaSize, in that
both are used interchangeably. When an embedded object is closed, it remembers the VisAreaSize,
and restores it upon next open. This, however, leads to different content window sizes when the
window is closed with another toolbar set than used during opening.
This patch here prevents those different content window sizes. Also, now the content window size
doesn't change when, explicitly or implicitly, a toolbar is shown or hidden. Instead, the content
window size stays the same, and the container window size is adjusted.
2009-10-15 09:32:41 +0000 fs  r276931 : during #i105259#: UNO access to more attributes of top windows
2009-10-15 09:30:28 +0000 fs  r276930 : indention corrected (better readable)
2009-10-15 09:26:46 +0000 fs  r276929 : during #i105259#: access to more attributes of top windows
2009-10-14 10:04:39 +0000 fs  r276889 : connecting via services manager, not naming service
2009-10-12 11:31:08 +0000 fs  r276831 : during #i105806# FillPropertySet: do not attempt to set *AutoStyleName if it doesn't exist
2009-10-12 11:24:44 +0000 fs  r276830 : #i105806# getPropertyValue: throw an UnknownPropertyException for, well, unknown properties
2009-10-08 08:20:58 +0000 fs  r276774 : implSubmit: re-throw WrappedTargetExceptions unmodified
2009-10-07 19:19:42 +0000 fs  r276770 : #i105198# do not pass an CommandType if we do not have a command
2009-10-07 17:39:36 +0000 fs  r276768 : export the OWeakObject::disposeWeakConnectionPoint symbol
2009-10-07 12:59:17 +0000 fs  r276754 : #i87693#
2009-10-07 11:19:22 +0000 fs  r276752 : #i10000#
2009-10-07 10:21:08 +0000 fs  r276748 : #105482# do not require a controller, at least not in *all* circumstances (executed reports have a model, the ReportDefinition, but no Controller)
2009-10-07 10:04:08 +0000 fs  r276747 : copying the changes from CWS fwk121 herein, in particular the fix for
issue #i105371#
2009-10-07 09:58:30 +0000 fs  r276746 : copying the changes from CWS fwk121 herein, in particular the fix for
issue #i105371#
2009-10-07 09:48:14 +0000 fs  r276744 : removed (now) pointless assertion
2009-10-07 06:59:19 +0000 fs  r276740 : export the OWeakObject::disposeWeakConnectionPoint symbol
2009-10-07 06:44:43 +0000 fs  r276739 : OComponentHelper::release & WeakAggComponentImplHelperBase::release:
when our ref count drops to 0, call OWeakObject's disposeWeakConnectionPoint before (temporarily) incrementing
the ref count, again. This ensures that our adapter cannot create references to the dying object anymore.
(A complex test case in dbaccess (#i105505#) triggered such a situation, but in another class using an analogous
release/dispose/destroy pattern, namely WeakComponentImplHelperBase)
2009-10-07 06:37:20 +0000 fs  r276738 : found during some new complex test cases: call disposeWeakConnectionPoint before actually starting to destroy the object, this ensures no other threads will resurrect it while it is dying
2009-10-06 21:58:24 +0000 fs  r276734 : oops, two small corrections to the previous fix (hey, complex test cases are cool)
2009-10-06 21:51:16 +0000 fs  r276733 : log the name of the data source which cannot be revoked
2009-10-06 21:50:41 +0000 fs  r276732 : more detailed error message when cleanup fails
2009-10-06 21:50:01 +0000 fs  r276731 : reworked the ModelImpl caching. The new and improved UNO API test for css.sdb.RowSet
revealed some inconsistencies, in whether the objects are cached by their URL, or by their
registration name. This has been changed to caching by registration name.
2009-10-06 13:50:34 +0000 fs  r276714 : print diagnostics when we cannot clean up the test case
2009-10-06 13:45:02 +0000 fs  r276713 : this test failed all the time, since the core (rightfully) threw an exception. Disabled it for the moment, until issue 84253 is fixed
2009-10-06 12:52:46 +0000 fs  r276711 : rewrote this test. Now we do not re-use the same .odb across different test cases, as this leads to unreliable
(timing-dependent) results/failures. Instead, every test sets up a new odb file.
Also, did some re-factoring, improved the cleanup code, and caught a few more errors.
2009-10-06 12:51:07 +0000 fs  r276710 : DBTools taking a logger now
2009-10-06 12:50:42 +0000 fs  r276709 : taking a PrintWriter for logging purpose
2009-10-06 12:50:03 +0000 fs  r276708 : DBTools taking a logger now
2009-10-06 12:49:22 +0000 fs  r276707 : typo
2009-10-06 12:49:03 +0000 fs  r276706 : typo
2009-10-06 12:48:52 +0000 fs  r276705 : wrappers around some database-related services - initial versions only, to evolve over time, and intended to finally replace the DBTools class
2009-10-06 12:48:02 +0000 fs  r276704 : typo
2009-10-06 12:38:42 +0000 fs  r276702 : some better diagnostics, done during getting the API tests to work more reliably
2009-10-06 10:35:51 +0000 fs  r276698 : when living in, e.g., the DataSourceBrowser, we can't expect to find an XModifiable2, so don't assert its existence
2009-10-05 12:47:52 +0000 oj  r276677 : #i105607# check for read moved into if scope
2009-10-05 11:37:06 +0000 fs  r276676 : when saving a file fails, retrieve the error message from the InteractionRequestStringResolver - this is better than any generic message we can create
2009-10-05 10:04:23 +0000 oj  r276673 : #i105607# check for read moved into if scope
2009-10-05 09:46:17 +0000 fs  r276671 : #i10000#
2009-10-05 08:43:58 +0000 fs  r276664 : #i105505#
release: dispose the (base classes) weak connection point before disposing ourself,
and in particular before temporarily incrementing our ref count, again.
This way, we prevent that a separate thread re-surrects us (using the weak connection
point's queryAdapted) while we're in the process of destruction
2009-10-05 08:41:49 +0000 fs  r276663 : #i105505# +disposeWeakConnectionPoint (outsourced into dedicated method from ::release)
2009-10-05 08:40:26 +0000 fs  r276662 : no need to derived from OSubComponent, its features are not used, directly derive from WeakComponentImplFoo instead
2009-10-05 08:39:38 +0000 fs  r276661 : #i105505# diagnostics
2009-10-05 08:39:16 +0000 fs  r276660 : #i105505# +testDocumentRevenants
2009-10-05 08:36:01 +0000 fs  r276659 : #i105560# reverted the removal of GenericController::openHelpAgent - this is needed in module reportdesign
2009-10-04 19:53:30 +0000 fs  r276657 : #105560#
remove unused code
thanks to cmc@openoffice.org for submitting the patch
2009-10-04 19:50:28 +0000 fs  r276656 : #i105550# remove unused 'fire' method (thanks to cmc)
2009-10-03 16:13:15 +0000 fs  r276655 : CWS-TOOLING: rebase CWS dba33a to trunk@276429 (milestone: DEV300:m60)
2009-10-02 19:20:48 +0000 fs  r276651 : #i104117# lotta changed IDs ...
2009-10-02 10:52:24 +0000 fs  r276634 : #i105505#
If a model is created, and is a revenant of a previous incarnation, then ensure it is properly initialized.
In particular, in its ctor, set the state to "Initializing", not "Initialized", and then let the ModelImpl
call attachResource. This ensures that the model is initialized completely, including firing the necessary
events.
2009-10-02 10:51:08 +0000 fs  r276633 : #i105505# always do an attachResource at the newly loaded model, even if it (internally) was not really loaded, but only a revenant of a previous incarnation of this document
2009-10-01 11:10:13 +0000 fs  r276597 : do not rely on the name 'Standard' for the one and only form in a document
2009-10-01 10:36:29 +0000 fs  r276590 : #i105509# don't rely on default form component names, use indexes
2009-10-01 09:12:20 +0000 fs  r276582 : #i105505#
2009-09-30 07:55:21 +0000 fs  r276542 : removed some unsed methods / spared some unnecessary pixel<->logic conversion
2009-09-30 07:53:22 +0000 fs  r276541 : removed unneeded methods
2009-09-30 06:35:59 +0000 fs  r276538 : #i10000#
2009-09-29 13:45:02 +0000 fs  r276531 : refactored the Roadmap* classes, to be able to fix above-mentioned #i105113#
2009-09-29 10:27:10 +0000 fs  r276520 : #i105367#
2009-09-29 08:46:45 +0000 fs  r276510 : #i104956# cleaned up the makefiles
2009-09-28 21:00:07 +0000 fs  r276505 : #i104117# sourced those IDs out from extension.hrc
2009-09-28 20:59:05 +0000 fs  r276504 : no need to let one FREE...
2009-09-28 20:53:36 +0000 fs  r276503 : #i104117#
cleaned up the mess with help IDs in module extensions.
Formerly, extensions used to use help IDs which were declared in module svx, and vice versa.
Also, help ID ranges were not respected.
2009-09-28 11:25:36 +0000 fs  r276489 : typo
2009-09-28 11:25:10 +0000 fs  r276488 : #i105235#
2009-09-24 11:53:16 +0000 fs  r276423 : #i105234# do not zoom the control when they view information is still uninitialized (happens at least in Writer when opening a form document)
2009-09-24 09:42:28 +0000 fs  r276415 : #i105234# proper zoom handling for the nav bar
2009-09-24 09:42:19 +0000 fs  r276414 : #i105234# setZoom: care for precision errors caused by implicit conversion float->double
2009-09-16 11:11:43 +0000 fs  r276195 : #i105082#
consolidated the sub storage handling, by delegating more functionality into
the DocumentStorageAccess class. As a result, there won't be that many unnecessary
commits anymore. Also, the two different storage caches (in ModelImpl::m_aStorages
and DocumentStorageAccess::m_aExposedStorages) have been consolidated.
This is not really part of the fix of issue 105082, but it helped reducing the
calls to the storage/package implementation.
2009-09-15 21:42:27 +0000 fs  r276190 : don't calculate space for BOLD if the text is not really bold (speeds up rendering for large tree structures)
2009-09-15 20:20:23 +0000 fs  r276188 : getTypeInfo: fill m_aTypeInfoRows only if really all type infos could be retrieved
2009-09-15 20:19:29 +0000 fs  r276187 : do not continue loading when the controller initialization throws an error
2009-09-14 12:25:57 +0000 fs  r276119 : oops, this patch was not intended for this CWS
2009-09-14 12:13:57 +0000 fs  r276114 : #cr6875455# introduce a ReferenceDevice property for various control models
2009-09-14 10:33:02 +0000 fs  r276106 : removed dead file
2009-09-09 08:37:31 +0000 fs  r275972 : remove OSL_TRACE in VCLXButton dtor
2009-09-08 11:19:17 +0000 oj  r275926 : i76534# remove mnemonic from fixed text
2009-09-07 08:39:37 +0000 fs  r275874 : create CWS dba33a from cws/dba32g@275857 (CWS: dba32g)
2009-11-27 12:39:32 +00:00

573 lines
28 KiB
C++

/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: AppController.hxx,v $
* $Revision: 1.30.20.2 $
*
* 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 DBAUI_APPCONTROLLER_HXX
#define DBAUI_APPCONTROLLER_HXX
#include "IApplicationController.hxx"
#include "AppElementType.hxx"
#include "callbacks.hxx"
#include "commontypes.hxx"
#include "documentcontroller.hxx"
#include "dsntypes.hxx"
#include "genericcontroller.hxx"
#include "linkeddocuments.hxx"
#include "moduledbu.hxx"
#include "TableCopyHelper.hxx"
/** === begin UNO includes === **/
#include <com/sun/star/beans/XPropertyChangeListener.hpp>
#include <com/sun/star/container/XContainerListener.hpp>
#include <com/sun/star/sdb/application/XDatabaseDocumentUI.hpp>
#include <com/sun/star/util/XModifiable.hpp>
#include <com/sun/star/ui/XContextMenuInterception.hpp>
/** === end UNO includes === **/
#include <comphelper/stl_types.hxx>
#include <comphelper/namedvaluecollection.hxx>
#include <comphelper/uno3.hxx>
#include <cppuhelper/implbase5.hxx>
#include <sot/storage.hxx>
#include <svtools/transfer.hxx>
#include <svx/dataaccessdescriptor.hxx>
#include <vcl/timer.hxx>
#include <memory>
class ListBox;
class SvLBoxEntry;
class SvTreeListBox;
class TransferableHelper;
class TransferableClipboardListener;
class SfxFilter;
FORWARD_DECLARE_INTERFACE(container,XNameContainer)
FORWARD_DECLARE_INTERFACE(container,XContainer)
FORWARD_DECLARE_INTERFACE(ucb,XContent)
//........................................................................
namespace dbaui
{
//........................................................................
class SubComponentManager;
//====================================================================
//= OApplicationController
//====================================================================
class OApplicationController;
class OApplicationView;
class OLinkedDocumentsAccess;
typedef OGenericUnoController OApplicationController_CBASE;
typedef ::cppu::ImplHelper5 < ::com::sun::star::container::XContainerListener
, ::com::sun::star::beans::XPropertyChangeListener
, ::com::sun::star::sdb::application::XDatabaseDocumentUI
, ::com::sun::star::ui::XContextMenuInterception
, ::com::sun::star::view::XSelectionSupplier
> OApplicationController_Base;
class SelectionNotifier;
class OApplicationController
:public OApplicationController_CBASE
,public OApplicationController_Base
,public IApplicationController
{
public:
typedef ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainer > TContainer;
typedef ::std::vector< TContainer > TContainerVector;
private:
OTableCopyHelper::DropDescriptor m_aAsyncDrop;
SharedConnection m_xDataSourceConnection;
::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >
m_xMetaData;
OModuleClient m_aModuleClient;
TransferableDataHelper m_aSystemClipboard; // content of the clipboard
::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
m_xDataSource;
::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >
m_xModel;
::com::sun::star::uno::Reference< ::com::sun::star::util::XModifiable >
m_xDocumentModify;
::cppu::OInterfaceContainerHelper
m_aContextMenuInterceptors;
ModelControllerConnector
m_aModelConnector;
TContainerVector m_aCurrentContainers; // the containers where we are listener on
::rtl::Reference< SubComponentManager >
m_pSubComponentManager;
::dbaccess::ODsnTypeCollection
m_aTypeCollection;
OTableCopyHelper m_aTableCopyHelper;
TransferableClipboardListener*
m_pClipbordNotifier; // notifier for changes in the clipboard
ULONG m_nAsyncDrop;
OAsyncronousLink m_aControllerConnectedEvent;
OAsyncronousLink m_aSelectContainerEvent;
PreviewMode m_ePreviewMode; // the mode of the preview
ElementType m_eCurrentType;
sal_Bool m_bNeedToReconnect; // true when the settings of the data source were modified and the connection is no longer up to date
sal_Bool m_bSuspended; // is true when the controller was already suspended
::std::auto_ptr< SelectionNotifier >
m_pSelectionNotifier;
typedef ::std::map< ElementType, ::std::vector< ::rtl::OUString > > SelectionByElementType;
SelectionByElementType m_aPendingSelection;
private:
OApplicationView* getContainer() const;
/** returns the database name
@return
the database name
*/
::rtl::OUString getDatabaseName() const;
/** returns the stripped database name.
@return
The stripped database name either the registered naem or if it is a file url the last segment.
*/
::rtl::OUString getStrippedDatabaseName() const;
/** return the element type for given container
@param _xContainer The container where the element type has to be found
@return the element type coressponding to the given container
*/
ElementType getElementType(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainer >& _xContainer) const;
/** opens a new frame with either the table or the query or report or form or view
@param _sName
The name of the object to open
@param _eType
Defines the type to open
@param _eOpenMode
denotes the mode in which to open the object
@param _nInstigatorCommand
denotes the command which instigated the action. Might be 0.
@return the form or report model will only be returned, otherwise <NULL/>
*/
::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > openElement(
const ::rtl::OUString& _sName,
ElementType _eType,
ElementOpenMode _eOpenMode,
sal_uInt16 _nInstigatorCommand = 0
);
/** opens a new sub frame with a table/query/form/report/view, passing additional arguments
*/
::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > openElementWithArguments(
const ::rtl::OUString& _sName,
ElementType _eType,
ElementOpenMode _eOpenMode,
sal_uInt16 _nInstigatorCommand,
const ::comphelper::NamedValueCollection& _rAdditionalArguments
);
/** opens a new frame for creation or auto pilot
@param _eType
Defines the type to open
@param _bSQLView
If <TRUE/> the query design will be opened in SQL view, otherwise not.
*/
void newElement( ElementType _eType , sal_Bool _bSQLView );
/** creates a new database object, using an auto pilot
@param _eType
Defines the type of the object to create
@precond
Our mutex must not be locked.
@since #i39203#
*/
void newElementWithPilot( ElementType _eType );
/** converts the query to a view
@param _sName
The name of the query.
*/
void convertToView(const ::rtl::OUString& _sName);
/** checks if the connection for the selected data source is read only. If the connection doesn't exist, <TRUE/> will be returned.
@return
<TRUE/> if read only or doesn't exist, otherwise <FALSE/>
*/
sal_Bool isConnectionReadOnly() const;
/// fills the list with the selected entries.
void getSelectionElementNames( ::std::vector< ::rtl::OUString>& _rNames ) const;
/// deletes the entries selected.
void deleteEntries();
/// renames the selected entry in the detail page
void renameEntry();
/** deletes queries, forms, or reports
@param _eType
the type of the objects
@param _rList
The names of the elements to delete
@param _bConfirm
determines whether the user must confirm the deletion
*/
void deleteObjects( ElementType _eType,
const ::std::vector< ::rtl::OUString>& _rList,
bool _bConfirm );
/** deletes tables.
@param _rList
The list of tables.
*/
void deleteTables(const ::std::vector< ::rtl::OUString>& _rList);
/// copies the current object into clipboard
TransferableHelper* copyObject();
/// returns the nameaccess
::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > getElements(ElementType _eType);
/** returns the document access for the specific type
@param _eType
the type
@return ::std::auto_ptr<OLinkedDocumentsAccess>
*/
::std::auto_ptr<OLinkedDocumentsAccess> getDocumentsAccess(ElementType _eType);
/// returns the query definitions of the active data source.
::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer> getQueryDefintions() const;
/** pastes a special format from the system clipboard to the currently selected object types
@param _nFormatId
The format to be copied.
*/
void pasteFormat(sal_uInt32 _nFormatId);
/** pastes a query, form or report into the data source
@param _eType
The type of the object to paste.
@param _rPasteData
The data descriptor.
@param _sParentFolder
The name of the parent folder if it exists.
@param _bMove
if <TRUE/> the name of the content must be inserted without any change, otherwise not.
@return
<TRUE/> if the paste opertions was successfull, otherwise <FALSE/>.
*/
sal_Bool paste( ElementType _eType,const ::svx::ODataAccessDescriptor& _rPasteData ,const String& _sParentFolder = String(),sal_Bool _bMove = sal_False);
/// returns the system clipboard.
const TransferableDataHelper& getViewClipboard() const { return m_aSystemClipboard; }
/// returns <TRUE/> if the clipboard supports a table format, otherwise <FALSE/>.
sal_Bool isTableFormat() const;
/** fills the vector with all supported formats
@param _eType
The type for which we need the formats
@param _rFormatIds
The vector to be filled up.
*/
void getSupportedFormats(ElementType _eType,::std::vector<SotFormatStringId>& _rFormatIds) const;
/** adds a listener to the current name access.
@param _xCollection
The collection where we want to listen on.
*/
void addContainerListener(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess>& _xCollection);
/** opens a uno dialog withthe currently selected data source as initialize argument
@param _sServiceName
The serivce name of the dialog to be executed.
*/
void openDialog(const ::rtl::OUString& _sServiceName);
/** opens the administration dialog for the selected data source
*/
void openDataSourceAdminDialog();
/** opens the table filter dialog for the selected data source
*/
void openTableFilterDialog();
/** opens the DirectSQLDialog to execute hand made sql statements.
*/
void openDirectSQLDialog();
/** when the settings of the data source changed,
it opens a dialog which ask to close all depending documents, then recreate the connection.
The SolarMutex has to be locked before calling this.
*/
void askToReconnect();
/** remember a newly opened sub document for later access
*/
void onDocumentOpened(
const ::rtl::OUString& _rName,
const sal_Int32 _nType,
const ElementOpenMode _eMode,
const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& _xDocument,
const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& _xDefinition
);
/** Inserts a new object into the hierachy given be the type.
@param _eType
Where to insert the new item.
@param _sParentFolder
The name of the parent folder if it exists.
@param _xContent
The content to insert.
@param _bMove
if <TRUE/> the name of the content must be inserted without any change, otherwise not.
@return
<TRUE/> if the insert opertions was successfull, otherwise <FALSE/>.
*/
sal_Bool insertHierachyElement( ElementType _eType
,const String& _sParentFolder
,sal_Bool _bCollection = sal_True
,const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent>& _xContent = ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent>()
,sal_Bool _bMove = sal_False);
/** checks if delete command or rename comamnd is allowed
@param _eType
The element type.
@param _bDelete
If <TRUE> then the delete command should be checked.
@return
<TRUE> if the command is allowed
*/
sal_Bool isRenameDeleteAllowed(ElementType _eType,sal_Bool _bDelete) const;
/** all selected entries will be opened, or edited, or converted to a view
@param _nId
The slot which should be executed.
@param _eOpenMode
Defines the mode of opening. @see ElementOpenMode
*/
void doAction(sal_uInt16 _nId ,ElementOpenMode _eOpenMode);
/** returns the currently selected table or query name.
*
* \return the name of the currently table or query. If the tables or query container is selected otherwise an empty string will be returned.
*/
::rtl::OUString getCurrentlySelectedName(sal_Int32& _rnCommandType) const;
/** shows the preview for the given entry
*/
void showPreviewFor( const ElementType _eType,const ::rtl::OUString& _sName );
/** called when we just connected to a new, non-NULL model
In particular, this is called *after* the controller has been announced to the model
(XModel::connectController)
*/
void onConnectedModel();
/// determines whether the given table name denotes a view which can be altered
bool impl_isAlterableView_nothrow( const ::rtl::OUString& _rTableOrViewName ) const;
/** does the macro/script migration, where macros/scripts in forms/reports are moved
to the database document itself.
*/
void impl_migrateScripts_nothrow();
/** verifies the object type denotes a valid DatabaseObject, and the object name denotes an existing
object of this type. Throws if not.
*/
void impl_validateObjectTypeAndName_throw( const sal_Int32 _nObjectType, const ::rtl::OUString& _rObjectName );
protected:
// ----------------------------------------------------------------
// initalizing members
/** forces usage of a connection which we do not own
<p>To be used from within XInitialization::initialize only.</p>
*/
void initializeConnection( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxForeignConn );
// state of a feature. 'feature' may be the handle of a ::com::sun::star::util::URL somebody requested a dispatch interface for OR a toolbar slot.
virtual FeatureState GetState(sal_uInt16 nId) const;
// execute a feature
virtual void Execute(sal_uInt16 nId, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs);
// OGenericUnoController
virtual void onLoadedMenu( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XLayoutManager >& _xLayoutManager );
virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > getPrivateModel() const
{
return m_xModel;
}
virtual ~OApplicationController();
public:
OApplicationController(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB);
DECLARE_XINTERFACE( )
DECLARE_XTYPEPROVIDER( )
// XServiceInfo
virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
// need by registration
static ::rtl::OUString getImplementationName_Static() throw( ::com::sun::star::uno::RuntimeException );
static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static(void) throw( ::com::sun::star::uno::RuntimeException );
static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
SAL_CALL Create(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&);
// ::com::sun::star::frame::XController
virtual sal_Bool SAL_CALL suspend(sal_Bool bSuspend) throw( ::com::sun::star::uno::RuntimeException );
virtual sal_Bool SAL_CALL attachModel(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & xModel) throw( ::com::sun::star::uno::RuntimeException );
virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > SAL_CALL getModel(void) throw( ::com::sun::star::uno::RuntimeException );
// ::com::sun::star::container::XContainerListener
virtual void SAL_CALL elementInserted(const ::com::sun::star::container::ContainerEvent& Event) throw( ::com::sun::star::uno::RuntimeException );
virtual void SAL_CALL elementRemoved(const ::com::sun::star::container::ContainerEvent& Event) throw( ::com::sun::star::uno::RuntimeException );
virtual void SAL_CALL elementReplaced(const ::com::sun::star::container::ContainerEvent& Event) throw( ::com::sun::star::uno::RuntimeException );
// XPropertyChangeListener
virtual void SAL_CALL propertyChange( const ::com::sun::star::beans::PropertyChangeEvent& evt ) throw (::com::sun::star::uno::RuntimeException);
// XDatabaseDocumentUI
virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource > SAL_CALL getDataSource() throw (::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow > SAL_CALL getApplicationMainWindow() throw (::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getActiveConnection() throw (::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > > SAL_CALL getSubComponents() throw (::com::sun::star::uno::RuntimeException);
virtual ::sal_Bool SAL_CALL isConnected( ) throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL connect( ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
virtual ::sal_Bool SAL_CALL closeSubComponents( ) throw (::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > SAL_CALL loadComponent( ::sal_Int32 ObjectType, const ::rtl::OUString& ObjectName, ::sal_Bool ForEditing ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > SAL_CALL loadComponentWithArguments( ::sal_Int32 ObjectType, const ::rtl::OUString& ObjectName, ::sal_Bool ForEditing, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& Arguments ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
// XContextMenuInterception
virtual void SAL_CALL registerContextMenuInterceptor( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XContextMenuInterceptor >& Interceptor ) throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL releaseContextMenuInterceptor( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XContextMenuInterceptor >& Interceptor ) throw (::com::sun::star::uno::RuntimeException);
// XSelectionSupplier
virtual ::sal_Bool SAL_CALL select( const ::com::sun::star::uno::Any& xSelection ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Any SAL_CALL getSelection( ) throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL addSelectionChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removeSelectionChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
/** retrieves the current connection, creates it if necessary
If an error occurs, then this is either stored in the location pointed to by <arg>_pErrorInfo</arg>,
or, if <code>_pErrorInfo</code> is <NULL/>, then the error is displayed to the user.
*/
const SharedConnection& ensureConnection( ::dbtools::SQLExceptionInfo* _pErrorInfo = NULL );
/** retrieves the current connection
*/
const SharedConnection& getConnection() const { return m_xDataSourceConnection; }
/// determines whether we're currently connected to the database
bool isConnected() const { return m_xDataSourceConnection.is(); }
const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >&
getConnectionMetaData() const { return m_xMetaData; }
/** refreshes the tables
*/
void refreshTables();
// IApplicationController
virtual bool onEntryDoubleClick(SvTreeListBox& _rTree);
virtual sal_Bool onContainerSelect(ElementType _eType);
virtual void onSelectionChanged();
virtual void onCutEntry();
virtual void onCopyEntry();
virtual void onPasteEntry();
virtual void onDeleteEntry();
virtual void previewChanged( sal_Int32 _nMode);
virtual void containerFound( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainer >& _xContainer);
// IController (base of IApplicationController)
virtual void executeUnChecked(const ::com::sun::star::util::URL& _rCommand, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs);
virtual void executeChecked(const ::com::sun::star::util::URL& _rCommand, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs);
virtual void executeUnChecked(sal_uInt16 _nCommandId, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs);
virtual void executeChecked(sal_uInt16 _nCommandId, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs);
virtual sal_Bool isCommandEnabled(sal_uInt16 _nCommandId) const;
virtual sal_Bool isCommandEnabled( const ::rtl::OUString& _rCompleteCommandURL ) const;
virtual sal_uInt16 registerCommandURL( const ::rtl::OUString& _rCompleteCommandURL );
virtual void notifyHiContrastChanged();
virtual sal_Bool isDataSourceReadOnly() const;
virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >
getXController(void) throw( ::com::sun::star::uno::RuntimeException );
virtual bool interceptUserInput( const NotifyEvent& _rEvent );
// IControlActionListener overridables
virtual sal_Bool requestQuickHelp( const SvLBoxEntry* _pEntry, String& _rText ) const;
virtual sal_Bool requestDrag( sal_Int8 _nAction, const Point& _rPosPixel );
virtual sal_Int8 queryDrop( const AcceptDropEvent& _rEvt, const DataFlavorExVector& _rFlavors );
virtual sal_Int8 executeDrop( const ExecuteDropEvent& _rEvt );
// IContextMenuProvider (base of IApplicationController)
virtual PopupMenu* getContextMenu( Control& _rControl ) const;
virtual IController& getCommandController();
virtual ::cppu::OInterfaceContainerHelper*
getContextMenuInterceptors();
virtual ::com::sun::star::uno::Any
getCurrentSelection( Control& _rControl ) const;
DECL_LINK( OnInvalidateClipboard, void* );
DECL_LINK( OnClipboardChanged, void* );
DECL_LINK( OnAsyncDrop, void* );
DECL_LINK( OnCreateWithPilot, void* );
DECL_LINK( OnSelectContainer, void* );
DECL_LINK( OnFirstControllerConnected, void* );
protected:
using OApplicationController_CBASE::connect;
/** disconnects from our XConnection, and cleans up this connection
*/
virtual void disconnect();
// late construction
virtual sal_Bool Construct(Window* pParent);
virtual void describeSupportedFeatures();
protected:
// XEventListener
virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw( ::com::sun::star::uno::RuntimeException );
// OComponentHelper
virtual void SAL_CALL disposing();
};
//........................................................................
} // namespace dbaui
//........................................................................
#endif // DBAUI_APPCONTROLLER_HXX