1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski #ifndef DBACCESS_DATABASE_OBJECT_VIEW_HXX 25*b1cdbd2cSJim Jagielski #define DBACCESS_DATABASE_OBJECT_VIEW_HXX 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #ifndef _RTL_USTRING_HXX_ 28*b1cdbd2cSJim Jagielski #include <rtl/ustring.hxx> 29*b1cdbd2cSJim Jagielski #endif 30*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_SDBC_XCONNECTION_HPP_ 31*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbc/XConnection.hpp> 32*b1cdbd2cSJim Jagielski #endif 33*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_SDBC_XDATASOURCE_HPP_ 34*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbc/XDataSource.hpp> 35*b1cdbd2cSJim Jagielski #endif 36*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_FRAME_XDISPATCH_HPP_ 37*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XDispatch.hpp> 38*b1cdbd2cSJim Jagielski #endif 39*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_LANG_XCOMPONENT_HPP_ 40*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XComponent.hpp> 41*b1cdbd2cSJim Jagielski #endif 42*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_ 43*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XMultiServiceFactory.hpp> 44*b1cdbd2cSJim Jagielski #endif 45*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_FRAME_XCOMPONENTLOADER_HPP_ 46*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XComponentLoader.hpp> 47*b1cdbd2cSJim Jagielski #endif 48*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_FRAME_XFRAME_HPP_ 49*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XFrame.hpp> 50*b1cdbd2cSJim Jagielski #endif 51*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_BEANS_PROPERTYVALUE_HPP_ 52*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/PropertyValue.hpp> 53*b1cdbd2cSJim Jagielski #endif 54*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_UI_DIALOGS_XEXECUTABLEDIALOG_HPP_ 55*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/dialogs/XExecutableDialog.hpp> 56*b1cdbd2cSJim Jagielski #endif 57*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_SDB_APPLICATION_XDATABASEDOCUMENTUI_HPP_ 58*b1cdbd2cSJim Jagielski #include <com/sun/star/sdb/application/XDatabaseDocumentUI.hpp> 59*b1cdbd2cSJim Jagielski #endif 60*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_ 61*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Sequence.hxx> 62*b1cdbd2cSJim Jagielski #endif 63*b1cdbd2cSJim Jagielski #include <comphelper/namedvaluecollection.hxx> 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski #include <boost/shared_ptr.hpp> 66*b1cdbd2cSJim Jagielski 67*b1cdbd2cSJim Jagielski 68*b1cdbd2cSJim Jagielski // ......................................................................... 69*b1cdbd2cSJim Jagielski namespace dbaui 70*b1cdbd2cSJim Jagielski { 71*b1cdbd2cSJim Jagielski // ......................................................................... 72*b1cdbd2cSJim Jagielski /** encapsulates access to the view of a database object. 73*b1cdbd2cSJim Jagielski 74*b1cdbd2cSJim Jagielski @todo 75*b1cdbd2cSJim Jagielski this is to be merged with the OLinkedDocumentAccess class 76*b1cdbd2cSJim Jagielski */ 77*b1cdbd2cSJim Jagielski class DatabaseObjectView 78*b1cdbd2cSJim Jagielski { 79*b1cdbd2cSJim Jagielski private: 80*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > 81*b1cdbd2cSJim Jagielski m_xORB; 82*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > 83*b1cdbd2cSJim Jagielski m_xParentFrame; 84*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::frame::XComponentLoader > 85*b1cdbd2cSJim Jagielski m_xFrameLoader; 86*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI > 87*b1cdbd2cSJim Jagielski m_xApplication; 88*b1cdbd2cSJim Jagielski ::rtl::OUString m_sComponentURL; 89*b1cdbd2cSJim Jagielski 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski private: 92*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > 93*b1cdbd2cSJim Jagielski doDispatch( 94*b1cdbd2cSJim Jagielski const ::comphelper::NamedValueCollection& i_rDispatchArgs 95*b1cdbd2cSJim Jagielski ); 96*b1cdbd2cSJim Jagielski 97*b1cdbd2cSJim Jagielski protected: 98*b1cdbd2cSJim Jagielski /** creates the desired view 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski The default implementation will call <member>fillDispatchArgs</member>, followed 101*b1cdbd2cSJim Jagielski by <member>doDispatch</member>. 102*b1cdbd2cSJim Jagielski 103*b1cdbd2cSJim Jagielski @param _rDataSource 104*b1cdbd2cSJim Jagielski the data source, as passed to the <member>createNew</member> or <member>openExisting</member> method. 105*b1cdbd2cSJim Jagielski @param _rObjectName 106*b1cdbd2cSJim Jagielski the name of the object for which the view is to be opened, 107*b1cdbd2cSJim Jagielski or an empty string if a view for a new object should be created. 108*b1cdbd2cSJim Jagielski @param _rCreationArgs 109*b1cdbd2cSJim Jagielski the arguments for the view's creation 110*b1cdbd2cSJim Jagielski */ 111*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > doCreateView( 112*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Any& _rDataSource, 113*b1cdbd2cSJim Jagielski const ::rtl::OUString& _rObjectName, 114*b1cdbd2cSJim Jagielski const ::comphelper::NamedValueCollection& i_rCreationArgs 115*b1cdbd2cSJim Jagielski ); 116*b1cdbd2cSJim Jagielski 117*b1cdbd2cSJim Jagielski virtual void fillDispatchArgs( 118*b1cdbd2cSJim Jagielski ::comphelper::NamedValueCollection& i_rDispatchArgs, 119*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Any& _rDataSource, 120*b1cdbd2cSJim Jagielski const ::rtl::OUString& _rObjectName 121*b1cdbd2cSJim Jagielski ); 122*b1cdbd2cSJim Jagielski 123*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI >& getApplicationUI() const124*b1cdbd2cSJim Jagielski getApplicationUI() const { return m_xApplication; } 125*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > 126*b1cdbd2cSJim Jagielski getConnection() const; 127*b1cdbd2cSJim Jagielski 128*b1cdbd2cSJim Jagielski public: 129*b1cdbd2cSJim Jagielski DatabaseObjectView( 130*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB, 131*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI >& _rxApplication, 132*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _rxParentFrame, 133*b1cdbd2cSJim Jagielski const ::rtl::OUString& _rComponentURL 134*b1cdbd2cSJim Jagielski ); ~DatabaseObjectView()135*b1cdbd2cSJim Jagielski virtual ~DatabaseObjectView(){} 136*b1cdbd2cSJim Jagielski 137*b1cdbd2cSJim Jagielski /** sets the target frame into which the view should be loaded. 138*b1cdbd2cSJim Jagielski 139*b1cdbd2cSJim Jagielski By default, the view is loaded into a top-level frame not being part of the 140*b1cdbd2cSJim Jagielski Desktop. 141*b1cdbd2cSJim Jagielski */ setTargetFrame(const::com::sun::star::uno::Reference<::com::sun::star::frame::XFrame> & _rxFrame)142*b1cdbd2cSJim Jagielski void setTargetFrame( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _rxFrame ) 143*b1cdbd2cSJim Jagielski { 144*b1cdbd2cSJim Jagielski m_xFrameLoader.set( _rxFrame, ::com::sun::star::uno::UNO_QUERY ); 145*b1cdbd2cSJim Jagielski } 146*b1cdbd2cSJim Jagielski 147*b1cdbd2cSJim Jagielski /** opens a view for a to-be-created object 148*b1cdbd2cSJim Jagielski 149*b1cdbd2cSJim Jagielski @param _xDataSource 150*b1cdbd2cSJim Jagielski the data source for which a new object is to be created 151*b1cdbd2cSJim Jagielski @return 152*b1cdbd2cSJim Jagielski the controller of the newly created document 153*b1cdbd2cSJim Jagielski */ 154*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > 155*b1cdbd2cSJim Jagielski createNew( 156*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource >& _xDataSource, 157*b1cdbd2cSJim Jagielski const ::comphelper::NamedValueCollection& i_rDispatchArgs = ::comphelper::NamedValueCollection() 158*b1cdbd2cSJim Jagielski ); 159*b1cdbd2cSJim Jagielski 160*b1cdbd2cSJim Jagielski /** opens a view for an existent object 161*b1cdbd2cSJim Jagielski 162*b1cdbd2cSJim Jagielski @param _xDataSource 163*b1cdbd2cSJim Jagielski the data source for which a new object is to be created 164*b1cdbd2cSJim Jagielski @param _rObjectName 165*b1cdbd2cSJim Jagielski the name of the object to be edited 166*b1cdbd2cSJim Jagielski @param _rArgs 167*b1cdbd2cSJim Jagielski Additional settings which should be forwarded to the frame 168*b1cdbd2cSJim Jagielski @return 169*b1cdbd2cSJim Jagielski the frame into which the view has been loaded 170*b1cdbd2cSJim Jagielski */ 171*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > 172*b1cdbd2cSJim Jagielski openExisting( 173*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Any& _aDataSource, 174*b1cdbd2cSJim Jagielski const ::rtl::OUString& _rName, 175*b1cdbd2cSJim Jagielski const ::comphelper::NamedValueCollection& i_rDispatchArgs 176*b1cdbd2cSJim Jagielski ); 177*b1cdbd2cSJim Jagielski }; 178*b1cdbd2cSJim Jagielski 179*b1cdbd2cSJim Jagielski //====================================================================== 180*b1cdbd2cSJim Jagielski //= QueryDesigner 181*b1cdbd2cSJim Jagielski //====================================================================== 182*b1cdbd2cSJim Jagielski class QueryDesigner : public DatabaseObjectView 183*b1cdbd2cSJim Jagielski { 184*b1cdbd2cSJim Jagielski protected: 185*b1cdbd2cSJim Jagielski sal_Int32 m_nCommandType; 186*b1cdbd2cSJim Jagielski 187*b1cdbd2cSJim Jagielski protected: 188*b1cdbd2cSJim Jagielski virtual void fillDispatchArgs( 189*b1cdbd2cSJim Jagielski ::comphelper::NamedValueCollection& i_rDispatchArgs, 190*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Any& _aDataSource, 191*b1cdbd2cSJim Jagielski const ::rtl::OUString& _rObjectName 192*b1cdbd2cSJim Jagielski ); 193*b1cdbd2cSJim Jagielski 194*b1cdbd2cSJim Jagielski public: 195*b1cdbd2cSJim Jagielski QueryDesigner( 196*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB, 197*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI >& _rxApplication, 198*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _rxParentFrame, 199*b1cdbd2cSJim Jagielski bool _bCreateView 200*b1cdbd2cSJim Jagielski ); 201*b1cdbd2cSJim Jagielski }; 202*b1cdbd2cSJim Jagielski 203*b1cdbd2cSJim Jagielski //====================================================================== 204*b1cdbd2cSJim Jagielski //= TableDesigner 205*b1cdbd2cSJim Jagielski //====================================================================== 206*b1cdbd2cSJim Jagielski class TableDesigner : public DatabaseObjectView 207*b1cdbd2cSJim Jagielski { 208*b1cdbd2cSJim Jagielski protected: 209*b1cdbd2cSJim Jagielski virtual void fillDispatchArgs( 210*b1cdbd2cSJim Jagielski ::comphelper::NamedValueCollection& i_rDispatchArgs, 211*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Any& _aDataSource, 212*b1cdbd2cSJim Jagielski const ::rtl::OUString& _rObjectName 213*b1cdbd2cSJim Jagielski ); 214*b1cdbd2cSJim Jagielski 215*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > doCreateView( 216*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Any& _rDataSource, 217*b1cdbd2cSJim Jagielski const ::rtl::OUString& _rObjectName, 218*b1cdbd2cSJim Jagielski const ::comphelper::NamedValueCollection& i_rCreationArgs 219*b1cdbd2cSJim Jagielski ); 220*b1cdbd2cSJim Jagielski 221*b1cdbd2cSJim Jagielski public: 222*b1cdbd2cSJim Jagielski TableDesigner( 223*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB, 224*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI >& _rxApplication, 225*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _rxParentFrame 226*b1cdbd2cSJim Jagielski ); 227*b1cdbd2cSJim Jagielski 228*b1cdbd2cSJim Jagielski private: 229*b1cdbd2cSJim Jagielski /** retrieves the table designer component as provided by the connection, if any 230*b1cdbd2cSJim Jagielski @param _rTableName 231*b1cdbd2cSJim Jagielski the name of the table for which a designer is to be obtained 232*b1cdbd2cSJim Jagielski @return 233*b1cdbd2cSJim Jagielski the designer component, as provided by the connection, or <NULL/>, if the connection 234*b1cdbd2cSJim Jagielski does not provide a specialized designer. 235*b1cdbd2cSJim Jagielski @see com::sun::star::sdb::application::XTableUIProvider 236*b1cdbd2cSJim Jagielski */ 237*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > 238*b1cdbd2cSJim Jagielski impl_getConnectionProvidedDesigner_nothrow( const ::rtl::OUString& _rTableName ); 239*b1cdbd2cSJim Jagielski }; 240*b1cdbd2cSJim Jagielski 241*b1cdbd2cSJim Jagielski //====================================================================== 242*b1cdbd2cSJim Jagielski //= ResultSetBrowser 243*b1cdbd2cSJim Jagielski //====================================================================== 244*b1cdbd2cSJim Jagielski class ResultSetBrowser : public DatabaseObjectView 245*b1cdbd2cSJim Jagielski { 246*b1cdbd2cSJim Jagielski private: 247*b1cdbd2cSJim Jagielski sal_Bool m_bTable; 248*b1cdbd2cSJim Jagielski 249*b1cdbd2cSJim Jagielski protected: 250*b1cdbd2cSJim Jagielski virtual void fillDispatchArgs( 251*b1cdbd2cSJim Jagielski ::comphelper::NamedValueCollection& i_rDispatchArgs, 252*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Any& _aDataSource, 253*b1cdbd2cSJim Jagielski const ::rtl::OUString& _rQualifiedName 254*b1cdbd2cSJim Jagielski ); 255*b1cdbd2cSJim Jagielski 256*b1cdbd2cSJim Jagielski public: 257*b1cdbd2cSJim Jagielski ResultSetBrowser( 258*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB, 259*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI >& _rxApplication, 260*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _rxParentFrame, 261*b1cdbd2cSJim Jagielski sal_Bool _bTable 262*b1cdbd2cSJim Jagielski ); 263*b1cdbd2cSJim Jagielski 264*b1cdbd2cSJim Jagielski }; 265*b1cdbd2cSJim Jagielski //====================================================================== 266*b1cdbd2cSJim Jagielski //= RelationDesigner 267*b1cdbd2cSJim Jagielski //====================================================================== 268*b1cdbd2cSJim Jagielski class RelationDesigner : public DatabaseObjectView 269*b1cdbd2cSJim Jagielski { 270*b1cdbd2cSJim Jagielski public: 271*b1cdbd2cSJim Jagielski RelationDesigner( 272*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB, 273*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI >& _rxApplication, 274*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _rxParentFrame 275*b1cdbd2cSJim Jagielski ); 276*b1cdbd2cSJim Jagielski }; 277*b1cdbd2cSJim Jagielski // ......................................................................... 278*b1cdbd2cSJim Jagielski } // namespace dbaui 279*b1cdbd2cSJim Jagielski // ......................................................................... 280*b1cdbd2cSJim Jagielski 281*b1cdbd2cSJim Jagielski #endif // DBACCESS_DATABASE_OBJECT_VIEW_HXX 282*b1cdbd2cSJim Jagielski 283