2004-08-02 14:28:20 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2008-04-10 12:53:24 +00:00
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2004-08-02 14:28:20 +00:00
|
|
|
*
|
2010-02-12 15:01:35 +01:00
|
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
2004-08-02 14:28:20 +00:00
|
|
|
*
|
2008-04-10 12:53:24 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2004-08-02 14:28:20 +00:00
|
|
|
*
|
2008-04-10 12:53:24 +00:00
|
|
|
* This file is part of OpenOffice.org.
|
2004-08-02 14:28:20 +00:00
|
|
|
*
|
2008-04-10 12:53:24 +00:00
|
|
|
* 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.
|
2004-08-02 14:28:20 +00:00
|
|
|
*
|
2008-04-10 12:53:24 +00:00
|
|
|
* 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).
|
2004-08-02 14:28:20 +00:00
|
|
|
*
|
2008-04-10 12:53:24 +00:00
|
|
|
* 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.
|
2004-08-02 14:28:20 +00:00
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
|
|
|
|
#ifndef DBAUI_APPCONTROLLER_HXX
|
|
|
|
#define DBAUI_APPCONTROLLER_HXX
|
|
|
|
|
2008-06-25 11:35:42 +00:00
|
|
|
#include "IApplicationController.hxx"
|
2004-08-02 14:28:20 +00:00
|
|
|
#include "AppElementType.hxx"
|
2008-03-06 17:09:44 +00:00
|
|
|
#include "callbacks.hxx"
|
|
|
|
#include "commontypes.hxx"
|
|
|
|
#include "dsntypes.hxx"
|
|
|
|
#include "genericcontroller.hxx"
|
|
|
|
#include "linkeddocuments.hxx"
|
|
|
|
#include "moduledbu.hxx"
|
|
|
|
#include "TableCopyHelper.hxx"
|
|
|
|
|
2006-10-05 11:59:20 +00:00
|
|
|
/** === begin UNO includes === **/
|
2004-08-02 14:28:20 +00:00
|
|
|
#include <com/sun/star/beans/XPropertyChangeListener.hpp>
|
2008-03-06 17:09:44 +00:00
|
|
|
#include <com/sun/star/container/XContainerListener.hpp>
|
2006-10-05 11:59:20 +00:00
|
|
|
#include <com/sun/star/sdb/application/XDatabaseDocumentUI.hpp>
|
2008-03-06 17:09:44 +00:00
|
|
|
#include <com/sun/star/util/XModifiable.hpp>
|
2008-06-25 11:35:42 +00:00
|
|
|
#include <com/sun/star/ui/XContextMenuInterception.hpp>
|
2006-10-05 11:59:20 +00:00
|
|
|
/** === end UNO includes === **/
|
2008-03-06 17:09:44 +00:00
|
|
|
|
|
|
|
#include <comphelper/stl_types.hxx>
|
2008-05-05 14:51:28 +00:00
|
|
|
#include <comphelper/namedvaluecollection.hxx>
|
2008-03-06 17:09:44 +00:00
|
|
|
#include <comphelper/uno3.hxx>
|
2008-06-25 11:35:42 +00:00
|
|
|
#include <cppuhelper/implbase5.hxx>
|
2008-03-06 17:09:44 +00:00
|
|
|
#include <sot/storage.hxx>
|
|
|
|
#include <svtools/transfer.hxx>
|
|
|
|
#include <svx/dataaccessdescriptor.hxx>
|
|
|
|
#include <vcl/timer.hxx>
|
2004-11-17 13:45:54 +00:00
|
|
|
|
2004-08-02 14:28:20 +00:00
|
|
|
#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)
|
2008-03-06 17:09:44 +00:00
|
|
|
|
2004-08-02 14:28:20 +00:00
|
|
|
//........................................................................
|
|
|
|
namespace dbaui
|
|
|
|
{
|
|
|
|
//........................................................................
|
2008-12-01 12:31:27 +00:00
|
|
|
|
|
|
|
class SubComponentManager;
|
|
|
|
|
2004-08-02 14:28:20 +00:00
|
|
|
//====================================================================
|
|
|
|
//= OApplicationController
|
|
|
|
//====================================================================
|
|
|
|
class OApplicationController;
|
|
|
|
class OApplicationView;
|
|
|
|
class OLinkedDocumentsAccess;
|
2008-03-06 17:09:44 +00:00
|
|
|
typedef OGenericUnoController OApplicationController_CBASE;
|
2008-06-25 11:35:42 +00:00
|
|
|
typedef ::cppu::ImplHelper5 < ::com::sun::star::container::XContainerListener
|
2006-10-05 11:59:20 +00:00
|
|
|
, ::com::sun::star::beans::XPropertyChangeListener
|
|
|
|
, ::com::sun::star::sdb::application::XDatabaseDocumentUI
|
2008-06-25 11:35:42 +00:00
|
|
|
, ::com::sun::star::ui::XContextMenuInterception
|
|
|
|
, ::com::sun::star::view::XSelectionSupplier
|
2004-08-02 14:28:20 +00:00
|
|
|
> OApplicationController_Base;
|
|
|
|
|
2008-06-25 11:35:42 +00:00
|
|
|
class SelectionNotifier;
|
|
|
|
|
2004-08-02 14:28:20 +00:00
|
|
|
class OApplicationController
|
|
|
|
:public OApplicationController_CBASE
|
|
|
|
,public OApplicationController_Base
|
2008-06-25 11:35:42 +00:00
|
|
|
,public IApplicationController
|
2004-08-02 14:28:20 +00:00
|
|
|
{
|
|
|
|
public:
|
2005-09-23 11:14:43 +00:00
|
|
|
typedef ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainer > TContainer;
|
|
|
|
typedef ::std::vector< TContainer > TContainerVector;
|
|
|
|
|
2004-08-02 14:28:20 +00:00
|
|
|
private:
|
|
|
|
|
2005-01-21 16:05:23 +00:00
|
|
|
OTableCopyHelper::DropDescriptor m_aAsyncDrop;
|
2005-10-24 07:30:19 +00:00
|
|
|
|
|
|
|
SharedConnection m_xDataSourceConnection;
|
|
|
|
::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >
|
|
|
|
m_xMetaData;
|
|
|
|
|
2008-06-25 11:35:42 +00:00
|
|
|
OModuleClient m_aModuleClient;
|
2004-08-02 14:28:20 +00:00
|
|
|
TransferableDataHelper m_aSystemClipboard; // content of the clipboard
|
2008-06-25 11:35:42 +00:00
|
|
|
::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
|
|
|
|
m_xDataSource;
|
2005-09-23 11:14:43 +00:00
|
|
|
::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >
|
|
|
|
m_xModel;
|
2008-03-06 17:09:44 +00:00
|
|
|
::com::sun::star::uno::Reference< ::com::sun::star::util::XModifiable >
|
|
|
|
m_xDocumentModify;
|
2008-06-25 11:35:42 +00:00
|
|
|
::cppu::OInterfaceContainerHelper
|
|
|
|
m_aContextMenuInterceptors;
|
|
|
|
|
|
|
|
TContainerVector m_aCurrentContainers; // the containers where we are listener on
|
2008-12-01 12:31:27 +00:00
|
|
|
::rtl::Reference< SubComponentManager >
|
|
|
|
m_pSubComponentManager;
|
2008-10-01 12:28:29 +00:00
|
|
|
::dbaccess::ODsnTypeCollection
|
|
|
|
m_aTypeCollection;
|
2005-01-21 16:05:23 +00:00
|
|
|
OTableCopyHelper m_aTableCopyHelper;
|
2004-08-02 14:28:20 +00:00
|
|
|
TransferableClipboardListener*
|
|
|
|
m_pClipbordNotifier; // notifier for changes in the clipboard
|
2008-08-18 12:22:07 +00:00
|
|
|
ULONG m_nAsyncDrop;
|
2008-03-06 17:09:44 +00:00
|
|
|
OAsyncronousLink m_aControllerConnectedEvent;
|
2008-06-25 11:35:42 +00:00
|
|
|
OAsyncronousLink m_aSelectContainerEvent;
|
2004-08-02 14:28:20 +00:00
|
|
|
PreviewMode m_ePreviewMode; // the mode of the preview
|
2008-03-06 17:09:44 +00:00
|
|
|
ElementType m_eCurrentType;
|
2004-08-02 14:28:20 +00:00
|
|
|
sal_Bool m_bNeedToReconnect; // true when the settings of the data source were modified and the connection is no longer up to date
|
2008-03-06 17:09:44 +00:00
|
|
|
sal_Bool m_bSuspended; // is true when the controller was already suspended
|
2004-08-02 14:28:20 +00:00
|
|
|
|
2008-06-25 11:35:42 +00:00
|
|
|
::std::auto_ptr< SelectionNotifier >
|
|
|
|
m_pSelectionNotifier;
|
|
|
|
typedef ::std::map< ElementType, ::std::vector< ::rtl::OUString > > SelectionByElementType;
|
|
|
|
SelectionByElementType m_aPendingSelection;
|
|
|
|
|
2008-03-06 17:09:44 +00:00
|
|
|
private:
|
2004-08-02 14:28:20 +00:00
|
|
|
|
|
|
|
OApplicationView* getContainer() const;
|
|
|
|
|
2008-04-04 13:54:23 +00:00
|
|
|
|
2004-08-02 14:28:20 +00:00
|
|
|
/** returns the database name
|
|
|
|
@return
|
|
|
|
the database name
|
|
|
|
*/
|
2008-12-01 12:31:27 +00:00
|
|
|
::rtl::OUString getDatabaseName() const;
|
2004-08-02 14:28:20 +00:00
|
|
|
|
|
|
|
/** 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;
|
|
|
|
|
2005-01-21 16:05:23 +00:00
|
|
|
/** 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;
|
|
|
|
|
2004-08-02 14:28:20 +00:00
|
|
|
/** 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
|
2006-12-13 15:46:39 +00:00
|
|
|
@param _eOpenMode
|
|
|
|
denotes the mode in which to open the object
|
|
|
|
@param _nInstigatorCommand
|
|
|
|
denotes the command which instigated the action. Might be 0.
|
2005-01-21 16:05:23 +00:00
|
|
|
@return the form or report model will only be returned, otherwise <NULL/>
|
2004-08-02 14:28:20 +00:00
|
|
|
*/
|
2006-12-13 15:46:39 +00:00
|
|
|
::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > openElement(
|
|
|
|
const ::rtl::OUString& _sName,
|
|
|
|
ElementType _eType,
|
2008-05-05 14:51:28 +00:00
|
|
|
ElementOpenMode _eOpenMode,
|
2006-12-13 15:46:39 +00:00
|
|
|
sal_uInt16 _nInstigatorCommand = 0
|
|
|
|
);
|
2004-08-02 14:28:20 +00:00
|
|
|
|
2008-05-05 14:51:28 +00:00
|
|
|
/** 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
|
|
|
|
);
|
|
|
|
|
2004-08-02 14:28:20 +00:00
|
|
|
/** opens a new frame for creation or auto pilot
|
|
|
|
@param _eType
|
|
|
|
Defines the type to open
|
2010-01-26 23:25:22 +01:00
|
|
|
@param i_rAdditionalArguments
|
|
|
|
Additional arguments to pass when creating the component
|
2004-08-02 14:28:20 +00:00
|
|
|
*/
|
2010-01-26 23:25:22 +01:00
|
|
|
::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
|
2010-01-29 13:06:38 +01:00
|
|
|
newElement(
|
|
|
|
ElementType _eType,
|
|
|
|
const ::comphelper::NamedValueCollection& i_rAdditionalArguments,
|
|
|
|
::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& o_rDocumentDefinition
|
|
|
|
);
|
2004-08-02 14:28:20 +00:00
|
|
|
|
2005-01-21 16:05:23 +00:00
|
|
|
/** 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 );
|
2004-08-02 14:28:20 +00:00
|
|
|
|
|
|
|
/** 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;
|
|
|
|
|
2008-06-25 11:35:42 +00:00
|
|
|
/// fills the list with the selected entries.
|
2007-11-21 14:49:47 +00:00
|
|
|
void getSelectionElementNames( ::std::vector< ::rtl::OUString>& _rNames ) const;
|
2004-08-02 14:28:20 +00:00
|
|
|
|
|
|
|
/// deletes the entries selected.
|
|
|
|
void deleteEntries();
|
|
|
|
|
|
|
|
/// renames the selected entry in the detail page
|
|
|
|
void renameEntry();
|
|
|
|
|
2004-10-22 10:59:25 +00:00
|
|
|
/** deletes queries, forms, or reports
|
2004-08-02 14:28:20 +00:00
|
|
|
@param _eType
|
|
|
|
the type of the objects
|
|
|
|
@param _rList
|
2004-10-22 10:59:25 +00:00
|
|
|
The names of the elements to delete
|
|
|
|
@param _bConfirm
|
|
|
|
determines whether the user must confirm the deletion
|
2004-08-02 14:28:20 +00:00
|
|
|
*/
|
2004-10-22 10:59:25 +00:00
|
|
|
void deleteObjects( ElementType _eType,
|
|
|
|
const ::std::vector< ::rtl::OUString>& _rList,
|
|
|
|
bool _bConfirm );
|
|
|
|
|
2004-08-02 14:28:20 +00:00
|
|
|
/** 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);
|
|
|
|
|
2005-01-21 16:05:23 +00:00
|
|
|
/// returns the system clipboard.
|
|
|
|
const TransferableDataHelper& getViewClipboard() const { return m_aSystemClipboard; }
|
2004-08-02 14:28:20 +00:00
|
|
|
|
2005-01-21 16:05:23 +00:00
|
|
|
/// returns <TRUE/> if the clipboard supports a table format, otherwise <FALSE/>.
|
|
|
|
sal_Bool isTableFormat() const;
|
2004-08-02 14:28:20 +00:00
|
|
|
|
|
|
|
/** 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();
|
|
|
|
|
2008-12-01 12:31:27 +00:00
|
|
|
/** remember a newly opened sub document for later access
|
2004-08-02 14:28:20 +00:00
|
|
|
*/
|
2008-12-01 12:31:27 +00:00
|
|
|
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
|
|
|
|
);
|
2004-08-02 14:28:20 +00:00
|
|
|
|
|
|
|
/** 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);
|
2004-09-09 08:38:40 +00:00
|
|
|
/** 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.
|
2005-01-21 16:05:23 +00:00
|
|
|
@param _eOpenMode
|
2008-05-05 14:51:28 +00:00
|
|
|
Defines the mode of opening. @see ElementOpenMode
|
2004-09-09 08:38:40 +00:00
|
|
|
*/
|
2008-05-05 14:51:28 +00:00
|
|
|
void doAction(sal_uInt16 _nId ,ElementOpenMode _eOpenMode);
|
2007-09-26 13:46:38 +00:00
|
|
|
|
2007-11-20 18:23:05 +00:00
|
|
|
/** 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;
|
|
|
|
|
2008-12-01 12:31:27 +00:00
|
|
|
/** shows the preview for the given entry
|
2007-09-26 13:46:38 +00:00
|
|
|
*/
|
2008-12-01 12:31:27 +00:00
|
|
|
void showPreviewFor( const ElementType _eType,const ::rtl::OUString& _sName );
|
2008-03-06 17:09:44 +00:00
|
|
|
|
autorecovery: define a new css.document.XDocumentRecovery interface, implement it in both SFX and DBACCESS, and use it in the autorecovery
In this course, the auto recovery learned to restore multiple views of a document. Also, in the course of the change,
the LoadDispatchListener became superfluous, and was removed.
Also, the loader code in dbaccess was slightly adjusted, since now the connectController call is in the responsibility
of the loader, and must not happen inside the XController::attachModel call anymore. This change made the
ModelControllerConnector class superfluous, so it has been removed, too.
2010-01-05 22:32:38 +01:00
|
|
|
/** called we were attached to a frame
|
2008-03-06 17:09:44 +00:00
|
|
|
|
|
|
|
In particular, this is called *after* the controller has been announced to the model
|
|
|
|
(XModel::connectController)
|
2004-08-02 14:28:20 +00:00
|
|
|
*/
|
autorecovery: define a new css.document.XDocumentRecovery interface, implement it in both SFX and DBACCESS, and use it in the autorecovery
In this course, the auto recovery learned to restore multiple views of a document. Also, in the course of the change,
the LoadDispatchListener became superfluous, and was removed.
Also, the loader code in dbaccess was slightly adjusted, since now the connectController call is in the responsibility
of the loader, and must not happen inside the XController::attachModel call anymore. This change made the
ModelControllerConnector class superfluous, so it has been removed, too.
2010-01-05 22:32:38 +01:00
|
|
|
void onAttachedFrame();
|
2004-08-02 14:28:20 +00:00
|
|
|
|
2008-03-06 17:09:44 +00:00
|
|
|
/// 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();
|
|
|
|
|
2008-05-05 14:51:28 +00:00
|
|
|
/** verifies the object type denotes a valid DatabaseObject, and the object name denotes an existing
|
|
|
|
object of this type. Throws if not.
|
|
|
|
*/
|
2010-01-26 23:25:22 +01:00
|
|
|
void impl_validateObjectTypeAndName_throw( const sal_Int32 _nObjectType, const ::boost::optional< ::rtl::OUString >& i_rObjectName );
|
2008-05-05 14:51:28 +00:00
|
|
|
|
2008-03-06 17:09:44 +00:00
|
|
|
protected:
|
2008-04-04 13:54:23 +00:00
|
|
|
// ----------------------------------------------------------------
|
|
|
|
// 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 );
|
|
|
|
|
2004-08-02 14:28:20 +00:00
|
|
|
// 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
|
2004-09-09 08:38:40 +00:00
|
|
|
virtual void Execute(sal_uInt16 nId, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs);
|
2004-08-02 14:28:20 +00:00
|
|
|
|
|
|
|
// OGenericUnoController
|
2005-03-01 18:14:41 +00:00
|
|
|
virtual void onLoadedMenu( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XLayoutManager >& _xLayoutManager );
|
2004-08-02 14:28:20 +00:00
|
|
|
|
2008-04-04 13:54:23 +00:00
|
|
|
virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > getPrivateModel() const
|
|
|
|
{
|
|
|
|
return m_xModel;
|
|
|
|
}
|
|
|
|
|
2004-08-02 14:28:20 +00:00
|
|
|
virtual ~OApplicationController();
|
2006-10-05 11:59:20 +00:00
|
|
|
|
2004-08-02 14:28:20 +00:00
|
|
|
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
|
autorecovery: define a new css.document.XDocumentRecovery interface, implement it in both SFX and DBACCESS, and use it in the autorecovery
In this course, the auto recovery learned to restore multiple views of a document. Also, in the course of the change,
the LoadDispatchListener became superfluous, and was removed.
Also, the loader code in dbaccess was slightly adjusted, since now the connectController call is in the responsibility
of the loader, and must not happen inside the XController::attachModel call anymore. This change made the
ModelControllerConnector class superfluous, so it has been removed, too.
2010-01-05 22:32:38 +01:00
|
|
|
virtual void SAL_CALL attachFrame(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > & xFrame) throw( ::com::sun::star::uno::RuntimeException );
|
2004-08-02 14:28:20 +00:00
|
|
|
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);
|
|
|
|
|
2006-10-05 11:59:20 +00:00
|
|
|
// 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);
|
2008-03-06 17:09:44 +00:00
|
|
|
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);
|
2006-10-05 11:59:20 +00:00
|
|
|
virtual ::sal_Bool SAL_CALL isConnected( ) throw (::com::sun::star::uno::RuntimeException);
|
2008-12-01 12:31:27 +00:00
|
|
|
virtual void SAL_CALL connect( ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
|
2010-01-13 15:46:51 +01:00
|
|
|
virtual ::com::sun::star::beans::Pair< ::sal_Int32, ::rtl::OUString > SAL_CALL identifySubComponent( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& SubComponent ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
|
2008-03-06 17:09:44 +00:00
|
|
|
virtual ::sal_Bool SAL_CALL closeSubComponents( ) throw (::com::sun::star::uno::RuntimeException);
|
2008-05-05 14:51:28 +00:00
|
|
|
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);
|
2010-01-29 13:06:38 +01:00
|
|
|
virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > SAL_CALL createComponent( ::sal_Int32 ObjectType, ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& o_DocumentDefinition ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
|
|
|
|
virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > SAL_CALL createComponentWithArguments( ::sal_Int32 ObjectType, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& Arguments, ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& o_DocumentDefinition ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
|
2006-10-05 11:59:20 +00:00
|
|
|
|
2008-06-25 11:35:42 +00:00
|
|
|
// 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);
|
|
|
|
|
2007-09-26 13:46:38 +00:00
|
|
|
// 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);
|
2008-06-25 11:35:42 +00:00
|
|
|
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);
|
2007-09-26 13:46:38 +00:00
|
|
|
|
2005-10-24 07:30:19 +00:00
|
|
|
/** retrieves the current connection, creates it if necessary
|
2008-12-01 12:31:27 +00:00
|
|
|
|
|
|
|
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.
|
2004-08-02 14:28:20 +00:00
|
|
|
*/
|
2008-12-01 12:31:27 +00:00
|
|
|
const SharedConnection& ensureConnection( ::dbtools::SQLExceptionInfo* _pErrorInfo = NULL );
|
2004-08-02 14:28:20 +00:00
|
|
|
|
2005-10-24 07:30:19 +00:00
|
|
|
/** retrieves the current connection
|
2004-08-02 14:28:20 +00:00
|
|
|
*/
|
2005-10-24 07:30:19 +00:00
|
|
|
const SharedConnection& getConnection() const { return m_xDataSourceConnection; }
|
|
|
|
|
|
|
|
/// determines whether we're currently connected to the database
|
|
|
|
bool isConnected() const { return m_xDataSourceConnection.is(); }
|
2004-08-02 14:28:20 +00:00
|
|
|
|
2005-10-24 07:30:19 +00:00
|
|
|
const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >&
|
|
|
|
getConnectionMetaData() const { return m_xMetaData; }
|
2004-08-02 14:28:20 +00:00
|
|
|
|
|
|
|
/** refreshes the tables
|
|
|
|
*/
|
|
|
|
void refreshTables();
|
|
|
|
|
2008-06-25 11:35:42 +00:00
|
|
|
// IApplicationController
|
|
|
|
virtual bool onEntryDoubleClick(SvTreeListBox& _rTree);
|
2004-08-02 14:28:20 +00:00
|
|
|
virtual sal_Bool onContainerSelect(ElementType _eType);
|
2008-12-01 12:31:27 +00:00
|
|
|
virtual void onSelectionChanged();
|
|
|
|
virtual void onCutEntry();
|
|
|
|
virtual void onCopyEntry();
|
|
|
|
virtual void onPasteEntry();
|
|
|
|
virtual void onDeleteEntry();
|
2008-06-25 11:35:42 +00:00
|
|
|
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;
|
2004-08-02 14:28:20 +00:00
|
|
|
|
|
|
|
DECL_LINK( OnInvalidateClipboard, void* );
|
|
|
|
DECL_LINK( OnClipboardChanged, void* );
|
|
|
|
DECL_LINK( OnAsyncDrop, void* );
|
2005-01-21 16:05:23 +00:00
|
|
|
DECL_LINK( OnCreateWithPilot, void* );
|
2008-06-25 11:35:42 +00:00
|
|
|
DECL_LINK( OnSelectContainer, void* );
|
2008-03-06 17:09:44 +00:00
|
|
|
DECL_LINK( OnFirstControllerConnected, void* );
|
2004-08-02 14:28:20 +00:00
|
|
|
|
|
|
|
protected:
|
2006-10-05 11:59:20 +00:00
|
|
|
using OApplicationController_CBASE::connect;
|
2004-08-02 14:28:20 +00:00
|
|
|
|
2005-10-24 07:30:19 +00:00
|
|
|
/** disconnects from our XConnection, and cleans up this connection
|
2004-08-02 14:28:20 +00:00
|
|
|
*/
|
2005-10-24 07:30:19 +00:00
|
|
|
virtual void disconnect();
|
2004-08-02 14:28:20 +00:00
|
|
|
|
|
|
|
// late construction
|
|
|
|
virtual sal_Bool Construct(Window* pParent);
|
2004-11-16 13:30:18 +00:00
|
|
|
virtual void describeSupportedFeatures();
|
2004-08-02 14:28:20 +00:00
|
|
|
|
|
|
|
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
|
|
|
|
|