1*9f62ea84SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*9f62ea84SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*9f62ea84SAndrew Rist * or more contributor license agreements. See the NOTICE file
5*9f62ea84SAndrew Rist * distributed with this work for additional information
6*9f62ea84SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*9f62ea84SAndrew Rist * to you under the Apache License, Version 2.0 (the
8*9f62ea84SAndrew Rist * "License"); you may not use this file except in compliance
9*9f62ea84SAndrew Rist * with the License. You may obtain a copy of the License at
10*9f62ea84SAndrew Rist *
11*9f62ea84SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12*9f62ea84SAndrew Rist *
13*9f62ea84SAndrew Rist * Unless required by applicable law or agreed to in writing,
14*9f62ea84SAndrew Rist * software distributed under the License is distributed on an
15*9f62ea84SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*9f62ea84SAndrew Rist * KIND, either express or implied. See the License for the
17*9f62ea84SAndrew Rist * specific language governing permissions and limitations
18*9f62ea84SAndrew Rist * under the License.
19*9f62ea84SAndrew Rist *
20*9f62ea84SAndrew Rist *************************************************************/
21*9f62ea84SAndrew Rist
22*9f62ea84SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_vcl.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir #include "vos/mutex.hxx"
28cdf0e10cSrcweir
29cdf0e10cSrcweir #include "osl/mutex.hxx"
30cdf0e10cSrcweir
31cdf0e10cSrcweir #include "vcl/svapp.hxx"
32cdf0e10cSrcweir
33cdf0e10cSrcweir #include "svdata.hxx"
34cdf0e10cSrcweir #include "salinst.hxx"
35cdf0e10cSrcweir
36cdf0e10cSrcweir #include "com/sun/star/lang/XServiceInfo.hpp"
37cdf0e10cSrcweir #include "com/sun/star/lang/XSingleServiceFactory.hpp"
38cdf0e10cSrcweir #include "com/sun/star/lang/XInitialization.hpp"
39cdf0e10cSrcweir #include "com/sun/star/lang/DisposedException.hpp"
40cdf0e10cSrcweir #include "com/sun/star/datatransfer/XTransferable.hpp"
41cdf0e10cSrcweir #include "com/sun/star/datatransfer/clipboard/XClipboard.hpp"
42cdf0e10cSrcweir #include "com/sun/star/datatransfer/clipboard/XClipboardEx.hpp"
43cdf0e10cSrcweir #include "com/sun/star/datatransfer/clipboard/XClipboardNotifier.hpp"
44cdf0e10cSrcweir #include "com/sun/star/datatransfer/clipboard/XClipboardListener.hpp"
45cdf0e10cSrcweir #include "com/sun/star/datatransfer/dnd/XDragSource.hpp"
46cdf0e10cSrcweir #include "com/sun/star/datatransfer/dnd/XDropTarget.hpp"
47cdf0e10cSrcweir #include "com/sun/star/datatransfer/dnd/DNDConstants.hpp"
48cdf0e10cSrcweir
49cdf0e10cSrcweir #include "cppuhelper/compbase1.hxx"
50cdf0e10cSrcweir #include "cppuhelper/compbase2.hxx"
51cdf0e10cSrcweir #include "cppuhelper/compbase3.hxx"
52cdf0e10cSrcweir #include "cppuhelper/implbase1.hxx"
53cdf0e10cSrcweir
54cdf0e10cSrcweir using rtl::OUString;
55cdf0e10cSrcweir using namespace com::sun::star;
56cdf0e10cSrcweir using namespace com::sun::star::uno;
57cdf0e10cSrcweir using namespace com::sun::star::lang;
58cdf0e10cSrcweir
59cdf0e10cSrcweir // -----------------------------------------------------------------------
60cdf0e10cSrcweir
61cdf0e10cSrcweir namespace vcl
62cdf0e10cSrcweir {
63cdf0e10cSrcweir // generic implementation to satisfy SalInstance
64cdf0e10cSrcweir class GenericClipboard :
65cdf0e10cSrcweir public cppu::WeakComponentImplHelper3 <
66cdf0e10cSrcweir datatransfer::clipboard::XClipboardEx,
67cdf0e10cSrcweir datatransfer::clipboard::XClipboardNotifier,
68cdf0e10cSrcweir XServiceInfo
69cdf0e10cSrcweir >
70cdf0e10cSrcweir {
71cdf0e10cSrcweir osl::Mutex m_aMutex;
72cdf0e10cSrcweir Reference< ::com::sun::star::datatransfer::XTransferable > m_aContents;
73cdf0e10cSrcweir Reference< ::com::sun::star::datatransfer::clipboard::XClipboardOwner > m_aOwner;
74cdf0e10cSrcweir std::list< Reference< ::com::sun::star::datatransfer::clipboard::XClipboardListener > > m_aListeners;
75cdf0e10cSrcweir
76cdf0e10cSrcweir void fireChangedContentsEvent();
77cdf0e10cSrcweir void clearContents();
78cdf0e10cSrcweir
79cdf0e10cSrcweir public:
80cdf0e10cSrcweir
GenericClipboard()81cdf0e10cSrcweir GenericClipboard() : cppu::WeakComponentImplHelper3<
82cdf0e10cSrcweir datatransfer::clipboard::XClipboardEx,
83cdf0e10cSrcweir datatransfer::clipboard::XClipboardNotifier,
84cdf0e10cSrcweir XServiceInfo
85cdf0e10cSrcweir >( m_aMutex )
86cdf0e10cSrcweir {}
87cdf0e10cSrcweir virtual ~GenericClipboard();
88cdf0e10cSrcweir
89cdf0e10cSrcweir /*
90cdf0e10cSrcweir * XServiceInfo
91cdf0e10cSrcweir */
92cdf0e10cSrcweir
93cdf0e10cSrcweir virtual rtl::OUString SAL_CALL getImplementationName() throw( RuntimeException );
94cdf0e10cSrcweir virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw( RuntimeException );
95cdf0e10cSrcweir virtual Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw( RuntimeException );
96cdf0e10cSrcweir
97cdf0e10cSrcweir static rtl::OUString getImplementationName_static();
98cdf0e10cSrcweir static Sequence< rtl::OUString > getSupportedServiceNames_static();
99cdf0e10cSrcweir
100cdf0e10cSrcweir /*
101cdf0e10cSrcweir * XClipboard
102cdf0e10cSrcweir */
103cdf0e10cSrcweir
104cdf0e10cSrcweir virtual Reference< ::com::sun::star::datatransfer::XTransferable > SAL_CALL getContents()
105cdf0e10cSrcweir throw(RuntimeException);
106cdf0e10cSrcweir
107cdf0e10cSrcweir virtual void SAL_CALL setContents(
108cdf0e10cSrcweir const Reference< ::com::sun::star::datatransfer::XTransferable >& xTrans,
109cdf0e10cSrcweir const Reference< ::com::sun::star::datatransfer::clipboard::XClipboardOwner >& xClipboardOwner )
110cdf0e10cSrcweir throw(RuntimeException);
111cdf0e10cSrcweir
112cdf0e10cSrcweir virtual ::rtl::OUString SAL_CALL getName()
113cdf0e10cSrcweir throw(RuntimeException);
114cdf0e10cSrcweir
115cdf0e10cSrcweir /*
116cdf0e10cSrcweir * XClipboardEx
117cdf0e10cSrcweir */
118cdf0e10cSrcweir
119cdf0e10cSrcweir virtual sal_Int8 SAL_CALL getRenderingCapabilities()
120cdf0e10cSrcweir throw(RuntimeException);
121cdf0e10cSrcweir
122cdf0e10cSrcweir /*
123cdf0e10cSrcweir * XClipboardNotifier
124cdf0e10cSrcweir */
125cdf0e10cSrcweir virtual void SAL_CALL addClipboardListener(
126cdf0e10cSrcweir const Reference< ::com::sun::star::datatransfer::clipboard::XClipboardListener >& listener )
127cdf0e10cSrcweir throw(RuntimeException);
128cdf0e10cSrcweir
129cdf0e10cSrcweir virtual void SAL_CALL removeClipboardListener(
130cdf0e10cSrcweir const Reference< ::com::sun::star::datatransfer::clipboard::XClipboardListener >& listener )
131cdf0e10cSrcweir throw(RuntimeException);
132cdf0e10cSrcweir };
133cdf0e10cSrcweir
~GenericClipboard()134cdf0e10cSrcweir GenericClipboard::~GenericClipboard()
135cdf0e10cSrcweir {
136cdf0e10cSrcweir }
137cdf0e10cSrcweir
getImplementationName_static()138cdf0e10cSrcweir rtl::OUString GenericClipboard::getImplementationName_static()
139cdf0e10cSrcweir {
140cdf0e10cSrcweir return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.datatransfer.VCLGenericClipboard" ) );
141cdf0e10cSrcweir }
142cdf0e10cSrcweir
getSupportedServiceNames_static()143cdf0e10cSrcweir Sequence< rtl::OUString > GenericClipboard::getSupportedServiceNames_static()
144cdf0e10cSrcweir {
145cdf0e10cSrcweir Sequence< OUString > aRet(1);
146cdf0e10cSrcweir aRet[0] = OUString::createFromAscii("com.sun.star.datatransfer.clipboard.SystemClipboard");
147cdf0e10cSrcweir return aRet;
148cdf0e10cSrcweir }
149cdf0e10cSrcweir
getImplementationName()150cdf0e10cSrcweir rtl::OUString GenericClipboard::getImplementationName() throw( RuntimeException )
151cdf0e10cSrcweir {
152cdf0e10cSrcweir return getImplementationName_static();
153cdf0e10cSrcweir }
154cdf0e10cSrcweir
getSupportedServiceNames()155cdf0e10cSrcweir Sequence< rtl::OUString > GenericClipboard::getSupportedServiceNames() throw( RuntimeException )
156cdf0e10cSrcweir {
157cdf0e10cSrcweir return getSupportedServiceNames_static();
158cdf0e10cSrcweir }
159cdf0e10cSrcweir
supportsService(const::rtl::OUString & ServiceName)160cdf0e10cSrcweir sal_Bool GenericClipboard::supportsService( const ::rtl::OUString& ServiceName ) throw( RuntimeException )
161cdf0e10cSrcweir {
162cdf0e10cSrcweir Sequence< OUString > aServices( getSupportedServiceNames() );
163cdf0e10cSrcweir sal_Int32 nServices = aServices.getLength();
164cdf0e10cSrcweir for( sal_Int32 i = 0; i < nServices; i++ )
165cdf0e10cSrcweir {
166cdf0e10cSrcweir if( aServices[i] == ServiceName )
167cdf0e10cSrcweir return sal_True;
168cdf0e10cSrcweir }
169cdf0e10cSrcweir return sal_False;
170cdf0e10cSrcweir }
171cdf0e10cSrcweir
getContents()172cdf0e10cSrcweir Reference< ::com::sun::star::datatransfer::XTransferable > GenericClipboard::getContents() throw( RuntimeException )
173cdf0e10cSrcweir {
174cdf0e10cSrcweir return m_aContents;
175cdf0e10cSrcweir }
176cdf0e10cSrcweir
setContents(const Reference<::com::sun::star::datatransfer::XTransferable> & xTrans,const Reference<::com::sun::star::datatransfer::clipboard::XClipboardOwner> & xClipboardOwner)177cdf0e10cSrcweir void GenericClipboard::setContents(
178cdf0e10cSrcweir const Reference< ::com::sun::star::datatransfer::XTransferable >& xTrans,
179cdf0e10cSrcweir const Reference< ::com::sun::star::datatransfer::clipboard::XClipboardOwner >& xClipboardOwner )
180cdf0e10cSrcweir throw( RuntimeException )
181cdf0e10cSrcweir {
182cdf0e10cSrcweir osl::ClearableMutexGuard aGuard( m_aMutex );
183cdf0e10cSrcweir Reference< datatransfer::clipboard::XClipboardOwner > xOldOwner( m_aOwner );
184cdf0e10cSrcweir Reference< datatransfer::XTransferable > xOldContents( m_aContents );
185cdf0e10cSrcweir m_aContents = xTrans;
186cdf0e10cSrcweir m_aOwner = xClipboardOwner;
187cdf0e10cSrcweir
188cdf0e10cSrcweir std::list< Reference< datatransfer::clipboard::XClipboardListener > > xListeners( m_aListeners );
189cdf0e10cSrcweir datatransfer::clipboard::ClipboardEvent aEv;
190cdf0e10cSrcweir aEv.Contents = m_aContents;
191cdf0e10cSrcweir
192cdf0e10cSrcweir aGuard.clear();
193cdf0e10cSrcweir
194cdf0e10cSrcweir if( xOldOwner.is() && xOldOwner != xClipboardOwner )
195cdf0e10cSrcweir xOldOwner->lostOwnership( this, xOldContents );
196cdf0e10cSrcweir for( std::list< Reference< datatransfer::clipboard::XClipboardListener > >::iterator it =
197cdf0e10cSrcweir xListeners.begin(); it != xListeners.end() ; ++it )
198cdf0e10cSrcweir {
199cdf0e10cSrcweir (*it)->changedContents( aEv );
200cdf0e10cSrcweir }
201cdf0e10cSrcweir }
202cdf0e10cSrcweir
getName()203cdf0e10cSrcweir rtl::OUString GenericClipboard::getName() throw( RuntimeException )
204cdf0e10cSrcweir {
205cdf0e10cSrcweir return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CLIPBOARD" ) );
206cdf0e10cSrcweir }
207cdf0e10cSrcweir
getRenderingCapabilities()208cdf0e10cSrcweir sal_Int8 GenericClipboard::getRenderingCapabilities() throw( RuntimeException )
209cdf0e10cSrcweir {
210cdf0e10cSrcweir return 0;
211cdf0e10cSrcweir }
212cdf0e10cSrcweir
addClipboardListener(const Reference<datatransfer::clipboard::XClipboardListener> & listener)213cdf0e10cSrcweir void GenericClipboard::addClipboardListener( const Reference< datatransfer::clipboard::XClipboardListener >& listener )
214cdf0e10cSrcweir throw( RuntimeException )
215cdf0e10cSrcweir {
216cdf0e10cSrcweir osl::ClearableMutexGuard aGuard( m_aMutex );
217cdf0e10cSrcweir
218cdf0e10cSrcweir m_aListeners.push_back( listener );
219cdf0e10cSrcweir }
220cdf0e10cSrcweir
removeClipboardListener(const Reference<datatransfer::clipboard::XClipboardListener> & listener)221cdf0e10cSrcweir void GenericClipboard::removeClipboardListener( const Reference< datatransfer::clipboard::XClipboardListener >& listener )
222cdf0e10cSrcweir throw( RuntimeException )
223cdf0e10cSrcweir {
224cdf0e10cSrcweir osl::ClearableMutexGuard aGuard( m_aMutex );
225cdf0e10cSrcweir
226cdf0e10cSrcweir m_aListeners.remove( listener );
227cdf0e10cSrcweir }
228cdf0e10cSrcweir
229cdf0e10cSrcweir // ------------------------------------------------------------------------
230cdf0e10cSrcweir
231cdf0e10cSrcweir class ClipboardFactory : public ::cppu::WeakComponentImplHelper1<
232cdf0e10cSrcweir com::sun::star::lang::XSingleServiceFactory
233cdf0e10cSrcweir >
234cdf0e10cSrcweir {
235cdf0e10cSrcweir osl::Mutex m_aMutex;
236cdf0e10cSrcweir public:
237cdf0e10cSrcweir ClipboardFactory();
238cdf0e10cSrcweir virtual ~ClipboardFactory();
239cdf0e10cSrcweir
240cdf0e10cSrcweir /*
241cdf0e10cSrcweir * XSingleServiceFactory
242cdf0e10cSrcweir */
243cdf0e10cSrcweir virtual Reference< XInterface > SAL_CALL createInstance() throw();
244cdf0e10cSrcweir virtual Reference< XInterface > SAL_CALL createInstanceWithArguments( const Sequence< Any >& rArgs ) throw();
245cdf0e10cSrcweir };
246cdf0e10cSrcweir
247cdf0e10cSrcweir // ------------------------------------------------------------------------
248cdf0e10cSrcweir
ClipboardFactory()249cdf0e10cSrcweir ClipboardFactory::ClipboardFactory() :
250cdf0e10cSrcweir cppu::WeakComponentImplHelper1<
251cdf0e10cSrcweir com::sun::star::lang::XSingleServiceFactory
252cdf0e10cSrcweir >( m_aMutex )
253cdf0e10cSrcweir {
254cdf0e10cSrcweir }
255cdf0e10cSrcweir
256cdf0e10cSrcweir // ------------------------------------------------------------------------
257cdf0e10cSrcweir
~ClipboardFactory()258cdf0e10cSrcweir ClipboardFactory::~ClipboardFactory()
259cdf0e10cSrcweir {
260cdf0e10cSrcweir }
261cdf0e10cSrcweir
262cdf0e10cSrcweir // ------------------------------------------------------------------------
263cdf0e10cSrcweir
createInstance()264cdf0e10cSrcweir Reference< XInterface > ClipboardFactory::createInstance() throw()
265cdf0e10cSrcweir {
266cdf0e10cSrcweir return createInstanceWithArguments( Sequence< Any >() );
267cdf0e10cSrcweir }
268cdf0e10cSrcweir
269cdf0e10cSrcweir // ------------------------------------------------------------------------
270cdf0e10cSrcweir
createInstanceWithArguments(const Sequence<Any> & arguments)271cdf0e10cSrcweir Reference< XInterface > ClipboardFactory::createInstanceWithArguments( const Sequence< Any >& arguments ) throw()
272cdf0e10cSrcweir {
273cdf0e10cSrcweir vos::OGuard aGuard( Application::GetSolarMutex() );
274cdf0e10cSrcweir Reference< XInterface > xResult = ImplGetSVData()->mpDefInst->CreateClipboard( arguments );
275cdf0e10cSrcweir return xResult;
276cdf0e10cSrcweir }
277cdf0e10cSrcweir
278cdf0e10cSrcweir // ------------------------------------------------------------------------
279cdf0e10cSrcweir
Clipboard_getSupportedServiceNames()280cdf0e10cSrcweir Sequence< OUString > SAL_CALL Clipboard_getSupportedServiceNames()
281cdf0e10cSrcweir {
282cdf0e10cSrcweir Sequence< OUString > aRet(1);
283cdf0e10cSrcweir aRet[0] = OUString::createFromAscii("com.sun.star.datatransfer.clipboard.SystemClipboard");
284cdf0e10cSrcweir return aRet;
285cdf0e10cSrcweir }
286cdf0e10cSrcweir
Clipboard_getImplementationName()287cdf0e10cSrcweir OUString SAL_CALL Clipboard_getImplementationName()
288cdf0e10cSrcweir {
289cdf0e10cSrcweir #if defined UNX
290cdf0e10cSrcweir return OUString( RTL_CONSTASCII_USTRINGPARAM(
291cdf0e10cSrcweir #if ! defined QUARTZ
292cdf0e10cSrcweir "com.sun.star.datatransfer.X11ClipboardSupport"
293cdf0e10cSrcweir #else
294cdf0e10cSrcweir "com.sun.star.datatransfer.clipboard.AquaClipboard"
295cdf0e10cSrcweir #endif
296cdf0e10cSrcweir ) );
297cdf0e10cSrcweir #else
298cdf0e10cSrcweir return GenericClipboard::getImplementationName_static();
299cdf0e10cSrcweir #endif
300cdf0e10cSrcweir }
301cdf0e10cSrcweir
Clipboard_createFactory(const Reference<XMultiServiceFactory> &)302cdf0e10cSrcweir Reference< XSingleServiceFactory > SAL_CALL Clipboard_createFactory( const Reference< XMultiServiceFactory > & )
303cdf0e10cSrcweir {
304cdf0e10cSrcweir return Reference< XSingleServiceFactory >( new ClipboardFactory() );
305cdf0e10cSrcweir }
306cdf0e10cSrcweir
307cdf0e10cSrcweir /*
308cdf0e10cSrcweir * generic DragSource dummy
309cdf0e10cSrcweir */
310cdf0e10cSrcweir class GenericDragSource : public cppu::WeakComponentImplHelper2<
311cdf0e10cSrcweir datatransfer::dnd::XDragSource,
312cdf0e10cSrcweir XInitialization
313cdf0e10cSrcweir >
314cdf0e10cSrcweir {
315cdf0e10cSrcweir osl::Mutex m_aMutex;
316cdf0e10cSrcweir public:
GenericDragSource()317cdf0e10cSrcweir GenericDragSource() : cppu::WeakComponentImplHelper2< datatransfer::dnd::XDragSource, XInitialization >( m_aMutex ) {}
318cdf0e10cSrcweir virtual ~GenericDragSource();
319cdf0e10cSrcweir
320cdf0e10cSrcweir // XDragSource
321cdf0e10cSrcweir virtual sal_Bool SAL_CALL isDragImageSupported() throw();
322cdf0e10cSrcweir virtual sal_Int32 SAL_CALL getDefaultCursor( sal_Int8 dragAction ) throw();
323cdf0e10cSrcweir virtual void SAL_CALL startDrag(
324cdf0e10cSrcweir const datatransfer::dnd::DragGestureEvent& trigger,
325cdf0e10cSrcweir sal_Int8 sourceActions, sal_Int32 cursor, sal_Int32 image,
326cdf0e10cSrcweir const Reference< datatransfer::XTransferable >& transferable,
327cdf0e10cSrcweir const Reference< datatransfer::dnd::XDragSourceListener >& listener
328cdf0e10cSrcweir ) throw();
329cdf0e10cSrcweir
330cdf0e10cSrcweir // XInitialization
331cdf0e10cSrcweir virtual void SAL_CALL initialize( const Sequence< Any >& arguments ) throw( ::com::sun::star::uno::Exception );
332cdf0e10cSrcweir
getSupportedServiceNames_static()333cdf0e10cSrcweir static Sequence< OUString > getSupportedServiceNames_static()
334cdf0e10cSrcweir {
335cdf0e10cSrcweir Sequence< OUString > aRet( 1 );
336cdf0e10cSrcweir aRet[0] = OUString::createFromAscii( "com.sun.star.datatransfer.dnd.GenericDragSource" );
337cdf0e10cSrcweir return aRet;
338cdf0e10cSrcweir }
339cdf0e10cSrcweir
getImplementationName_static()340cdf0e10cSrcweir static OUString getImplementationName_static()
341cdf0e10cSrcweir {
342cdf0e10cSrcweir return OUString::createFromAscii( "com.sun.star.datatransfer.dnd.VclGenericDragSource" );
343cdf0e10cSrcweir }
344cdf0e10cSrcweir };
345cdf0e10cSrcweir
~GenericDragSource()346cdf0e10cSrcweir GenericDragSource::~GenericDragSource()
347cdf0e10cSrcweir {
348cdf0e10cSrcweir }
349cdf0e10cSrcweir
isDragImageSupported()350cdf0e10cSrcweir sal_Bool GenericDragSource::isDragImageSupported() throw()
351cdf0e10cSrcweir {
352cdf0e10cSrcweir return sal_False;
353cdf0e10cSrcweir }
354cdf0e10cSrcweir
getDefaultCursor(sal_Int8)355cdf0e10cSrcweir sal_Int32 GenericDragSource::getDefaultCursor( sal_Int8 ) throw()
356cdf0e10cSrcweir {
357cdf0e10cSrcweir return 0;
358cdf0e10cSrcweir }
359cdf0e10cSrcweir
startDrag(const datatransfer::dnd::DragGestureEvent &,sal_Int8,sal_Int32,sal_Int32,const Reference<datatransfer::XTransferable> &,const Reference<datatransfer::dnd::XDragSourceListener> & listener)360cdf0e10cSrcweir void GenericDragSource::startDrag( const datatransfer::dnd::DragGestureEvent&,
361cdf0e10cSrcweir sal_Int8 /*sourceActions*/, sal_Int32 /*cursor*/, sal_Int32 /*image*/,
362cdf0e10cSrcweir const Reference< datatransfer::XTransferable >&,
363cdf0e10cSrcweir const Reference< datatransfer::dnd::XDragSourceListener >& listener
364cdf0e10cSrcweir ) throw()
365cdf0e10cSrcweir {
366cdf0e10cSrcweir datatransfer::dnd::DragSourceDropEvent aEv;
367cdf0e10cSrcweir aEv.DropAction = datatransfer::dnd::DNDConstants::ACTION_COPY;
368cdf0e10cSrcweir aEv.DropSuccess = sal_False;
369cdf0e10cSrcweir listener->dragDropEnd( aEv );
370cdf0e10cSrcweir }
371cdf0e10cSrcweir
initialize(const Sequence<Any> &)372cdf0e10cSrcweir void GenericDragSource::initialize( const Sequence< Any >& ) throw( Exception )
373cdf0e10cSrcweir {
374cdf0e10cSrcweir }
375cdf0e10cSrcweir
376cdf0e10cSrcweir
DragSource_getSupportedServiceNames()377cdf0e10cSrcweir Sequence< OUString > SAL_CALL DragSource_getSupportedServiceNames()
378cdf0e10cSrcweir {
379cdf0e10cSrcweir #if defined UNX
380cdf0e10cSrcweir static OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM(
381cdf0e10cSrcweir #if ! defined QUARTZ
382cdf0e10cSrcweir "com.sun.star.datatransfer.dnd.X11DragSource"
383cdf0e10cSrcweir #else
384cdf0e10cSrcweir "com.sun.star.datatransfer.dnd.OleDragSource"
385cdf0e10cSrcweir #endif
386cdf0e10cSrcweir ) );
387cdf0e10cSrcweir static Sequence< OUString > aServiceNames( &aServiceName, 1 );
388cdf0e10cSrcweir return aServiceNames;
389cdf0e10cSrcweir #else
390cdf0e10cSrcweir return GenericDragSource::getSupportedServiceNames_static();
391cdf0e10cSrcweir #endif
392cdf0e10cSrcweir }
393cdf0e10cSrcweir
DragSource_getImplementationName()394cdf0e10cSrcweir OUString SAL_CALL DragSource_getImplementationName()
395cdf0e10cSrcweir {
396cdf0e10cSrcweir #if defined UNX
397cdf0e10cSrcweir return OUString( RTL_CONSTASCII_USTRINGPARAM(
398cdf0e10cSrcweir #if ! defined QUARTZ
399cdf0e10cSrcweir "com.sun.star.datatransfer.dnd.XdndSupport"
400cdf0e10cSrcweir #else
401cdf0e10cSrcweir "com.sun.star.comp.datatransfer.dnd.OleDragSource_V1"
402cdf0e10cSrcweir #endif
403cdf0e10cSrcweir ) );
404cdf0e10cSrcweir #else
405cdf0e10cSrcweir return GenericDragSource::getImplementationName_static();
406cdf0e10cSrcweir #endif
407cdf0e10cSrcweir }
408cdf0e10cSrcweir
DragSource_createInstance(const Reference<XMultiServiceFactory> &)409cdf0e10cSrcweir Reference< XInterface > SAL_CALL DragSource_createInstance( const Reference< XMultiServiceFactory >& )
410cdf0e10cSrcweir {
411cdf0e10cSrcweir vos::OGuard aGuard( Application::GetSolarMutex() );
412cdf0e10cSrcweir Reference< XInterface > xResult = ImplGetSVData()->mpDefInst->CreateDragSource();
413cdf0e10cSrcweir return xResult;
414cdf0e10cSrcweir }
415cdf0e10cSrcweir
416cdf0e10cSrcweir /*
417cdf0e10cSrcweir * generic DragSource dummy
418cdf0e10cSrcweir */
419cdf0e10cSrcweir
420cdf0e10cSrcweir class GenericDropTarget : public cppu::WeakComponentImplHelper2<
421cdf0e10cSrcweir datatransfer::dnd::XDropTarget,
422cdf0e10cSrcweir XInitialization
423cdf0e10cSrcweir >
424cdf0e10cSrcweir {
425cdf0e10cSrcweir osl::Mutex m_aMutex;
426cdf0e10cSrcweir public:
GenericDropTarget()427cdf0e10cSrcweir GenericDropTarget() : cppu::WeakComponentImplHelper2<
428cdf0e10cSrcweir datatransfer::dnd::XDropTarget,
429cdf0e10cSrcweir XInitialization
430cdf0e10cSrcweir > ( m_aMutex )
431cdf0e10cSrcweir {}
432cdf0e10cSrcweir virtual ~GenericDropTarget();
433cdf0e10cSrcweir
434cdf0e10cSrcweir // XInitialization
435cdf0e10cSrcweir virtual void SAL_CALL initialize( const Sequence< Any >& args ) throw ( Exception );
436cdf0e10cSrcweir
437cdf0e10cSrcweir // XDropTarget
438cdf0e10cSrcweir virtual void SAL_CALL addDropTargetListener( const Reference< ::com::sun::star::datatransfer::dnd::XDropTargetListener >& ) throw();
439cdf0e10cSrcweir virtual void SAL_CALL removeDropTargetListener( const Reference< ::com::sun::star::datatransfer::dnd::XDropTargetListener >& ) throw();
440cdf0e10cSrcweir virtual sal_Bool SAL_CALL isActive() throw();
441cdf0e10cSrcweir virtual void SAL_CALL setActive( sal_Bool active ) throw();
442cdf0e10cSrcweir virtual sal_Int8 SAL_CALL getDefaultActions() throw();
443cdf0e10cSrcweir virtual void SAL_CALL setDefaultActions( sal_Int8 actions ) throw();
444cdf0e10cSrcweir
getSupportedServiceNames_static()445cdf0e10cSrcweir static Sequence< OUString > getSupportedServiceNames_static()
446cdf0e10cSrcweir {
447cdf0e10cSrcweir Sequence< OUString > aRet( 1 );
448cdf0e10cSrcweir aRet[0] = OUString::createFromAscii( "com.sun.star.datatransfer.dnd.GenericDropTarget" );
449cdf0e10cSrcweir return aRet;
450cdf0e10cSrcweir }
451cdf0e10cSrcweir
getImplementationName_static()452cdf0e10cSrcweir static OUString getImplementationName_static()
453cdf0e10cSrcweir {
454cdf0e10cSrcweir return OUString::createFromAscii( "com.sun.star.datatransfer.dnd.VclGenericDropTarget" );
455cdf0e10cSrcweir }
456cdf0e10cSrcweir };
457cdf0e10cSrcweir
~GenericDropTarget()458cdf0e10cSrcweir GenericDropTarget::~GenericDropTarget()
459cdf0e10cSrcweir {
460cdf0e10cSrcweir }
461cdf0e10cSrcweir
initialize(const Sequence<Any> &)462cdf0e10cSrcweir void GenericDropTarget::initialize( const Sequence< Any >& ) throw( Exception )
463cdf0e10cSrcweir {
464cdf0e10cSrcweir }
465cdf0e10cSrcweir
addDropTargetListener(const Reference<::com::sun::star::datatransfer::dnd::XDropTargetListener> &)466cdf0e10cSrcweir void GenericDropTarget::addDropTargetListener( const Reference< ::com::sun::star::datatransfer::dnd::XDropTargetListener >& ) throw()
467cdf0e10cSrcweir {
468cdf0e10cSrcweir }
469cdf0e10cSrcweir
removeDropTargetListener(const Reference<::com::sun::star::datatransfer::dnd::XDropTargetListener> &)470cdf0e10cSrcweir void GenericDropTarget::removeDropTargetListener( const Reference< ::com::sun::star::datatransfer::dnd::XDropTargetListener >& ) throw()
471cdf0e10cSrcweir {
472cdf0e10cSrcweir }
473cdf0e10cSrcweir
isActive()474cdf0e10cSrcweir sal_Bool GenericDropTarget::isActive() throw()
475cdf0e10cSrcweir {
476cdf0e10cSrcweir return sal_False;
477cdf0e10cSrcweir }
478cdf0e10cSrcweir
setActive(sal_Bool)479cdf0e10cSrcweir void GenericDropTarget::setActive( sal_Bool ) throw()
480cdf0e10cSrcweir {
481cdf0e10cSrcweir }
482cdf0e10cSrcweir
getDefaultActions()483cdf0e10cSrcweir sal_Int8 GenericDropTarget::getDefaultActions() throw()
484cdf0e10cSrcweir {
485cdf0e10cSrcweir return 0;
486cdf0e10cSrcweir }
487cdf0e10cSrcweir
setDefaultActions(sal_Int8)488cdf0e10cSrcweir void GenericDropTarget::setDefaultActions( sal_Int8) throw()
489cdf0e10cSrcweir {
490cdf0e10cSrcweir }
491cdf0e10cSrcweir
DropTarget_getSupportedServiceNames()492cdf0e10cSrcweir Sequence< OUString > SAL_CALL DropTarget_getSupportedServiceNames()
493cdf0e10cSrcweir {
494cdf0e10cSrcweir #if defined UNX
495cdf0e10cSrcweir static OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM(
496cdf0e10cSrcweir #if ! defined QUARTZ
497cdf0e10cSrcweir "com.sun.star.datatransfer.dnd.X11DropTarget"
498cdf0e10cSrcweir #else
499cdf0e10cSrcweir "com.sun.star.datatransfer.dnd.OleDropTarget"
500cdf0e10cSrcweir #endif
501cdf0e10cSrcweir ) );
502cdf0e10cSrcweir static Sequence< OUString > aServiceNames( &aServiceName, 1 );
503cdf0e10cSrcweir return aServiceNames;
504cdf0e10cSrcweir #else
505cdf0e10cSrcweir return GenericDropTarget::getSupportedServiceNames_static();
506cdf0e10cSrcweir #endif
507cdf0e10cSrcweir }
508cdf0e10cSrcweir
DropTarget_getImplementationName()509cdf0e10cSrcweir OUString SAL_CALL DropTarget_getImplementationName()
510cdf0e10cSrcweir {
511cdf0e10cSrcweir #if defined UNX
512cdf0e10cSrcweir return OUString( RTL_CONSTASCII_USTRINGPARAM(
513cdf0e10cSrcweir #if ! defined QUARTZ
514cdf0e10cSrcweir "com.sun.star.datatransfer.dnd.XdndDropTarget"
515cdf0e10cSrcweir #else
516cdf0e10cSrcweir "com.sun.star.comp.datatransfer.dnd.OleDropTarget_V1"
517cdf0e10cSrcweir #endif
518cdf0e10cSrcweir ) );
519cdf0e10cSrcweir #else
520cdf0e10cSrcweir return GenericDropTarget::getImplementationName_static();
521cdf0e10cSrcweir #endif
522cdf0e10cSrcweir }
523cdf0e10cSrcweir
DropTarget_createInstance(const Reference<XMultiServiceFactory> &)524cdf0e10cSrcweir Reference< XInterface > SAL_CALL DropTarget_createInstance( const Reference< XMultiServiceFactory >& )
525cdf0e10cSrcweir {
526cdf0e10cSrcweir vos::OGuard aGuard( Application::GetSolarMutex() );
527cdf0e10cSrcweir Reference< XInterface > xResult = ImplGetSVData()->mpDefInst->CreateDropTarget();
528cdf0e10cSrcweir return xResult;
529cdf0e10cSrcweir }
530cdf0e10cSrcweir
531cdf0e10cSrcweir
532cdf0e10cSrcweir } // namespace vcl
533cdf0e10cSrcweir
534cdf0e10cSrcweir /*
535cdf0e10cSrcweir * SalInstance generic
536cdf0e10cSrcweir */
CreateClipboard(const Sequence<Any> &)537cdf0e10cSrcweir Reference< XInterface > SalInstance::CreateClipboard( const Sequence< Any >& )
538cdf0e10cSrcweir {
539cdf0e10cSrcweir return Reference< XInterface >( ( cppu::OWeakObject * )new vcl::GenericClipboard() );
540cdf0e10cSrcweir }
541cdf0e10cSrcweir
CreateDragSource()542cdf0e10cSrcweir Reference< XInterface > SalInstance::CreateDragSource()
543cdf0e10cSrcweir {
544cdf0e10cSrcweir return Reference< XInterface >( ( cppu::OWeakObject * )new vcl::GenericDragSource() );
545cdf0e10cSrcweir }
546cdf0e10cSrcweir
CreateDropTarget()547cdf0e10cSrcweir Reference< XInterface > SalInstance::CreateDropTarget()
548cdf0e10cSrcweir {
549cdf0e10cSrcweir return Reference< XInterface >( ( cppu::OWeakObject * )new vcl::GenericDropTarget() );
550cdf0e10cSrcweir }
551cdf0e10cSrcweir
552