1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef DBAUI_APPCONTROLLER_HXX 25 #define DBAUI_APPCONTROLLER_HXX 26 27 #include "IApplicationController.hxx" 28 #include "AppElementType.hxx" 29 #include "callbacks.hxx" 30 #include "commontypes.hxx" 31 #include "dsntypes.hxx" 32 #include "genericcontroller.hxx" 33 #include "linkeddocuments.hxx" 34 #include "moduledbu.hxx" 35 #include "TableCopyHelper.hxx" 36 37 /** === begin UNO includes === **/ 38 #include <com/sun/star/beans/XPropertyChangeListener.hpp> 39 #include <com/sun/star/container/XContainerListener.hpp> 40 #include <com/sun/star/sdb/application/XDatabaseDocumentUI.hpp> 41 #include <com/sun/star/util/XModifiable.hpp> 42 #include <com/sun/star/ui/XContextMenuInterception.hpp> 43 /** === end UNO includes === **/ 44 45 #include <comphelper/stl_types.hxx> 46 #include <comphelper/namedvaluecollection.hxx> 47 #include <comphelper/uno3.hxx> 48 #include <cppuhelper/implbase5.hxx> 49 #include <sot/storage.hxx> 50 #include <svtools/transfer.hxx> 51 #include <svx/dataaccessdescriptor.hxx> 52 #include <vcl/timer.hxx> 53 54 #include <memory> 55 56 class ListBox; 57 class SvLBoxEntry; 58 class SvTreeListBox; 59 class TransferableHelper; 60 class TransferableClipboardListener; 61 class SfxFilter; 62 63 FORWARD_DECLARE_INTERFACE(container,XNameContainer) 64 FORWARD_DECLARE_INTERFACE(container,XContainer) 65 FORWARD_DECLARE_INTERFACE(ucb,XContent) 66 67 //........................................................................ 68 namespace dbaui 69 { 70 //........................................................................ 71 72 class SubComponentManager; 73 74 //==================================================================== 75 //= OApplicationController 76 //==================================================================== 77 class OApplicationController; 78 class OApplicationView; 79 class OLinkedDocumentsAccess; 80 typedef OGenericUnoController OApplicationController_CBASE; 81 typedef ::cppu::ImplHelper5 < ::com::sun::star::container::XContainerListener 82 , ::com::sun::star::beans::XPropertyChangeListener 83 , ::com::sun::star::sdb::application::XDatabaseDocumentUI 84 , ::com::sun::star::ui::XContextMenuInterception 85 , ::com::sun::star::view::XSelectionSupplier 86 > OApplicationController_Base; 87 88 class SelectionNotifier; 89 90 class OApplicationController 91 :public OApplicationController_CBASE 92 ,public OApplicationController_Base 93 ,public IApplicationController 94 { 95 public: 96 typedef ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainer > TContainer; 97 typedef ::std::vector< TContainer > TContainerVector; 98 99 private: 100 101 OTableCopyHelper::DropDescriptor m_aAsyncDrop; 102 103 SharedConnection m_xDataSourceConnection; 104 ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > 105 m_xMetaData; 106 107 OModuleClient m_aModuleClient; 108 TransferableDataHelper m_aSystemClipboard; // content of the clipboard 109 ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > 110 m_xDataSource; 111 ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > 112 m_xModel; 113 ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifiable > 114 m_xDocumentModify; 115 ::cppu::OInterfaceContainerHelper 116 m_aContextMenuInterceptors; 117 118 TContainerVector m_aCurrentContainers; // the containers where we are listener on 119 ::rtl::Reference< SubComponentManager > 120 m_pSubComponentManager; 121 ::dbaccess::ODsnTypeCollection 122 m_aTypeCollection; 123 OTableCopyHelper m_aTableCopyHelper; 124 TransferableClipboardListener* 125 m_pClipbordNotifier; // notifier for changes in the clipboard 126 sal_uLong m_nAsyncDrop; 127 OAsyncronousLink m_aControllerConnectedEvent; 128 OAsyncronousLink m_aSelectContainerEvent; 129 PreviewMode m_ePreviewMode; // the mode of the preview 130 ElementType m_eCurrentType; 131 sal_Bool m_bNeedToReconnect; // true when the settings of the data source were modified and the connection is no longer up to date 132 sal_Bool m_bSuspended; // is true when the controller was already suspended 133 134 ::std::auto_ptr< SelectionNotifier > 135 m_pSelectionNotifier; 136 typedef ::std::map< ElementType, ::std::vector< ::rtl::OUString > > SelectionByElementType; 137 SelectionByElementType m_aPendingSelection; 138 139 private: 140 141 OApplicationView* getContainer() const; 142 143 144 /** returns the database name 145 @return 146 the database name 147 */ 148 ::rtl::OUString getDatabaseName() const; 149 150 /** returns the stripped database name. 151 @return 152 The stripped database name either the registered naem or if it is a file url the last segment. 153 */ 154 ::rtl::OUString getStrippedDatabaseName() const; 155 156 /** return the element type for given container 157 @param _xContainer The container where the element type has to be found 158 @return the element type coressponding to the given container 159 */ 160 ElementType getElementType(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainer >& _xContainer) const; 161 162 /** opens a new frame with either the table or the query or report or form or view 163 @param _sName 164 The name of the object to open 165 @param _eType 166 Defines the type to open 167 @param _eOpenMode 168 denotes the mode in which to open the object 169 @param _nInstigatorCommand 170 denotes the command which instigated the action. Might be 0. 171 @return the form or report model will only be returned, otherwise <NULL/> 172 */ 173 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > openElement( 174 const ::rtl::OUString& _sName, 175 ElementType _eType, 176 ElementOpenMode _eOpenMode, 177 sal_uInt16 _nInstigatorCommand = 0 178 ); 179 180 /** opens a new sub frame with a table/query/form/report/view, passing additional arguments 181 */ 182 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > openElementWithArguments( 183 const ::rtl::OUString& _sName, 184 ElementType _eType, 185 ElementOpenMode _eOpenMode, 186 sal_uInt16 _nInstigatorCommand, 187 const ::comphelper::NamedValueCollection& _rAdditionalArguments 188 ); 189 190 /** opens a new frame for creation or auto pilot 191 @param _eType 192 Defines the type to open 193 @param i_rAdditionalArguments 194 Additional arguments to pass when creating the component 195 */ 196 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > 197 newElement( 198 ElementType _eType, 199 const ::comphelper::NamedValueCollection& i_rAdditionalArguments, 200 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& o_rDocumentDefinition 201 ); 202 203 /** creates a new database object, using an auto pilot 204 @param _eType 205 Defines the type of the object to create 206 @precond 207 Our mutex must not be locked. 208 @since #i39203# 209 */ 210 void newElementWithPilot( ElementType _eType ); 211 212 /** converts the query to a view 213 @param _sName 214 The name of the query. 215 */ 216 void convertToView(const ::rtl::OUString& _sName); 217 218 /** checks if the connection for the selected data source is read only. If the connection doesn't exist, <TRUE/> will be returned. 219 @return 220 <TRUE/> if read only or doesn't exist, otherwise <FALSE/> 221 */ 222 sal_Bool isConnectionReadOnly() const; 223 224 /// fills the list with the selected entries. 225 void getSelectionElementNames( ::std::vector< ::rtl::OUString>& _rNames ) const; 226 227 /// deletes the entries selected. 228 void deleteEntries(); 229 230 /// renames the selected entry in the detail page 231 void renameEntry(); 232 233 /** deletes queries, forms, or reports 234 @param _eType 235 the type of the objects 236 @param _rList 237 The names of the elements to delete 238 @param _bConfirm 239 determines whether the user must confirm the deletion 240 */ 241 void deleteObjects( ElementType _eType, 242 const ::std::vector< ::rtl::OUString>& _rList, 243 bool _bConfirm ); 244 245 /** deletes tables. 246 @param _rList 247 The list of tables. 248 */ 249 void deleteTables(const ::std::vector< ::rtl::OUString>& _rList); 250 251 /// copies the current object into clipboard 252 TransferableHelper* copyObject(); 253 254 /// returns the nameaccess 255 ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > getElements(ElementType _eType); 256 257 /** returns the document access for the specific type 258 @param _eType 259 the type 260 @return ::std::auto_ptr<OLinkedDocumentsAccess> 261 */ 262 ::std::auto_ptr<OLinkedDocumentsAccess> getDocumentsAccess(ElementType _eType); 263 264 /// returns the query definitions of the active data source. 265 ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer> getQueryDefintions() const; 266 267 /** pastes a special format from the system clipboard to the currently selected object types 268 @param _nFormatId 269 The format to be copied. 270 */ 271 void pasteFormat(sal_uInt32 _nFormatId); 272 273 /** pastes a query, form or report into the data source 274 @param _eType 275 The type of the object to paste. 276 @param _rPasteData 277 The data descriptor. 278 @param _sParentFolder 279 The name of the parent folder if it exists. 280 @param _bMove 281 if <TRUE/> the name of the content must be inserted without any change, otherwise not. 282 @return 283 <TRUE/> if the paste opertions was successful, otherwise <FALSE/>. 284 */ 285 sal_Bool paste( ElementType _eType,const ::svx::ODataAccessDescriptor& _rPasteData ,const String& _sParentFolder = String(),sal_Bool _bMove = sal_False); 286 287 /// returns the system clipboard. getViewClipboard() const288 const TransferableDataHelper& getViewClipboard() const { return m_aSystemClipboard; } 289 290 /// returns <TRUE/> if the clipboard supports a table format, otherwise <FALSE/>. 291 sal_Bool isTableFormat() const; 292 293 /** fills the vector with all supported formats 294 @param _eType 295 The type for which we need the formats 296 @param _rFormatIds 297 The vector to be filled up. 298 */ 299 void getSupportedFormats(ElementType _eType,::std::vector<SotFormatStringId>& _rFormatIds) const; 300 301 /** adds a listener to the current name access. 302 @param _xCollection 303 The collection where we want to listen on. 304 */ 305 void addContainerListener(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess>& _xCollection); 306 307 /** opens a uno dialog withthe currently selected data source as initialize argument 308 @param _sServiceName 309 The serivce name of the dialog to be executed. 310 */ 311 void openDialog(const ::rtl::OUString& _sServiceName); 312 313 /** opens the administration dialog for the selected data source 314 */ 315 void openDataSourceAdminDialog(); 316 317 /** opens the table filter dialog for the selected data source 318 */ 319 void openTableFilterDialog(); 320 321 /** opens the DirectSQLDialog to execute hand made sql statements. 322 */ 323 void openDirectSQLDialog(); 324 325 /** when the settings of the data source changed, 326 it opens a dialog which ask to close all depending documents, then recreate the connection. 327 The SolarMutex has to be locked before calling this. 328 */ 329 void askToReconnect(); 330 331 /** remember a newly opened sub document for later access 332 */ 333 void onDocumentOpened( 334 const ::rtl::OUString& _rName, 335 const sal_Int32 _nType, 336 const ElementOpenMode _eMode, 337 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& _xDocument, 338 const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& _xDefinition 339 ); 340 341 /** Inserts a new object into the hierarchy given be the type. 342 @param _eType 343 Where to insert the new item. 344 @param _sParentFolder 345 The name of the parent folder if it exists. 346 @param _xContent 347 The content to insert. 348 @param _bMove 349 if <TRUE/> the name of the content must be inserted without any change, otherwise not. 350 @return 351 <TRUE/> if the insert opertions was successful, otherwise <FALSE/>. 352 */ 353 sal_Bool insertHierachyElement( ElementType _eType 354 ,const String& _sParentFolder 355 ,sal_Bool _bCollection = sal_True 356 ,const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent>& _xContent = ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent>() 357 ,sal_Bool _bMove = sal_False); 358 /** checks if delete command or rename comamnd is allowed 359 @param _eType 360 The element type. 361 @param _bDelete 362 If <TRUE> then the delete command should be checked. 363 @return 364 <TRUE> if the command is allowed 365 */ 366 sal_Bool isRenameDeleteAllowed(ElementType _eType,sal_Bool _bDelete) const; 367 /** all selected entries will be opened, or edited, or converted to a view 368 @param _nId 369 The slot which should be executed. 370 @param _eOpenMode 371 Defines the mode of opening. @see ElementOpenMode 372 */ 373 void doAction(sal_uInt16 _nId ,ElementOpenMode _eOpenMode); 374 375 /** returns the currently selected table or query name. 376 * 377 * \return the name of the currently table or query. If the tables or query container is selected otherwise an empty string will be returned. 378 */ 379 ::rtl::OUString getCurrentlySelectedName(sal_Int32& _rnCommandType) const; 380 381 /** shows the preview for the given entry 382 */ 383 void showPreviewFor( const ElementType _eType,const ::rtl::OUString& _sName ); 384 385 /** called we were attached to a frame 386 387 In particular, this is called *after* the controller has been announced to the model 388 (XModel::connectController) 389 */ 390 void onAttachedFrame(); 391 392 /// determines whether the given table name denotes a view which can be altered 393 bool impl_isAlterableView_nothrow( const ::rtl::OUString& _rTableOrViewName ) const; 394 395 /** does the macro/script migration, where macros/scripts in forms/reports are moved 396 to the database document itself. 397 */ 398 void impl_migrateScripts_nothrow(); 399 400 /** verifies the object type denotes a valid DatabaseObject, and the object name denotes an existing 401 object of this type. Throws if not. 402 */ 403 void impl_validateObjectTypeAndName_throw( const sal_Int32 _nObjectType, const ::boost::optional< ::rtl::OUString >& i_rObjectName ); 404 405 protected: 406 // ---------------------------------------------------------------- 407 // initializing members 408 /** forces usage of a connection which we do not own 409 <p>To be used from within XInitialization::initialize only.</p> 410 */ 411 void initializeConnection( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxForeignConn ); 412 413 // 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. 414 virtual FeatureState GetState(sal_uInt16 nId) const; 415 // execute a feature 416 virtual void Execute(sal_uInt16 nId, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs); 417 418 // OGenericUnoController 419 virtual void onLoadedMenu( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XLayoutManager >& _xLayoutManager ); 420 getPrivateModel() const421 virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > getPrivateModel() const 422 { 423 return m_xModel; 424 } 425 426 virtual ~OApplicationController(); 427 428 public: 429 OApplicationController(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB); 430 431 DECLARE_XINTERFACE( ) 432 DECLARE_XTYPEPROVIDER( ) 433 434 // XServiceInfo 435 virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException); 436 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException); 437 // need by registration 438 static ::rtl::OUString getImplementationName_Static() throw( ::com::sun::star::uno::RuntimeException ); 439 static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static(void) throw( ::com::sun::star::uno::RuntimeException ); 440 static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > 441 SAL_CALL Create(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&); 442 443 // ::com::sun::star::frame::XController 444 virtual void SAL_CALL attachFrame(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > & xFrame) throw( ::com::sun::star::uno::RuntimeException ); 445 virtual sal_Bool SAL_CALL suspend(sal_Bool bSuspend) throw( ::com::sun::star::uno::RuntimeException ); 446 virtual sal_Bool SAL_CALL attachModel(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & xModel) throw( ::com::sun::star::uno::RuntimeException ); 447 virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > SAL_CALL getModel(void) throw( ::com::sun::star::uno::RuntimeException ); 448 449 // ::com::sun::star::container::XContainerListener 450 virtual void SAL_CALL elementInserted(const ::com::sun::star::container::ContainerEvent& Event) throw( ::com::sun::star::uno::RuntimeException ); 451 virtual void SAL_CALL elementRemoved(const ::com::sun::star::container::ContainerEvent& Event) throw( ::com::sun::star::uno::RuntimeException ); 452 virtual void SAL_CALL elementReplaced(const ::com::sun::star::container::ContainerEvent& Event) throw( ::com::sun::star::uno::RuntimeException ); 453 454 // XPropertyChangeListener 455 virtual void SAL_CALL propertyChange( const ::com::sun::star::beans::PropertyChangeEvent& evt ) throw (::com::sun::star::uno::RuntimeException); 456 457 // XDatabaseDocumentUI 458 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource > SAL_CALL getDataSource() throw (::com::sun::star::uno::RuntimeException); 459 virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow > SAL_CALL getApplicationMainWindow() throw (::com::sun::star::uno::RuntimeException); 460 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getActiveConnection() throw (::com::sun::star::uno::RuntimeException); 461 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); 462 virtual ::sal_Bool SAL_CALL isConnected( ) throw (::com::sun::star::uno::RuntimeException); 463 virtual void SAL_CALL connect( ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException); 464 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); 465 virtual ::sal_Bool SAL_CALL closeSubComponents( ) throw (::com::sun::star::uno::RuntimeException); 466 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); 467 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); 468 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); 469 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); 470 471 // XContextMenuInterception 472 virtual void SAL_CALL registerContextMenuInterceptor( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XContextMenuInterceptor >& Interceptor ) throw (::com::sun::star::uno::RuntimeException); 473 virtual void SAL_CALL releaseContextMenuInterceptor( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XContextMenuInterceptor >& Interceptor ) throw (::com::sun::star::uno::RuntimeException); 474 475 // XSelectionSupplier 476 virtual ::sal_Bool SAL_CALL select( const ::com::sun::star::uno::Any& xSelection ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 477 virtual ::com::sun::star::uno::Any SAL_CALL getSelection( ) throw (::com::sun::star::uno::RuntimeException); 478 virtual void SAL_CALL addSelectionChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); 479 virtual void SAL_CALL removeSelectionChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); 480 481 /** retrieves the current connection, creates it if necessary 482 483 If an error occurs, then this is either stored in the location pointed to by <arg>_pErrorInfo</arg>, 484 or, if <code>_pErrorInfo</code> is <NULL/>, then the error is displayed to the user. 485 */ 486 const SharedConnection& ensureConnection( ::dbtools::SQLExceptionInfo* _pErrorInfo = NULL ); 487 488 /** retrieves the current connection 489 */ getConnection() const490 const SharedConnection& getConnection() const { return m_xDataSourceConnection; } 491 492 /// determines whether we're currently connected to the database isConnected() const493 bool isConnected() const { return m_xDataSourceConnection.is(); } 494 495 const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >& getConnectionMetaData() const496 getConnectionMetaData() const { return m_xMetaData; } 497 498 /** refreshes the tables 499 */ 500 void refreshTables(); 501 502 // IApplicationController 503 virtual bool onEntryDoubleClick(SvTreeListBox& _rTree); 504 virtual sal_Bool onContainerSelect(ElementType _eType); 505 virtual void onSelectionChanged(); 506 virtual void onCutEntry(); 507 virtual void onCopyEntry(); 508 virtual void onPasteEntry(); 509 virtual void onDeleteEntry(); 510 virtual void previewChanged( sal_Int32 _nMode); 511 virtual void containerFound( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainer >& _xContainer); 512 513 // IController (base of IApplicationController) 514 virtual void executeUnChecked(const ::com::sun::star::util::URL& _rCommand, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs); 515 virtual void executeChecked(const ::com::sun::star::util::URL& _rCommand, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs); 516 virtual void executeUnChecked(sal_uInt16 _nCommandId, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs); 517 virtual void executeChecked(sal_uInt16 _nCommandId, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs); 518 virtual sal_Bool isCommandEnabled(sal_uInt16 _nCommandId) const; 519 virtual sal_Bool isCommandEnabled( const ::rtl::OUString& _rCompleteCommandURL ) const; 520 virtual sal_uInt16 registerCommandURL( const ::rtl::OUString& _rCompleteCommandURL ); 521 virtual void notifyHiContrastChanged(); 522 virtual sal_Bool isDataSourceReadOnly() const; 523 virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController > 524 getXController(void) throw( ::com::sun::star::uno::RuntimeException ); 525 virtual bool interceptUserInput( const NotifyEvent& _rEvent ); 526 527 // IControlActionListener overridables 528 virtual sal_Bool requestQuickHelp( const SvLBoxEntry* _pEntry, String& _rText ) const; 529 virtual sal_Bool requestDrag( sal_Int8 _nAction, const Point& _rPosPixel ); 530 virtual sal_Int8 queryDrop( const AcceptDropEvent& _rEvt, const DataFlavorExVector& _rFlavors ); 531 virtual sal_Int8 executeDrop( const ExecuteDropEvent& _rEvt ); 532 533 // IContextMenuProvider (base of IApplicationController) 534 virtual PopupMenu* getContextMenu( Control& _rControl ) const; 535 virtual IController& getCommandController(); 536 virtual ::cppu::OInterfaceContainerHelper* 537 getContextMenuInterceptors(); 538 virtual ::com::sun::star::uno::Any 539 getCurrentSelection( Control& _rControl ) const; 540 541 DECL_LINK( OnInvalidateClipboard, void* ); 542 DECL_LINK( OnClipboardChanged, void* ); 543 DECL_LINK( OnAsyncDrop, void* ); 544 DECL_LINK( OnCreateWithPilot, void* ); 545 DECL_LINK( OnSelectContainer, void* ); 546 DECL_LINK( OnFirstControllerConnected, void* ); 547 548 protected: 549 using OApplicationController_CBASE::connect; 550 551 /** disconnects from our XConnection, and cleans up this connection 552 */ 553 virtual void disconnect(); 554 555 // late construction 556 virtual sal_Bool Construct(Window* pParent); 557 virtual void describeSupportedFeatures(); 558 559 protected: 560 // XEventListener 561 virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw( ::com::sun::star::uno::RuntimeException ); 562 563 // OComponentHelper 564 virtual void SAL_CALL disposing(); 565 }; 566 567 //........................................................................ 568 } // namespace dbaui 569 //........................................................................ 570 571 #endif // DBAUI_APPCONTROLLER_HXX 572 573