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