c418aa2076
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)
573 lines
28 KiB
C++
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
|
|
|