1*cc13e73eSYuri Dario /************************************************************** 2*cc13e73eSYuri Dario * 3*cc13e73eSYuri Dario * Licensed to the Apache Software Foundation (ASF) under one 4*cc13e73eSYuri Dario * or more contributor license agreements. See the NOTICE file 5*cc13e73eSYuri Dario * distributed with this work for additional information 6*cc13e73eSYuri Dario * regarding copyright ownership. The ASF licenses this file 7*cc13e73eSYuri Dario * to you under the Apache License, Version 2.0 (the 8*cc13e73eSYuri Dario * "License"); you may not use this file except in compliance 9*cc13e73eSYuri Dario * with the License. You may obtain a copy of the License at 10*cc13e73eSYuri Dario * 11*cc13e73eSYuri Dario * http://www.apache.org/licenses/LICENSE-2.0 12*cc13e73eSYuri Dario * 13*cc13e73eSYuri Dario * Unless required by applicable law or agreed to in writing, 14*cc13e73eSYuri Dario * software distributed under the License is distributed on an 15*cc13e73eSYuri Dario * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*cc13e73eSYuri Dario * KIND, either express or implied. See the License for the 17*cc13e73eSYuri Dario * specific language governing permissions and limitations 18*cc13e73eSYuri Dario * under the License. 19*cc13e73eSYuri Dario * 20*cc13e73eSYuri Dario *************************************************************/ 21*cc13e73eSYuri Dario 22*cc13e73eSYuri Dario 23*cc13e73eSYuri Dario #ifndef _DRAGSOURCE_HXX_ 24*cc13e73eSYuri Dario #define _DRAGSOURCE_HXX_ 25*cc13e73eSYuri Dario 26*cc13e73eSYuri Dario #include <svpm.h> 27*cc13e73eSYuri Dario 28*cc13e73eSYuri Dario #include <com/sun/star/datatransfer/dnd/XDragSource.hpp> 29*cc13e73eSYuri Dario #include <com/sun/star/datatransfer/dnd/XDragSourceContext.hpp> 30*cc13e73eSYuri Dario #include <com/sun/star/lang/XInitialization.hpp> 31*cc13e73eSYuri Dario #include <com/sun/star/lang/XServiceInfo.hpp> 32*cc13e73eSYuri Dario 33*cc13e73eSYuri Dario #include <cppuhelper/basemutex.hxx> 34*cc13e73eSYuri Dario #include <cppuhelper/compbase4.hxx> 35*cc13e73eSYuri Dario #include <osl/mutex.hxx> 36*cc13e73eSYuri Dario 37*cc13e73eSYuri Dario #include "globals.hxx" 38*cc13e73eSYuri Dario 39*cc13e73eSYuri Dario using namespace cppu; 40*cc13e73eSYuri Dario using namespace osl; 41*cc13e73eSYuri Dario using namespace rtl; 42*cc13e73eSYuri Dario using namespace com::sun::star::datatransfer; 43*cc13e73eSYuri Dario using namespace com::sun::star::datatransfer::dnd; 44*cc13e73eSYuri Dario using namespace com::sun::star::lang; 45*cc13e73eSYuri Dario using namespace com::sun::star::uno; 46*cc13e73eSYuri Dario 47*cc13e73eSYuri Dario 48*cc13e73eSYuri Dario class DragSource: 49*cc13e73eSYuri Dario public cppu::BaseMutex, 50*cc13e73eSYuri Dario public WeakComponentImplHelper4<XDragSource, 51*cc13e73eSYuri Dario XInitialization, 52*cc13e73eSYuri Dario XDragSourceContext, 53*cc13e73eSYuri Dario XServiceInfo> 54*cc13e73eSYuri Dario { 55*cc13e73eSYuri Dario public: 56*cc13e73eSYuri Dario // used also in DropTarget in AOO internal d&d 57*cc13e73eSYuri Dario static Reference<XTransferable> g_XTransferable; 58*cc13e73eSYuri Dario // the handle of the window starting the drag 59*cc13e73eSYuri Dario static HWND g_DragSourceHwnd; 60*cc13e73eSYuri Dario 61*cc13e73eSYuri Dario private: 62*cc13e73eSYuri Dario Reference<XMultiServiceFactory> m_serviceFactory; 63*cc13e73eSYuri Dario // The native window which acts as source. 64*cc13e73eSYuri Dario HWND m_hWnd; 65*cc13e73eSYuri Dario PDRAGINFO pSourceDraginfo; 66*cc13e73eSYuri Dario char *pSharedMem; 67*cc13e73eSYuri Dario char *pDTShareMem; 68*cc13e73eSYuri Dario 69*cc13e73eSYuri Dario Reference<XDragSourceListener> dragSourceListener; 70*cc13e73eSYuri Dario 71*cc13e73eSYuri Dario public: 72*cc13e73eSYuri Dario DragSource( const Reference<XMultiServiceFactory>& sf); 73*cc13e73eSYuri Dario virtual ~DragSource(); 74*cc13e73eSYuri Dario 75*cc13e73eSYuri Dario // XInitialization 76*cc13e73eSYuri Dario virtual void SAL_CALL initialize( const Sequence< Any >& aArguments ) 77*cc13e73eSYuri Dario throw(Exception, RuntimeException); 78*cc13e73eSYuri Dario virtual void SAL_CALL disposing(); 79*cc13e73eSYuri Dario 80*cc13e73eSYuri Dario // XDragSource 81*cc13e73eSYuri Dario virtual sal_Bool SAL_CALL isDragImageSupported( ) throw(RuntimeException); 82*cc13e73eSYuri Dario virtual sal_Int32 SAL_CALL getDefaultCursor(sal_Int8 dragAction) 83*cc13e73eSYuri Dario throw(IllegalArgumentException, RuntimeException); 84*cc13e73eSYuri Dario virtual void SAL_CALL startDrag( const DragGestureEvent& trigger, 85*cc13e73eSYuri Dario sal_Int8 sourceActions, 86*cc13e73eSYuri Dario sal_Int32 cursor, 87*cc13e73eSYuri Dario sal_Int32 image, 88*cc13e73eSYuri Dario const Reference< XTransferable>& transferable, 89*cc13e73eSYuri Dario const Reference< XDragSourceListener>& listener) 90*cc13e73eSYuri Dario throw(RuntimeException); 91*cc13e73eSYuri Dario 92*cc13e73eSYuri Dario // XDragSourceContext 93*cc13e73eSYuri Dario virtual sal_Int32 SAL_CALL getCurrentCursor() throw( RuntimeException); 94*cc13e73eSYuri Dario virtual void SAL_CALL setCursor( sal_Int32) throw( RuntimeException); 95*cc13e73eSYuri Dario virtual void SAL_CALL setImage( sal_Int32) throw( RuntimeException); 96*cc13e73eSYuri Dario virtual void SAL_CALL transferablesFlavorsChanged() throw( RuntimeException); 97*cc13e73eSYuri Dario 98*cc13e73eSYuri Dario // XServiceInfo 99*cc13e73eSYuri Dario virtual rtl::OUString SAL_CALL getImplementationName() throw (RuntimeException); 100*cc13e73eSYuri Dario virtual sal_Bool SAL_CALL supportsService(const rtl::OUString& ServiceName) throw (RuntimeException); 101*cc13e73eSYuri Dario virtual Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames() throw (RuntimeException); 102*cc13e73eSYuri Dario 103*cc13e73eSYuri Dario // OS/2 window messaging handlers 104*cc13e73eSYuri Dario MRESULT render( PDRAGTRANSFER); 105*cc13e73eSYuri Dario MRESULT endConversation( ULONG, ULONG); 106*cc13e73eSYuri Dario 107*cc13e73eSYuri Dario }; 108*cc13e73eSYuri Dario #endif // _DRAGSOURCE_HXX_ 109