xref: /trunk/main/dbaccess/source/ui/inc/unodatbr.hxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef _SBA_UNODATBR_HXX_
29 #define _SBA_UNODATBR_HXX_
30 
31 #ifndef _SBA_BWRCTRLR_HXX
32 #include "brwctrlr.hxx"
33 #endif
34 #ifndef _COM_SUN_STAR_SDBC_XCONNECTION_HPP_
35 #include <com/sun/star/sdbc/XConnection.hpp>
36 #endif
37 #ifndef _COMPHELPER_STLTYPES_HXX_
38 #include <comphelper/stl_types.hxx>
39 #endif
40 #ifndef _COM_SUN_STAR_FRAME_XSTATUSLISTENER_HPP_
41 #include <com/sun/star/frame/XStatusListener.hpp>
42 #endif
43 #ifndef _COM_SUN_STAR_FRAME_XDISPATCH_HPP_
44 #include <com/sun/star/frame/XDispatch.hpp>
45 #endif
46 #ifndef _COM_SUN_STAR_CONTAINER_XCONTAINERLISTENER_HPP_
47 #include <com/sun/star/container/XContainerListener.hpp>
48 #endif
49 #ifndef _COM_SUN_STAR_I18N_XCOLLATOR_HPP_
50 #include <com/sun/star/i18n/XCollator.hpp>
51 #endif
52 #ifndef _COM_SUN_STAR_VIEW_XSELECTIONSUPPLIER_HPP_
53 #include <com/sun/star/view/XSelectionSupplier.hpp>
54 #endif
55 #ifndef _COM_SUN_STAR_AWT_XWINDOW_HPP_
56 #include <com/sun/star/awt/XWindow.hpp>
57 #endif
58 #ifndef _COM_SUN_STAR_DOCUMENT_XSCRIPTINVOCATIONCONTEXT_HPP_
59 #include <com/sun/star/document/XScriptInvocationContext.hpp>
60 #endif
61 #ifndef _COM_SUN_STAR_UI_XCONTEXTMENUINTERCEPTION_HPP_
62 #include <com/sun/star/ui/XContextMenuInterception.hpp>
63 #endif
64 #ifndef _COM_SUN_STAR_SDB_APPLICATION_DATABASEOBJECT_HPP_
65 #include <com/sun/star/sdb/application/DatabaseObject.hpp>
66 #endif
67 #ifndef _COM_SUN_STAR_SDB_APPLICATION_DATABASEOBJECTCONTAINER_HPP_
68 #include <com/sun/star/sdb/application/DatabaseObjectContainer.hpp>
69 #endif
70 #ifndef _COM_SUN_STAR_SDB_DATABASEOBJECTCONTAINER_HPP_
71 #include <com/sun/star/sdb/XDatabaseRegistrationsListener.hpp>
72 #endif
73 #ifndef _CPPUHELPER_IMPLBASE5_HXX_
74 #include <cppuhelper/implbase5.hxx>
75 #endif
76 #ifndef _DBACCESS_UI_CALLBACKS_HXX_
77 #include "callbacks.hxx"
78 #endif
79 #ifndef _SV_TIMER_HXX
80 #include <vcl/timer.hxx>
81 #endif
82 #ifndef _TRANSFER_HXX
83 #include <svtools/transfer.hxx>
84 #endif
85 #ifndef _SVX_DATACCESSDESCRIPTOR_HXX_
86 #include <svx/dataaccessdescriptor.hxx>
87 #endif
88 #ifndef _SOT_STORAGE_HXX
89 #include <sot/storage.hxx>
90 #endif
91 #ifndef DBUI_TABLECOPYHELPER_HXX
92 #include "TableCopyHelper.hxx"
93 #endif
94 #ifndef _DBAUI_COMMON_TYPES_HXX_
95 #include "commontypes.hxx"
96 #endif
97 
98 // =========================================================================
99 class SvLBoxEntry;
100 class Splitter;
101 struct SvSortData;
102 
103 namespace com { namespace sun{ namespace star { namespace container { class XNameContainer; } } } }
104 
105 class SvLBoxTreeList;
106 // .........................................................................
107 namespace dbaui
108 {
109 // .........................................................................
110 
111     class DBTreeView;
112     struct DBTreeEditedEntry;
113     class ImageProvider;
114 
115     // =====================================================================
116     typedef ::cppu::ImplHelper5 <   ::com::sun::star::frame::XStatusListener
117                                 ,   ::com::sun::star::view::XSelectionSupplier
118                                 ,   ::com::sun::star::document::XScriptInvocationContext
119                                 ,   ::com::sun::star::ui::XContextMenuInterception
120                                 ,   ::com::sun::star::sdb::XDatabaseRegistrationsListener
121                                 >   SbaTableQueryBrowser_Base;
122     class SbaTableQueryBrowser
123                 :public SbaXDataBrowserController
124                 ,public SbaTableQueryBrowser_Base
125                 ,public IControlActionListener
126                 ,public IContextMenuProvider
127     {
128     protected:
129 
130         // ---------------------------
131         ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XCollator >   m_xCollator;
132         ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >     m_xCurrentFrameParent;
133         ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >      m_xMainToolbar;
134 
135         // ---------------------------
136         struct ExternalFeature
137         {
138             ::com::sun::star::util::URL     aURL;
139             ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch >
140                                             xDispatcher;
141             sal_Bool                        bEnabled;
142 
143             ExternalFeature() : bEnabled( sal_False ) { }
144             ExternalFeature( const ::com::sun::star::util::URL& _rURL ) : aURL( _rURL ), bEnabled( sal_False ) { }
145         };
146 
147         typedef ::std::map< sal_uInt16, ExternalFeature, ::std::less< sal_uInt16 > >  ExternalFeaturesMap;
148         ExternalFeaturesMap     m_aExternalFeatures;
149 
150         ::svx::ODataAccessDescriptor    m_aDocumentDataSource;
151             // if we're part of a document, this is the state of the DocumentDataSource slot
152 
153         ::cppu::OInterfaceContainerHelper   m_aSelectionListeners;
154         ::cppu::OInterfaceContainerHelper   m_aContextMenuInterceptors;
155 
156         OTableCopyHelper::DropDescriptor    m_aAsyncDrop;
157         OTableCopyHelper                    m_aTableCopyHelper;
158 
159         ::rtl::OUString         m_sQueryCommand;    // the command of the query currently loaded (if any)
160         //::rtl::OUString         m_sToBeLoaded;      // contains the element name which should be loaded if any
161 
162         DBTreeView*             m_pTreeView;
163         Splitter*               m_pSplitter;
164         SvLBoxTreeList*         m_pTreeModel;           // contains the datasources of the registry
165         SvLBoxEntry*            m_pCurrentlyDisplayed;
166         sal_uLong                   m_nAsyncDrop;
167 
168         sal_Int16               m_nBorder;              // sal_True when border should be shown
169 
170         sal_Bool                m_bQueryEscapeProcessing : 1;   // the escape processing flag of the query currently loaded (if any)
171         sal_Bool                m_bShowMenu;            // if sal_True the menu should be visible otherwise not
172         sal_Bool                m_bInSuspend;
173         sal_Bool                m_bEnableBrowser;
174         ::boost::optional< bool >
175                                 m_aDocScriptSupport;    // relevant if and only if we are associated with exactly one DBDoc
176 
177 
178         virtual ::rtl::OUString getPrivateTitle( ) const;
179     // attribute access
180     public:
181         SbaTableQueryBrowser(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rM);
182         ~SbaTableQueryBrowser();
183 
184         enum EntryType
185         {
186             // don't change the above definitions! There are places (in particular SbaTableQueryBrowser::getCurrentSelection)
187             // which rely on the fact that the EntryType values really equal the DatabaseObject(Container) values!
188             etDatasource     = ::com::sun::star::sdb::application::DatabaseObjectContainer::DATA_SOURCE,
189             etQueryContainer = ::com::sun::star::sdb::application::DatabaseObjectContainer::QUERIES,
190             etTableContainer = ::com::sun::star::sdb::application::DatabaseObjectContainer::TABLES,
191             etQuery          = ::com::sun::star::sdb::application::DatabaseObject::QUERY,
192             etTableOrView    = ::com::sun::star::sdb::application::DatabaseObject::TABLE,
193             etUnknown        = -1
194         };
195 
196         /** returns a DatabaseObject value corresponding to the given EntryType
197             @param _eType
198                 the entry type. Must not be etUnknown.
199         */
200         static sal_Int32    getDatabaseObjectType( EntryType _eType );
201 
202         // need by registration
203         static ::rtl::OUString getImplementationName_Static() throw( ::com::sun::star::uno::RuntimeException );
204         static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static(void) throw( ::com::sun::star::uno::RuntimeException );
205         static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
206                 SAL_CALL Create(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&);
207 
208         DECLARE_UNO3_DEFAULTS(SbaTableQueryBrowser,SbaXDataBrowserController);
209         // late construction
210         virtual sal_Bool Construct(Window* pParent);
211         // XInterface
212         virtual ::com::sun::star::uno::Any  SAL_CALL queryInterface(const ::com::sun::star::uno::Type& _rType) throw (::com::sun::star::uno::RuntimeException);
213 
214         // XTypeProvider
215         virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes(  ) throw (::com::sun::star::uno::RuntimeException);
216         virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId(  ) throw (::com::sun::star::uno::RuntimeException);
217 
218         // ::com::sun::star::beans::XPropertyChangeListener
219         virtual void SAL_CALL propertyChange(const ::com::sun::star::beans::PropertyChangeEvent& evt) throw(::com::sun::star::uno::RuntimeException);
220 
221         // ::com::sun::star::frame::XController
222         virtual sal_Bool SAL_CALL suspend(sal_Bool bSuspend) throw( ::com::sun::star::uno::RuntimeException );
223         virtual void SAL_CALL attachFrame(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > & xFrame) throw( ::com::sun::star::uno::RuntimeException );
224 
225         // ::com::sun::star::lang::XComponent
226         virtual void        SAL_CALL disposing();
227 
228         // XStatusListener
229         virtual void SAL_CALL statusChanged( const ::com::sun::star::frame::FeatureStateEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
230 
231         // XEventListener
232         virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
233 
234         // XSelectionSupplier
235         virtual sal_Bool SAL_CALL select( const ::com::sun::star::uno::Any& aSelection ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
236         virtual ::com::sun::star::uno::Any SAL_CALL getSelection(  ) throw (::com::sun::star::uno::RuntimeException);
237         virtual void SAL_CALL addSelectionChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
238         virtual void SAL_CALL removeSelectionChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
239 
240         // XServiceInfo
241         virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException);
242         virtual ::comphelper::StringSequence SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
243 
244         // XContainerListener
245         virtual void SAL_CALL elementInserted( const ::com::sun::star::container::ContainerEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
246         virtual void SAL_CALL elementRemoved( const ::com::sun::star::container::ContainerEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
247         virtual void SAL_CALL elementReplaced( const ::com::sun::star::container::ContainerEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
248         // ::com::sun::star::frame::XFrameActionListener
249         virtual void SAL_CALL frameAction(const ::com::sun::star::frame::FrameActionEvent& aEvent) throw( ::com::sun::star::uno::RuntimeException );
250 
251         //IController
252         virtual void notifyHiContrastChanged();
253 
254         // XScriptInvocationContext
255         virtual ::com::sun::star::uno::Reference< ::com::sun::star::document::XEmbeddedScripts > SAL_CALL getScriptContainer() throw (::com::sun::star::uno::RuntimeException);
256 
257         // XContextMenuInterception
258         virtual void SAL_CALL registerContextMenuInterceptor( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XContextMenuInterceptor >& Interceptor ) throw (::com::sun::star::uno::RuntimeException);
259         virtual void SAL_CALL releaseContextMenuInterceptor( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XContextMenuInterceptor >& Interceptor ) throw (::com::sun::star::uno::RuntimeException);
260 
261         // XDatabaseRegistrationsListener
262         virtual void SAL_CALL registeredDatabaseLocation( const ::com::sun::star::sdb::DatabaseRegistrationEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
263         virtual void SAL_CALL revokedDatabaseLocation( const ::com::sun::star::sdb::DatabaseRegistrationEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
264         virtual void SAL_CALL changedDatabaseLocation( const ::com::sun::star::sdb::DatabaseRegistrationEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
265 
266     protected:
267         // SbaXDataBrowserController overridables
268         virtual sal_Bool InitializeForm( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& i_formProperties );
269         virtual sal_Bool InitializeGridModel(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent > & xGrid);
270 
271         virtual sal_Bool preReloadForm();
272         virtual void     postReloadForm();
273 
274         virtual void addModelListeners(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel > & _xGridControlModel);
275         virtual void removeModelListeners(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel > & _xGridControlModel);
276 
277         virtual void AddColumnListener(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & xCol);
278         virtual void RemoveColumnListener(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & xCol);
279 
280         virtual void LoadFinished(sal_Bool _bWasSynch);
281 
282         virtual void criticalFail();
283 
284         virtual void            describeSupportedFeatures();
285         virtual FeatureState    GetState(sal_uInt16 nId) const;
286         virtual void            Execute(sal_uInt16 nId, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs);
287 
288         // IControlActionListener overridables
289         virtual sal_Bool    requestQuickHelp( const SvLBoxEntry* _pEntry, String& _rText ) const;
290         virtual sal_Bool    requestDrag( sal_Int8 _nAction, const Point& _rPosPixel );
291         virtual sal_Int8    queryDrop( const AcceptDropEvent& _rEvt, const DataFlavorExVector& _rFlavors );
292         virtual sal_Int8    executeDrop( const ExecuteDropEvent& _rEvt );
293 
294         // IContextMenuProvider
295         virtual PopupMenu*      getContextMenu( Control& _rControl ) const;
296         virtual IController&    getCommandController();
297         virtual ::cppu::OInterfaceContainerHelper*
298                                 getContextMenuInterceptors();
299         virtual ::com::sun::star::uno::Any
300                                 getCurrentSelection( Control& _rControl ) const;
301 
302         virtual void impl_initialize();
303 
304         // SbaGridListener overridables
305         virtual void RowChanged();
306         virtual void ColumnChanged();
307         virtual void SelectionChanged();
308 
309         // methods for showing/hiding the explorer part
310         sal_Bool    haveExplorer() const;
311         void        hideExplorer();
312         void        showExplorer();
313         void        toggleExplorer() { if (haveExplorer()) hideExplorer(); else showExplorer(); }
314 
315         // methods for handling the 'selection' (paintin them bold) of SvLBoxEntries
316         // returns <TRUE/> if the entry is selected (which means it's part of the selected path)
317         sal_Bool    isSelected(SvLBoxEntry* _pEntry) const;
318         // select the entry (and only the entry, not the whole path)
319         void        select(SvLBoxEntry* _pEntry, sal_Bool _bSelect = sal_True);
320         // select the path of the entry (which must be an entry without children)
321         void        selectPath(SvLBoxEntry* _pEntry, sal_Bool _bSelect = sal_True);
322 
323         virtual void loadMenu(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _xFrame);
324 
325     private:
326         // check the state of the external slot given, update any UI elements if necessary
327         void implCheckExternalSlot( sal_uInt16 _nId );
328 
329         // connect to the external dispatchers (if any)
330         void connectExternalDispatches();
331 
332         /** get the state of an external slot
333             <p>The slot is available if an external dispatcher is responsible for it, _and_ if this dispatcher
334             told us the slot is available.</p>
335         */
336         sal_Bool    getExternalSlotState( sal_uInt16 _nId ) const;
337 
338         /** add an entry (including the subentries for queries/tables) to the list model
339 
340             <p>The given names and images may be empty, in this case they're filled with the correct
341             values. This way they may be reused for the next call, which saves some resource manager calls.</p>
342         */
343         void implAddDatasource(const String& _rDbName, Image& _rDbImage,
344                 String& _rQueryName, Image& _rQueryImage,
345                 String& _rTableName, Image& _rTableImage,
346                 const SharedConnection& _rxConnection
347             );
348 
349         void    implAddDatasource( const String& _rDataSourceName, const SharedConnection& _rxConnection );
350 
351         /// removes (and cleans up) the entry for the given data source
352         void        impl_cleanupDataSourceEntry( const String& _rDataSourceName );
353 
354         /// clears the tree list box
355         void clearTreeModel();
356 
357         /** unloads the form, empties the grid model, cleans up anything related to the currently displayed object
358             @param _bDisposeConnection
359                 <TRUE/> if the connection should be disposed
360             @param _bFlushData
361                 <TRUE/> if the currently displayed object (if any) should be flushed
362         */
363         void unloadAndCleanup( sal_Bool _bDisposeConnection = sal_True );
364 
365         // disposes the connection associated with the given entry (which must represent a data source)
366         void        disposeConnection( SvLBoxEntry* _pDSEntry );
367 
368         /// flushs and disposes the given connection, and de-registers as listener
369         void        impl_releaseConnection( SharedConnection& _rxConnection );
370 
371         /** close the connection (and collapse the list entries) of the given list entries
372         */
373         void        closeConnection(SvLBoxEntry* _pEntry,sal_Bool _bDisposeConnection = sal_True);
374 
375         void        populateTree(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess>& _xNameAccess, SvLBoxEntry* _pParent, EntryType _eEntryType);
376         void        initializeTreeModel();
377 
378         /** search in the tree for query- or tablecontainer equal to this interface and return
379             this container entry
380         */
381         SvLBoxEntry* getEntryFromContainer(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess>& _rxNameAccess);
382         // return true when there is connection available
383         sal_Bool ensureConnection(SvLBoxEntry* _pDSEntry, void * pDSData, SharedConnection& _rConnection );
384         sal_Bool ensureConnection(SvLBoxEntry* _pAnyEntry, SharedConnection& _rConnection );
385 
386         sal_Bool getExistentConnectionFor( SvLBoxEntry* _pDSEntry, SharedConnection& _rConnection );
387         /** returns an image provider which works with the connection belonging to the given entry
388         */
389         ::std::auto_ptr< ImageProvider >
390                 getImageProviderFor( SvLBoxEntry* _pAnyEntry );
391 
392         void    implAdministrate( SvLBoxEntry* _pApplyTo );
393 
394         TransferableHelper*
395                 implCopyObject( SvLBoxEntry* _pApplyTo, sal_Int32 _nCommandType, sal_Bool _bAllowConnection = sal_True );
396 
397         EntryType   getEntryType( SvLBoxEntry* _pEntry ) const;
398         EntryType   getChildType( SvLBoxEntry* _pEntry ) const;
399         sal_Bool    isObject( EntryType _eType ) const { return ( etTableOrView== _eType ) || ( etQuery == _eType ); }
400         sal_Bool    isContainer( EntryType _eType ) const { return (etTableContainer == _eType) || (etQueryContainer == _eType); }
401         sal_Bool    isContainer( SvLBoxEntry* _pEntry ) const { return isContainer( getEntryType( _pEntry ) ); }
402 
403         // ensure that the xObject for the given entry is set on the user data
404         sal_Bool    ensureEntryObject( SvLBoxEntry* _pEntry );
405 
406         // get the display text of the entry given
407         String      GetEntryText( SvLBoxEntry* _pEntry ) const;
408 
409         // is called when a table or a query was selected
410         DECL_LINK( OnSelectionChange, void* );
411         DECL_LINK( OnExpandEntry, SvLBoxEntry* );
412 
413         DECL_LINK( OnCopyEntry, void* );
414 
415         DECL_LINK( OnTreeEntryCompare, const SvSortData* );
416 
417         DECL_LINK( OnAsyncDrop, void* );
418 
419         void implRemoveStatusListeners();
420 
421         sal_Bool implSelect(const ::svx::ODataAccessDescriptor& _rDescriptor,sal_Bool _bSelectDirect = sal_False);
422         bool implSelect( SvLBoxEntry* _pEntry );
423 
424         /// selects the entry given and loads the grid control with the object's data
425         sal_Bool implSelect(
426             const ::rtl::OUString& _rDataSourceName,
427             const ::rtl::OUString& _rCommand,
428             const sal_Int32 _nCommandType,
429             const sal_Bool _bEscapeProcessing,
430             const SharedConnection& _rxConnection,
431             sal_Bool _bSelectDirect = sal_False
432         );
433 
434         SvLBoxEntry* implGetConnectionEntry(SvLBoxEntry* _pEntry) const;
435         /// inserts an entry into the tree
436         SvLBoxEntry* implAppendEntry(
437             SvLBoxEntry* _pParent,
438             const String& _rName,
439             void* _pUserData,
440             EntryType _eEntryType
441         );
442 
443         /// loads the grid control with the data object specified (which may be a table, a query or a command)
444         sal_Bool implLoadAnything(const ::rtl::OUString& _rDataSourceName, const ::rtl::OUString& _rCommand,
445             const sal_Int32 _nCommandType, const sal_Bool _bEscapeProcessing, const SharedConnection& _rxConnection = SharedConnection() );
446 
447         /** retrieves the tree entry for the object described by <arg>_rDescriptor</arg>
448             @param _rDescriptor
449                 the object descriptor
450             @param _ppDataSourceEntry
451                 If not <NULL/>, the data source tree entry will be returned here
452             @param _ppContainerEntry
453                 If not <NULL/>, the object container tree entry will be returned here
454             @param _bExpandAncestors
455                 If <TRUE/>, all ancestor on the way to the entry will be expanded
456         */
457         SvLBoxEntry* getObjectEntry(const ::svx::ODataAccessDescriptor& _rDescriptor,
458             SvLBoxEntry** _ppDataSourceEntry = NULL, SvLBoxEntry** _ppContainerEntry = NULL,
459             sal_Bool _bExpandAncestors = sal_True
460         );
461         /** retrieves the tree entry for the object described by data source name, command and command type
462             @param _rDataSource
463                 the data source name
464             @param _rCommand
465                 the command
466             @param _nCommandType
467                 the command type
468             @param _rDescriptor
469                 the object descriptor
470             @param _ppDataSourceEntry
471                 If not <NULL/>, the data source tree entry will be returned here
472             @param _ppContainerEntry
473                 If not <NULL/>, the object container tree entry will be returned here
474             @param _bExpandAncestors
475                 If <TRUE/>, all ancestor on the way to the entry will be expanded
476         */
477         SvLBoxEntry* getObjectEntry(
478             const ::rtl::OUString& _rDataSource, const ::rtl::OUString& _rCommand, sal_Int32 _nCommandType,
479             SvLBoxEntry** _ppDataSourceEntry = NULL, SvLBoxEntry** _ppContainerEntry = NULL,
480             sal_Bool _bExpandAncestors = sal_True,
481             const SharedConnection& _rxConnection = SharedConnection()
482         );
483 
484         /// checks if m_aDocumentDataSource describes a known object
485         void checkDocumentDataSource();
486 
487         void extractDescriptorProps(const ::svx::ODataAccessDescriptor& _rDescriptor,
488             ::rtl::OUString& _rDataSource, ::rtl::OUString& _rCommand, sal_Int32& _rCommandType, sal_Bool& _rEscapeProcessing);
489 
490         void transferChangedControlProperty(const ::rtl::OUString& _rProperty, const ::com::sun::star::uno::Any& _rNewValue);
491 
492         ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > connectWithStatus(
493             const ::rtl::OUString& _rDataSourceName,
494             void* _pTreeListUserData    // in rela a DBTreeListUserData*, but we do not know this class here ....
495         );
496 
497 #ifdef DBG_UTIL
498         // checks whether the given tree entry denotes a data source
499         bool impl_isDataSourceEntry( SvLBoxEntry* _pEntry ) const;
500 #endif
501 
502         /// retrieves the data source URL/name for the given entry representing a data source
503         String  getDataSourceAcessor( SvLBoxEntry* _pDataSourceEntry ) const;
504 
505         /** get the signature (command/escape processing) of the query the form is based on
506             <p>If the for is not based on a query or not even loaded, nothing happens and <FALSE/> is returned.</p>
507         */
508         sal_Bool implGetQuerySignature( ::rtl::OUString& _rCommand, sal_Bool& _bEscapeProcessing );
509 
510         sal_Bool isEntryCopyAllowed(SvLBoxEntry* _pEntry) const;
511 
512         void copyEntry(SvLBoxEntry* _pEntry);
513 
514         // remove all grid columns and dispose them
515         void clearGridColumns(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _xColContainer);
516 
517         sal_Bool isHiContrast() const;
518 
519 
520         /** checks if the currently displayed entry changed
521             @param  _sName
522                     Name of the changed entry
523             @param  _pContainer
524                     The container of the displayed entry
525             @return
526                     <TRUE/> if it is the currently displayed otherwise <FALSE/>
527         */
528         sal_Bool isCurrentlyDisplayedChanged(const String& _sName,SvLBoxEntry* _pContainer);
529 
530         /** called whenever the content of the browser is used for preview, as the very last action
531             of the load process
532         */
533         void initializePreviewMode();
534 
535         /** checks whether the Order/Filter clauses set at our row set are valid, removes them if not so
536         */
537         void    impl_sanitizeRowSetClauses_nothrow();
538     };
539 
540 // .........................................................................
541 }   // namespace dbaui
542 // .........................................................................
543 
544 #endif // _SBA_UNODATBR_HXX_
545 
546