xref: /aoo42x/main/dtrans/source/os2/dnd/DragSource.hxx (revision cc13e73e)
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