xref: /AOO41X/main/sc/inc/dispuno.hxx (revision 38d50f7b14e1cf975d8c6468d9633894cd59b523)
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 SC_DISPUNO_HXX
25 #define SC_DISPUNO_HXX
26 
27 #include <com/sun/star/frame/XDispatchProviderInterceptor.hpp>
28 #include <com/sun/star/view/XSelectionChangeListener.hpp>
29 #include <cppuhelper/implbase2.hxx>
30 #include <svl/lstner.hxx>
31 #include <svl/svarray.hxx>
32 #include "global.hxx"       // ScImportParam
33 
34 
35 namespace com { namespace sun { namespace star { namespace frame {
36     class XDispatchProviderInterception;
37 } } } }
38 
39 class ScTabViewShell;
40 
41 
42 typedef ::com::sun::star::uno::Reference<
43             ::com::sun::star::frame::XStatusListener >* XStatusListenerPtr;
44 SV_DECL_PTRARR_DEL( XStatusListenerArr_Impl, XStatusListenerPtr, 4, 4 )
45 
46 
47 class ScDispatchProviderInterceptor : public cppu::WeakImplHelper2<
48                                         com::sun::star::frame::XDispatchProviderInterceptor,
49                                         com::sun::star::lang::XEventListener>,
50                                     public SfxListener
51 {
52     ScTabViewShell*     pViewShell;
53 
54     // the component which's dispatches we're intercepting
55     ::com::sun::star::uno::Reference<
56         ::com::sun::star::frame::XDispatchProviderInterception> m_xIntercepted;
57 
58     // chaining
59     ::com::sun::star::uno::Reference<
60         ::com::sun::star::frame::XDispatchProvider> m_xSlaveDispatcher;
61     ::com::sun::star::uno::Reference<
62         ::com::sun::star::frame::XDispatchProvider> m_xMasterDispatcher;
63 
64     // own dispatch
65     ::com::sun::star::uno::Reference<
66         ::com::sun::star::frame::XDispatch> m_xMyDispatch;
67 
68 public:
69 
70                             ScDispatchProviderInterceptor(ScTabViewShell* pViewSh);
71     virtual                 ~ScDispatchProviderInterceptor();
72 
73     virtual void            Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
74 
75                             // XDispatchProvider
76     virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > SAL_CALL
77                             queryDispatch( const ::com::sun::star::util::URL& aURL,
78                                         const ::rtl::OUString& aTargetFrameName,
79                                         sal_Int32 nSearchFlags )
80                                     throw(::com::sun::star::uno::RuntimeException);
81     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference<
82                                         ::com::sun::star::frame::XDispatch > > SAL_CALL
83                             queryDispatches( const ::com::sun::star::uno::Sequence<
84                                         ::com::sun::star::frame::DispatchDescriptor >& aDescripts )
85                                     throw(::com::sun::star::uno::RuntimeException);
86 
87                             // XDispatchProviderInterceptor
88     virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > SAL_CALL
89                             getSlaveDispatchProvider() throw(::com::sun::star::uno::RuntimeException);
90     virtual void SAL_CALL   setSlaveDispatchProvider( const ::com::sun::star::uno::Reference<
91                                 ::com::sun::star::frame::XDispatchProvider >& xNewDispatchProvider )
92                                 throw(::com::sun::star::uno::RuntimeException);
93     virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > SAL_CALL
94                             getMasterDispatchProvider() throw(::com::sun::star::uno::RuntimeException);
95     virtual void SAL_CALL   setMasterDispatchProvider( const ::com::sun::star::uno::Reference<
96                                 ::com::sun::star::frame::XDispatchProvider >& xNewSupplier )
97                                 throw(::com::sun::star::uno::RuntimeException);
98 
99                             // XEventListener
100     virtual void SAL_CALL   disposing( const ::com::sun::star::lang::EventObject& Source )
101                                 throw(::com::sun::star::uno::RuntimeException);
102 };
103 
104 
105 class ScDispatch : public cppu::WeakImplHelper2<
106                                     com::sun::star::frame::XDispatch,
107                                     com::sun::star::view::XSelectionChangeListener >,
108                                 public SfxListener
109 {
110     ScTabViewShell*         pViewShell;
111     XStatusListenerArr_Impl aDataSourceListeners;
112     ScImportParam           aLastImport;
113     sal_Bool                bListeningToView;
114 
115 public:
116 
117                             ScDispatch(ScTabViewShell* pViewSh);
118     virtual                 ~ScDispatch();
119 
120     virtual void            Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
121 
122                             // XDispatch
123     virtual void SAL_CALL   dispatch( const ::com::sun::star::util::URL& aURL,
124                                 const ::com::sun::star::uno::Sequence<
125                                     ::com::sun::star::beans::PropertyValue >& aArgs )
126                                 throw(::com::sun::star::uno::RuntimeException);
127     virtual void SAL_CALL   addStatusListener( const ::com::sun::star::uno::Reference<
128                                     ::com::sun::star::frame::XStatusListener >& xControl,
129                                 const ::com::sun::star::util::URL& aURL )
130                                 throw(::com::sun::star::uno::RuntimeException);
131     virtual void SAL_CALL   removeStatusListener( const ::com::sun::star::uno::Reference<
132                                     ::com::sun::star::frame::XStatusListener >& xControl,
133                                 const ::com::sun::star::util::URL& aURL )
134                                 throw(::com::sun::star::uno::RuntimeException);
135 
136                             // XSelectionChangeListener
137     virtual void SAL_CALL   selectionChanged( const ::com::sun::star::lang::EventObject& aEvent )
138                                 throw (::com::sun::star::uno::RuntimeException);
139 
140                             // XEventListener
141     virtual void SAL_CALL   disposing( const ::com::sun::star::lang::EventObject& Source )
142                                 throw (::com::sun::star::uno::RuntimeException);
143 };
144 
145 
146 #endif
147 
148