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 #ifndef _SVX_FMGRIDIF_HXX 24 #define _SVX_FMGRIDIF_HXX 25 26 #include "svx/svxdllapi.h" 27 28 #include <com/sun/star/view/XSelectionSupplier.hpp> 29 #include <com/sun/star/lang/XMultiServiceFactory.hpp> 30 #include <com/sun/star/container/XEnumerationAccess.hpp> 31 #include <com/sun/star/container/XContainer.hpp> 32 #include <com/sun/star/container/XContainerListener.hpp> 33 #include <com/sun/star/sdbc/XRowSetListener.hpp> 34 #include <com/sun/star/sdb/XRowSetSupplier.hpp> 35 #include <com/sun/star/form/XReset.hpp> 36 #include <com/sun/star/form/XBoundComponent.hpp> 37 #include <com/sun/star/form/XLoadListener.hpp> 38 #include <com/sun/star/form/XGridControl.hpp> 39 #include <com/sun/star/form/XGridPeer.hpp> 40 #include <com/sun/star/frame/XDispatchProvider.hpp> 41 #include <com/sun/star/frame/XStatusListener.hpp> 42 #include <com/sun/star/frame/XDispatchProviderInterception.hpp> 43 #include <com/sun/star/view/XSelectionChangeListener.hpp> 44 #include <com/sun/star/util/XModeSelector.hpp> 45 #include <com/sun/star/util/XModifyListener.hpp> 46 #include <com/sun/star/util/XModifyBroadcaster.hpp> 47 48 #include <tools/wintypes.hxx> 49 #include <toolkit/controls/unocontrol.hxx> 50 #include <toolkit/awt/vclxwindow.hxx> 51 #include <comphelper/uno3.hxx> 52 #include <cppuhelper/implbase10.hxx> 53 54 #if ! defined(INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_19) 55 #define INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_19 56 #define COMPHELPER_IMPLBASE_INTERFACE_NUMBER 19 57 #include <comphelper/implbase_var.hxx> 58 #endif 59 60 61 class DbGridColumn; 62 63 class OWeakSubObject : public ::cppu::OWeakObject 64 { 65 protected: 66 ::cppu::OWeakObject& m_rParent; 67 68 public: OWeakSubObject(::cppu::OWeakObject & rParent)69 OWeakSubObject(::cppu::OWeakObject& rParent) : m_rParent(rParent) { } 70 acquire()71 virtual void SAL_CALL acquire() throw() { m_rParent.acquire(); } release()72 virtual void SAL_CALL release() throw() { m_rParent.release(); } 73 }; 74 75 //================================================================== 76 // FmXModifyMultiplexer 77 //================================================================== 78 class FmXModifyMultiplexer :public OWeakSubObject 79 ,public ::cppu::OInterfaceContainerHelper 80 ,public ::com::sun::star::util::XModifyListener 81 { 82 public: 83 FmXModifyMultiplexer( ::cppu::OWeakObject& rSource, ::osl::Mutex& rMutex ); 84 DECLARE_UNO3_DEFAULTS(FmXModifyMultiplexer,OWeakSubObject); 85 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(const ::com::sun::star::uno::Type& _rType) throw (::com::sun::star::uno::RuntimeException); 86 87 // ::com::sun::star::lang::XEventListener 88 virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw(::com::sun::star::uno::RuntimeException); 89 90 // ::com::sun::star::util::XModifyListener 91 virtual void SAL_CALL modified(const ::com::sun::star::lang::EventObject& Source) throw(::com::sun::star::uno::RuntimeException); 92 93 // resolve ambiguity : both OWeakObject and OInterfaceContainerHelper have these memory operators operator new(size_t size)94 void * SAL_CALL operator new( size_t size ) throw() { return OWeakSubObject::operator new(size); } operator delete(void * p)95 void SAL_CALL operator delete( void * p ) throw() { OWeakSubObject::operator delete(p); } 96 }; 97 98 //================================================================== 99 // FmXUpdateMultiplexer 100 //================================================================== 101 class FmXUpdateMultiplexer : public OWeakSubObject, 102 public ::cppu::OInterfaceContainerHelper, 103 public ::com::sun::star::form::XUpdateListener 104 { 105 public: 106 FmXUpdateMultiplexer( ::cppu::OWeakObject& rSource, ::osl::Mutex& rMutex ); 107 DECLARE_UNO3_DEFAULTS(FmXUpdateMultiplexer,OWeakSubObject); 108 109 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(const ::com::sun::star::uno::Type& _rType) throw (::com::sun::star::uno::RuntimeException); 110 111 // ::com::sun::star::lang::XEventListener 112 virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw(::com::sun::star::uno::RuntimeException); 113 114 // ::com::sun::star::form::XUpdateListener 115 virtual sal_Bool SAL_CALL approveUpdate(const ::com::sun::star::lang::EventObject &) throw(::com::sun::star::uno::RuntimeException); 116 virtual void SAL_CALL updated(const ::com::sun::star::lang::EventObject &) throw(::com::sun::star::uno::RuntimeException); 117 118 // resolve ambiguity : both OWeakObject and OInterfaceContainerHelper have these memory operators operator new(size_t size)119 void * SAL_CALL operator new( size_t size ) throw() { return OWeakSubObject::operator new(size); } operator delete(void * p)120 void SAL_CALL operator delete( void * p ) throw() { OWeakSubObject::operator delete(p); } 121 }; 122 123 //================================================================== 124 // FmXSelectionMultiplexer 125 //================================================================== 126 class FmXSelectionMultiplexer :public OWeakSubObject 127 ,public ::cppu::OInterfaceContainerHelper 128 ,public ::com::sun::star::view::XSelectionChangeListener 129 { 130 public: 131 FmXSelectionMultiplexer( ::cppu::OWeakObject& rSource, ::osl::Mutex& rMutex ); 132 DECLARE_UNO3_DEFAULTS(FmXSelectionMultiplexer, OWeakSubObject); 133 134 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(const ::com::sun::star::uno::Type& _rType) throw (::com::sun::star::uno::RuntimeException); 135 136 // ::com::sun::star::lang::XEventListener 137 virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw(::com::sun::star::uno::RuntimeException); 138 139 // ::com::sun::star::view::XSelectionChangeListener 140 virtual void SAL_CALL selectionChanged( const ::com::sun::star::lang::EventObject& aEvent ) throw (::com::sun::star::uno::RuntimeException); 141 142 // resolve ambiguity : both OWeakObject and OInterfaceContainerHelper have these memory operators operator new(size_t size)143 void * SAL_CALL operator new( size_t size ) throw() { return OWeakSubObject::operator new(size); } operator delete(void * p)144 void SAL_CALL operator delete( void * p ) throw() { OWeakSubObject::operator delete(p); } 145 }; 146 147 //================================================================== 148 // FmXGridControlMultiplexer 149 //================================================================== 150 class FmXGridControlMultiplexer :public OWeakSubObject 151 ,public ::cppu::OInterfaceContainerHelper 152 ,public ::com::sun::star::form::XGridControlListener 153 { 154 public: 155 FmXGridControlMultiplexer( ::cppu::OWeakObject& rSource, ::osl::Mutex& rMutex ); 156 DECLARE_UNO3_DEFAULTS( FmXGridControlMultiplexer, OWeakSubObject ); 157 158 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(const ::com::sun::star::uno::Type& _rType) throw (::com::sun::star::uno::RuntimeException); 159 160 // ::com::sun::star::lang::XEventListener 161 virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw(::com::sun::star::uno::RuntimeException); 162 163 // ::com::sun::star::view::XSelectionChangeListener 164 virtual void SAL_CALL columnChanged( const ::com::sun::star::lang::EventObject& _event ) throw (::com::sun::star::uno::RuntimeException); 165 166 // resolve ambiguity : both OWeakObject and OInterfaceContainerHelper have these memory operators operator new(size_t size)167 void * SAL_CALL operator new( size_t size ) throw() { return OWeakSubObject::operator new(size); } operator delete(void * p)168 void SAL_CALL operator delete( void * p ) throw() { OWeakSubObject::operator delete(p); } 169 }; 170 171 //================================================================== 172 // FmXContainerMultiplexer 173 //================================================================== 174 class FmXContainerMultiplexer : public OWeakSubObject, 175 public ::cppu::OInterfaceContainerHelper, 176 public ::com::sun::star::container::XContainerListener 177 { 178 public: 179 FmXContainerMultiplexer( ::cppu::OWeakObject& rSource, ::osl::Mutex& rMutex); 180 DECLARE_UNO3_DEFAULTS(FmXContainerMultiplexer,OWeakSubObject); 181 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(const ::com::sun::star::uno::Type& _rType) throw (::com::sun::star::uno::RuntimeException); 182 183 // ::com::sun::star::lang::XEventListener 184 virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw(::com::sun::star::uno::RuntimeException); 185 186 // ::com::sun::star::container::XContainerListener 187 virtual void SAL_CALL elementInserted(const ::com::sun::star::container::ContainerEvent& Event) throw(::com::sun::star::uno::RuntimeException); 188 virtual void SAL_CALL elementRemoved(const ::com::sun::star::container::ContainerEvent& Event) throw(::com::sun::star::uno::RuntimeException); 189 virtual void SAL_CALL elementReplaced(const ::com::sun::star::container::ContainerEvent& Event) throw(::com::sun::star::uno::RuntimeException); 190 191 // resolve ambiguity : both OWeakObject and OInterfaceContainerHelper have these memory operators operator new(size_t size)192 void * SAL_CALL operator new( size_t size ) throw() { return OWeakSubObject::operator new(size); } operator delete(void * p)193 void SAL_CALL operator delete( void * p ) throw() { OWeakSubObject::operator delete(p); } 194 }; 195 196 //================================================================== 197 // FmXGridControl 198 //================================================================== 199 typedef ::cppu::ImplHelper10< ::com::sun::star::form::XBoundComponent, 200 ::com::sun::star::form::XGridControl, 201 ::com::sun::star::util::XModifyBroadcaster, 202 ::com::sun::star::container::XIndexAccess, 203 ::com::sun::star::container::XEnumerationAccess, 204 ::com::sun::star::util::XModeSelector, 205 ::com::sun::star::container::XContainer, 206 ::com::sun::star::frame::XDispatchProvider, 207 ::com::sun::star::frame::XDispatchProviderInterception, 208 ::com::sun::star::view::XSelectionSupplier 209 > FmXGridControl_BASE; 210 211 class FmXGridPeer; 212 class SVX_DLLPUBLIC FmXGridControl :public UnoControl 213 ,public FmXGridControl_BASE 214 { 215 FmXModifyMultiplexer m_aModifyListeners; 216 FmXUpdateMultiplexer m_aUpdateListeners; 217 FmXContainerMultiplexer m_aContainerListeners; 218 FmXSelectionMultiplexer m_aSelectionListeners; 219 FmXGridControlMultiplexer m_aGridControlListeners; 220 221 protected: 222 sal_uInt16 m_nPeerCreationLevel; 223 sal_Bool m_bInDraw; 224 225 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xServiceFactory; 226 227 public: 228 FmXGridControl(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&); 229 virtual ~FmXGridControl(); 230 231 // UNO Anbindung 232 DECLARE_UNO3_AGG_DEFAULTS(FmXGridControl, UnoControl); 233 virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation(const ::com::sun::star::uno::Type& _rType) throw (::com::sun::star::uno::RuntimeException); 234 235 // XTypeProvider 236 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type> SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException); 237 virtual ::com::sun::star::uno::Sequence<sal_Int8> SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException); 238 239 // ::com::sun::star::lang::XComponent 240 virtual void SAL_CALL dispose() throw(::com::sun::star::uno::RuntimeException); 241 242 // ::com::sun::star::lang::XServiceInfo 243 virtual sal_Bool SAL_CALL supportsService(const ::rtl::OUString& ServiceName) throw(); 244 virtual ::rtl::OUString SAL_CALL getImplementationName() throw(); 245 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(); 246 247 // ::com::sun::star::awt::XControl 248 virtual void SAL_CALL createPeer(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XToolkit >& _rToolkit, const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer >& Parent) throw(::com::sun::star::uno::RuntimeException); 249 virtual sal_Bool SAL_CALL setModel(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel >& Model) throw(::com::sun::star::uno::RuntimeException); 250 virtual void SAL_CALL setDesignMode(sal_Bool bOn) throw(::com::sun::star::uno::RuntimeException); 251 252 // ::com::sun::star::awt::XView 253 virtual void SAL_CALL draw( sal_Int32 x, sal_Int32 y ) throw(::com::sun::star::uno::RuntimeException); 254 255 // ::com::sun::star::form::XBoundComponent 256 virtual void SAL_CALL addUpdateListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XUpdateListener >& l) throw(::com::sun::star::uno::RuntimeException); 257 virtual void SAL_CALL removeUpdateListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XUpdateListener >& l) throw(::com::sun::star::uno::RuntimeException); 258 virtual sal_Bool SAL_CALL commit() throw(::com::sun::star::uno::RuntimeException); 259 260 // ::com::sun::star::container::XElementAccess 261 virtual ::com::sun::star::uno::Type SAL_CALL getElementType( ) throw(::com::sun::star::uno::RuntimeException); 262 virtual sal_Bool SAL_CALL hasElements( ) throw(::com::sun::star::uno::RuntimeException); 263 264 // ::com::sun::star::container::XEnumerationAccess 265 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration() throw(::com::sun::star::uno::RuntimeException); 266 267 // ::com::sun::star::container::XIndexAccess 268 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException); 269 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 _rIndex) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 270 271 // ::com::sun::star::form::XGridControl 272 virtual void SAL_CALL addGridControlListener( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XGridControlListener >& _listener ) throw(::com::sun::star::uno::RuntimeException); 273 virtual void SAL_CALL removeGridControlListener( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XGridControlListener >& _listener ) throw(::com::sun::star::uno::RuntimeException); 274 275 // ::com::sun::star::form::XGrid (base of XGridControl) 276 virtual sal_Int16 SAL_CALL getCurrentColumnPosition() throw(::com::sun::star::uno::RuntimeException); 277 virtual void SAL_CALL setCurrentColumnPosition(sal_Int16 nPos) throw(::com::sun::star::uno::RuntimeException); 278 279 // ::com::sun::star::form::XGridFieldDataSupplier (base of XGridControl) 280 virtual ::com::sun::star::uno::Sequence< sal_Bool > SAL_CALL queryFieldDataType( const ::com::sun::star::uno::Type& xType ) throw(::com::sun::star::uno::RuntimeException); 281 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL queryFieldData( sal_Int32 nRow, const ::com::sun::star::uno::Type& xType ) throw(::com::sun::star::uno::RuntimeException); 282 283 // UnoControl 284 virtual ::rtl::OUString GetComponentServiceName(); 285 286 // ::com::sun::star::util::XModifyBroadcaster 287 virtual void SAL_CALL addModifyListener(const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& l) throw(::com::sun::star::uno::RuntimeException); 288 virtual void SAL_CALL removeModifyListener(const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& l) throw(::com::sun::star::uno::RuntimeException); 289 290 // ::com::sun::star::util::XModeSelector 291 virtual void SAL_CALL setMode(const ::rtl::OUString& Mode) throw(::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 292 virtual ::rtl::OUString SAL_CALL getMode() throw(::com::sun::star::uno::RuntimeException); 293 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL getSupportedModes() throw(::com::sun::star::uno::RuntimeException); 294 virtual sal_Bool SAL_CALL supportsMode(const ::rtl::OUString& Mode) throw(::com::sun::star::uno::RuntimeException); 295 296 // ::com::sun::star::container::XContainer 297 virtual void SAL_CALL addContainerListener(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerListener >& l) throw(::com::sun::star::uno::RuntimeException); 298 virtual void SAL_CALL removeContainerListener(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerListener >& l) throw(::com::sun::star::uno::RuntimeException); 299 300 // ::com::sun::star::frame::XDispatchProvider 301 virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > SAL_CALL queryDispatch(const ::com::sun::star::util::URL& aURL, const ::rtl::OUString& aTargetFrameName, sal_Int32 nSearchFlags) throw(::com::sun::star::uno::RuntimeException); 302 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > > SAL_CALL queryDispatches(const ::com::sun::star::uno::Sequence< ::com::sun::star::frame::DispatchDescriptor >& aDescripts) throw(::com::sun::star::uno::RuntimeException); 303 304 // ::com::sun::star::frame::XDispatchProviderInterception 305 virtual void SAL_CALL registerDispatchProviderInterceptor(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProviderInterceptor >& xInterceptor) throw(::com::sun::star::uno::RuntimeException); 306 virtual void SAL_CALL releaseDispatchProviderInterceptor(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProviderInterceptor >& xInterceptor) throw(::com::sun::star::uno::RuntimeException); 307 308 // ::com::sun::star::view::XSelectionSupplier 309 virtual sal_Bool SAL_CALL select( const ::com::sun::star::uno::Any& aSelection ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 310 virtual ::com::sun::star::uno::Any SAL_CALL getSelection( ) throw (::com::sun::star::uno::RuntimeException); 311 virtual void SAL_CALL addSelectionChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); 312 virtual void SAL_CALL removeSelectionChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); 313 314 protected: 315 virtual FmXGridPeer* imp_CreatePeer(Window* pParent); 316 // ImplCreatePeer waere besser ;) geht aber nicht, da dann nicht exportiert 317 318 }; 319 320 //================================================================== 321 // FmXGridPeer -> Peer fuers Gridcontrol 322 //================================================================== 323 typedef ::comphelper::ImplHelper19 < ::com::sun::star::form::XGridPeer, 324 ::com::sun::star::form::XBoundComponent, 325 ::com::sun::star::form::XGridControl, 326 ::com::sun::star::sdb::XRowSetSupplier, 327 ::com::sun::star::util::XModifyBroadcaster, 328 ::com::sun::star::beans::XPropertyChangeListener, 329 ::com::sun::star::container::XContainerListener, 330 ::com::sun::star::sdbc::XRowSetListener, 331 ::com::sun::star::form::XLoadListener, 332 ::com::sun::star::view::XSelectionChangeListener, 333 ::com::sun::star::container::XIndexAccess, 334 ::com::sun::star::container::XEnumerationAccess, 335 ::com::sun::star::util::XModeSelector, 336 ::com::sun::star::container::XContainer, 337 ::com::sun::star::frame::XStatusListener, 338 ::com::sun::star::frame::XDispatchProvider, 339 ::com::sun::star::frame::XDispatchProviderInterception, 340 ::com::sun::star::form::XResetListener, 341 ::com::sun::star::view::XSelectionSupplier 342 > FmXGridPeer_BASE; 343 class FmGridControl; 344 class SVX_DLLPUBLIC FmXGridPeer :public VCLXWindow 345 ,public FmXGridPeer_BASE 346 { 347 ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > m_xColumns; 348 ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet > m_xCursor; 349 ::cppu::OInterfaceContainerHelper m_aModifyListeners, 350 m_aUpdateListeners, 351 m_aContainerListeners, 352 m_aSelectionListeners, 353 m_aGridControlListeners; 354 355 ::rtl::OUString m_aMode; 356 sal_Int32 m_nCursorListening; 357 358 ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProviderInterceptor > m_xFirstDispatchInterceptor; 359 360 sal_Bool m_bInterceptingDispatch; 361 362 sal_Bool* m_pStateCache; 363 // one bool for each supported url 364 ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > * m_pDispatchers; 365 // one dispatcher for each supported url 366 // (I would like to have a vector here but including the stl in an exported file seems 367 // very risky to me ....) 368 369 class GridListenerDelegator; 370 friend class GridListenerDelegator; 371 GridListenerDelegator* m_pGridListener; 372 373 protected: 374 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xServiceFactory; 375 ::osl::Mutex m_aMutex; 376 377 public: 378 FmXGridPeer(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&); 379 ~FmXGridPeer(); 380 381 // spaeter Constructor, immer nach dem realen Constructor zu rufen ! 382 void Create(Window* pParent, WinBits nStyle); 383 384 // UNO Anbindung 385 DECLARE_UNO3_DEFAULTS(FmXGridPeer, VCLXWindow); 386 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(const ::com::sun::star::uno::Type& _rType) throw (::com::sun::star::uno::RuntimeException); 387 388 // XTypeProvider 389 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type> SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException); 390 virtual ::com::sun::star::uno::Sequence<sal_Int8> SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException); 391 392 // ::com::sun::star::lang::XUnoTunnel 393 static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelImplementationId() throw(); 394 static FmXGridPeer* getImplementation( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxIFace ) throw(); 395 sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& _rIdentifier ) throw(::com::sun::star::uno::RuntimeException); 396 397 // ::com::sun::star::form::XGridPeer 398 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > SAL_CALL getColumns( ) throw(::com::sun::star::uno::RuntimeException); 399 virtual void SAL_CALL setColumns( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer >& aColumns ) throw(::com::sun::star::uno::RuntimeException); 400 401 // ::com::sun::star::lang::XComponent 402 virtual void SAL_CALL dispose() throw(::com::sun::star::uno::RuntimeException); 403 404 // ::com::sun::star::lang::XEventListener 405 virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw(::com::sun::star::uno::RuntimeException); 406 407 // ::com::sun::star::form::XBoundComponent 408 virtual void SAL_CALL addUpdateListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XUpdateListener >& l) throw(::com::sun::star::uno::RuntimeException); 409 virtual void SAL_CALL removeUpdateListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XUpdateListener >& l) throw(::com::sun::star::uno::RuntimeException); 410 virtual sal_Bool SAL_CALL commit() throw(::com::sun::star::uno::RuntimeException); 411 412 // ::com::sun::star::container::XElementAccess 413 virtual ::com::sun::star::uno::Type SAL_CALL getElementType( ) throw(::com::sun::star::uno::RuntimeException); 414 virtual sal_Bool SAL_CALL hasElements( ) throw(::com::sun::star::uno::RuntimeException); 415 416 // ::com::sun::star::container::XEnumerationAccess 417 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration() throw(::com::sun::star::uno::RuntimeException); 418 419 // ::com::sun::star::container::XIndexAccess 420 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException); 421 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 _rIndex) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 422 423 // ::com::sun::star::beans::XPropertyChangeListener 424 virtual void SAL_CALL SAL_CALL propertyChange(const ::com::sun::star::beans::PropertyChangeEvent& evt) throw(::com::sun::star::uno::RuntimeException); 425 426 // ::com::sun::star::form::XLoadListener 427 virtual void SAL_CALL loaded(const ::com::sun::star::lang::EventObject& rEvent) throw(::com::sun::star::uno::RuntimeException); 428 virtual void SAL_CALL unloaded(const ::com::sun::star::lang::EventObject& rEvent) throw(::com::sun::star::uno::RuntimeException); 429 virtual void SAL_CALL unloading(const ::com::sun::star::lang::EventObject& aEvent) throw(::com::sun::star::uno::RuntimeException); 430 virtual void SAL_CALL reloading(const ::com::sun::star::lang::EventObject& aEvent) throw(::com::sun::star::uno::RuntimeException); 431 virtual void SAL_CALL reloaded(const ::com::sun::star::lang::EventObject& aEvent) throw(::com::sun::star::uno::RuntimeException); 432 433 // ::com::sun::star::sdbc::XRowSetListener 434 virtual void SAL_CALL cursorMoved(const ::com::sun::star::lang::EventObject& event) throw(::com::sun::star::uno::RuntimeException); 435 virtual void SAL_CALL rowChanged(const ::com::sun::star::lang::EventObject& event) throw(::com::sun::star::uno::RuntimeException); 436 virtual void SAL_CALL rowSetChanged(const ::com::sun::star::lang::EventObject& event) throw(::com::sun::star::uno::RuntimeException); 437 438 // ::com::sun::star::container::XContainerListener 439 virtual void SAL_CALL elementInserted(const ::com::sun::star::container::ContainerEvent& Event) throw(::com::sun::star::uno::RuntimeException); 440 virtual void SAL_CALL elementRemoved(const ::com::sun::star::container::ContainerEvent& Event) throw(::com::sun::star::uno::RuntimeException); 441 virtual void SAL_CALL elementReplaced(const ::com::sun::star::container::ContainerEvent& Event) throw(::com::sun::star::uno::RuntimeException); 442 443 // VCLXWindow 444 virtual void SAL_CALL setProperty( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Any& Value ) throw(::com::sun::star::uno::RuntimeException); 445 virtual ::com::sun::star::uno::Any SAL_CALL getProperty( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException); 446 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > 447 CreateAccessibleContext(); 448 449 // ::com::sun::star::form::XGridControl 450 virtual void SAL_CALL addGridControlListener( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XGridControlListener >& _listener ) throw(::com::sun::star::uno::RuntimeException); 451 virtual void SAL_CALL removeGridControlListener( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XGridControlListener >& _listener ) throw(::com::sun::star::uno::RuntimeException); 452 453 // ::com::sun::star::form::XGrid (base of XGridControl) 454 virtual sal_Int16 SAL_CALL getCurrentColumnPosition() throw(::com::sun::star::uno::RuntimeException); 455 virtual void SAL_CALL setCurrentColumnPosition(sal_Int16 nPos) throw(::com::sun::star::uno::RuntimeException); 456 457 // ::com::sun::star::form::XGridFieldDataSupplier (base of XGridControl) 458 virtual ::com::sun::star::uno::Sequence< sal_Bool > SAL_CALL queryFieldDataType( const ::com::sun::star::uno::Type& xType ) throw(::com::sun::star::uno::RuntimeException); 459 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL queryFieldData( sal_Int32 nRow, const ::com::sun::star::uno::Type& xType ) throw(::com::sun::star::uno::RuntimeException); 460 461 // ::com::sun::star::sdb::XRowSetSupplier 462 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet > SAL_CALL getRowSet() throw(::com::sun::star::uno::RuntimeException); 463 virtual void SAL_CALL setRowSet(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xDataSource) throw(::com::sun::star::uno::RuntimeException); 464 465 // ::com::sun::star::util::XModifyBroadcaster 466 virtual void SAL_CALL addModifyListener(const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& l) throw(::com::sun::star::uno::RuntimeException); 467 virtual void SAL_CALL removeModifyListener(const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& l) throw(::com::sun::star::uno::RuntimeException); 468 469 // UnoControl 470 virtual void SAL_CALL SAL_CALL setDesignMode(sal_Bool bOn) throw(::com::sun::star::uno::RuntimeException); 471 virtual sal_Bool SAL_CALL isDesignMode() throw(::com::sun::star::uno::RuntimeException); 472 473 // ::com::sun::star::view::XSelectionChangeListener 474 virtual void SAL_CALL selectionChanged(const ::com::sun::star::lang::EventObject& aEvent) throw(::com::sun::star::uno::RuntimeException); 475 476 void CellModified(); 477 478 // PropertyListening 479 void updateGrid(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& _rDatabaseCursor); 480 void startCursorListening(); 481 void stopCursorListening(); 482 483 // ::com::sun::star::util::XModeSelector 484 virtual void SAL_CALL setMode(const ::rtl::OUString& Mode) throw(::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 485 virtual ::rtl::OUString SAL_CALL getMode() throw(::com::sun::star::uno::RuntimeException); 486 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedModes() throw(::com::sun::star::uno::RuntimeException); 487 virtual sal_Bool SAL_CALL supportsMode(const ::rtl::OUString& Mode) throw(::com::sun::star::uno::RuntimeException); 488 489 // ::com::sun::star::container::XContainer 490 virtual void SAL_CALL addContainerListener(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerListener >& l) throw(::com::sun::star::uno::RuntimeException); 491 virtual void SAL_CALL removeContainerListener(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerListener >& l) throw(::com::sun::star::uno::RuntimeException); 492 493 void columnVisible(DbGridColumn* pColumn); 494 void columnHidden(DbGridColumn* pColumn); 495 496 // ::com::sun::star::awt::XView 497 virtual void SAL_CALL draw( sal_Int32 x, sal_Int32 y ) throw(::com::sun::star::uno::RuntimeException); 498 499 // ::com::sun::star::frame::XDispatchProvider 500 virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > SAL_CALL queryDispatch(const ::com::sun::star::util::URL& aURL, const ::rtl::OUString& aTargetFrameName, sal_Int32 nSearchFlags) throw(::com::sun::star::uno::RuntimeException); 501 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > > SAL_CALL queryDispatches(const ::com::sun::star::uno::Sequence< ::com::sun::star::frame::DispatchDescriptor >& aDescripts) throw(::com::sun::star::uno::RuntimeException); 502 503 // ::com::sun::star::frame::XDispatchProviderInterception 504 virtual void SAL_CALL registerDispatchProviderInterceptor(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProviderInterceptor >& xInterceptor) throw(::com::sun::star::uno::RuntimeException); 505 virtual void SAL_CALL releaseDispatchProviderInterceptor(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProviderInterceptor >& xInterceptor) throw(::com::sun::star::uno::RuntimeException); 506 507 // ::com::sun::star::frame::XStatusListener 508 virtual void SAL_CALL statusChanged(const ::com::sun::star::frame::FeatureStateEvent& Event) throw(::com::sun::star::uno::RuntimeException); 509 510 // ::com::sun::star::form::XResetListener 511 virtual sal_Bool SAL_CALL approveReset(const ::com::sun::star::lang::EventObject& rEvent) throw(::com::sun::star::uno::RuntimeException); 512 virtual void SAL_CALL resetted(const ::com::sun::star::lang::EventObject& rEvent) throw(::com::sun::star::uno::RuntimeException); 513 514 // ::com::sun::star::view::XSelectionSupplier 515 virtual sal_Bool SAL_CALL select( const ::com::sun::star::uno::Any& aSelection ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 516 virtual ::com::sun::star::uno::Any SAL_CALL getSelection( ) throw (::com::sun::star::uno::RuntimeException); 517 virtual void SAL_CALL addSelectionChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); 518 virtual void SAL_CALL removeSelectionChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); 519 520 protected: 521 virtual FmGridControl* imp_CreateControl(Window* pParent, WinBits nStyle); 522 523 static ::com::sun::star::uno::Sequence< ::com::sun::star::util::URL>& getSupportedURLs(); 524 static ::com::sun::star::uno::Sequence<sal_uInt16>& getSupportedGridSlots(); 525 void ConnectToDispatcher(); 526 void DisConnectFromDispatcher(); 527 void UpdateDispatches(); // will connect if not already connected and just update else 528 529 /** If a derived class wants to listen at some column properties, it doesn't have 530 to overload all methods affecting columns (setColumns, elementInserted, elementRemoved ...) 531 Instead it may use addColumnListeners and removeColumnListeners which are called in all 532 the cases. 533 */ 534 virtual void addColumnListeners(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xCol); 535 virtual void removeColumnListeners(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xCol); 536 537 void selectionChanged(); 538 void columnChanged(); 539 540 DECL_LINK(OnQueryGridSlotState, void*); 541 DECL_LINK(OnExecuteGridSlot, void*); 542 }; 543 544 545 546 #endif // _SVX_FMGRID_HXX 547 548