xref: /trunk/main/dbaccess/source/core/dataaccess/intercept.hxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
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 DBA_INTERCEPT_HXX
29 #define DBA_INTERCEPT_HXX
30 
31 #ifndef _OSL_MUTEX_HXX_
32 #include <osl/mutex.hxx>
33 #endif
34 #ifndef _CPPUHELPER_IMPLBASE4_HXX_
35 #include <cppuhelper/implbase4.hxx>
36 #endif
37 #ifndef _CPPUHELPER_INTERFACECONTAINER_HXX_
38 #include <cppuhelper/interfacecontainer.hxx>
39 #endif
40 #ifndef  _COM_SUN_STAR_FRAME_XDISPATCHPROVIDERINTERCEPTOR_HPP_
41 #include <com/sun/star/frame/XDispatchProviderInterceptor.hpp>
42 #endif
43 #ifndef _COM_SUN_STAR_FRAME_XINTERCEPTORINFO_HPP_
44 #include <com/sun/star/frame/XInterceptorInfo.hpp>
45 #endif
46 #ifndef _COM_SUN_STAR_DOCUMENT_XEVENTLISTENER_HPP_
47 #include <com/sun/star/document/XEventListener.hpp>
48 #endif
49 #ifndef _COM_SUN_STAR_FRAME_XDISPATCH_HPP_
50 #include <com/sun/star/frame/XDispatch.hpp>
51 #endif
52 #ifndef _DBA_COREDATAACCESS_DOCUMENTDEFINITION_HXX_
53 #include "documentdefinition.hxx"
54 #endif
55 #include <vcl/svapp.hxx>
56 
57 namespace dbaccess
58 {
59 
60 
61 class OInterceptor : public ::cppu::WeakImplHelper4< ::com::sun::star::frame::XDispatchProviderInterceptor,
62                                                     ::com::sun::star::frame::XInterceptorInfo,
63                                                     ::com::sun::star::frame::XDispatch,
64                                                     ::com::sun::star::document::XEventListener>
65 {
66     DECL_LINK( OnDispatch, void* _aURL  );
67 protected:
68     virtual ~OInterceptor();
69 public:
70 
71     OInterceptor( ODocumentDefinition* _pContentHolder,sal_Bool _bAllowEditDoc );
72 
73     void SAL_CALL dispose() throw(::com::sun::star::uno::RuntimeException);
74 
75     //XDispatch
76     virtual void SAL_CALL
77     dispatch(
78         const ::com::sun::star::util::URL& URL,
79         const ::com::sun::star::uno::Sequence<
80         ::com::sun::star::beans::PropertyValue >& Arguments )
81         throw (::com::sun::star::uno::RuntimeException);
82 
83     virtual void SAL_CALL
84     addStatusListener(
85         const ::com::sun::star::uno::Reference<
86         ::com::sun::star::frame::XStatusListener >& Control,
87         const ::com::sun::star::util::URL& URL )
88         throw (
89             ::com::sun::star::uno::RuntimeException
90         );
91 
92     virtual void SAL_CALL
93     removeStatusListener(
94         const ::com::sun::star::uno::Reference<
95         ::com::sun::star::frame::XStatusListener >& Control,
96         const ::com::sun::star::util::URL& URL )
97         throw (
98             ::com::sun::star::uno::RuntimeException
99         );
100 
101     //XInterceptorInfo
102     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString >
103     SAL_CALL getInterceptedURLs(  )
104         throw (
105             ::com::sun::star::uno::RuntimeException
106         );
107 
108     //XDispatchProvider ( inherited by XDispatchProviderInterceptor )
109     virtual ::com::sun::star::uno::Reference<
110     ::com::sun::star::frame::XDispatch > SAL_CALL
111     queryDispatch(
112         const ::com::sun::star::util::URL& URL,
113         const ::rtl::OUString& TargetFrameName,
114         sal_Int32 SearchFlags )
115         throw (
116             ::com::sun::star::uno::RuntimeException
117         );
118 
119     virtual ::com::sun::star::uno::Sequence<
120     ::com::sun::star::uno::Reference<
121     ::com::sun::star::frame::XDispatch > > SAL_CALL
122     queryDispatches(
123         const ::com::sun::star::uno::Sequence<
124         ::com::sun::star::frame::DispatchDescriptor >& Requests )
125         throw (
126             ::com::sun::star::uno::RuntimeException
127         );
128 
129 
130     //XDispatchProviderInterceptor
131     virtual ::com::sun::star::uno::Reference<
132     ::com::sun::star::frame::XDispatchProvider > SAL_CALL
133     getSlaveDispatchProvider(  )
134         throw (
135             ::com::sun::star::uno::RuntimeException
136         );
137 
138     virtual void SAL_CALL
139     setSlaveDispatchProvider(
140         const ::com::sun::star::uno::Reference<
141         ::com::sun::star::frame::XDispatchProvider >& NewDispatchProvider )
142         throw (
143             ::com::sun::star::uno::RuntimeException
144         );
145 
146     virtual ::com::sun::star::uno::Reference<
147     ::com::sun::star::frame::XDispatchProvider > SAL_CALL
148     getMasterDispatchProvider(  )
149         throw (
150             ::com::sun::star::uno::RuntimeException
151         );
152 
153     virtual void SAL_CALL
154     setMasterDispatchProvider(
155         const ::com::sun::star::uno::Reference<
156         ::com::sun::star::frame::XDispatchProvider >& NewSupplier )
157         throw (
158             ::com::sun::star::uno::RuntimeException
159         );
160 
161     // XEventListener
162     virtual void SAL_CALL notifyEvent( const ::com::sun::star::document::EventObject& Event ) throw (::com::sun::star::uno::RuntimeException);
163     virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
164 
165 
166 private:
167 
168     osl::Mutex   m_aMutex;
169 
170     ODocumentDefinition*   m_pContentHolder;
171 
172     ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > m_xSlaveDispatchProvider;
173     ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > m_xMasterDispatchProvider;
174 
175     ::com::sun::star::uno::Sequence< ::rtl::OUString > m_aInterceptedURL;
176 
177     cppu::OInterfaceContainerHelper*    m_pDisposeEventListeners;
178     PropertyChangeListenerContainer*    m_pStatCL;
179     sal_Bool                            m_bAllowEditDoc;
180 };
181 
182 
183 //........................................................................
184 }   // namespace dbaccess
185 //........................................................................
186 
187 
188 #endif //DBA_INTERCEPT_HXX
189 
190 
191