51 + (void)javaDraggingEnd;
52
53 @end
54
55
56 @implementation NSEvent(AWTAdditions)
57
58
59 + (void)javaDraggingBegin
60 {
61 sIsJavaDragging = YES;
62 }
63
64 + (void)javaDraggingEnd
65 {
66 // sIsJavaDragging is reset on mouseDown as well.
67 sIsJavaDragging = NO;
68 }
69 @end
70
71 JNF_CLASS_CACHE(DataTransfererClass, "sun/awt/datatransfer/DataTransferer");
72 JNF_CLASS_CACHE(CDragSourceContextPeerClass, "sun/lwawt/macosx/CDragSourceContextPeer");
73 JNF_CLASS_CACHE(CImageClass, "sun/lwawt/macosx/CImage");
74
75 static NSDragOperation sDragOperation;
76 static NSPoint sDraggingLocation;
77
78 static BOOL sNeedsEnter;
79
80 @interface CDragSource ()
81 // Updates from the destination to the source
82 - (void) postDragEnter;
83 - (void) postDragExit;
84 // Utility
85 - (NSPoint) mapNSScreenPointToJavaWithOffset:(NSPoint) point;
86 @end
87
88 @implementation CDragSource
89
90 - (id) init:(jobject)jDragSourceContextPeer
91 component:(jobject)jComponent
194 - (void)dealloc
195 {
196 DLog2(@"[CDragSource dealloc]: %@\n", self);
197
198 // Delete or release local data:
199 [fView release];
200 fView = nil;
201
202 [fDragImage release];
203 fDragImage = nil;
204
205 [super dealloc];
206 }
207
208 // Appropriated from Windows' awt_DataTransferer.cpp:
209 //
210 // * NOTE: This returns a JNI Local Ref. Any code that calls must call DeleteLocalRef with the return value.
211 //
212 - (jobject)dataTransferer:(JNIEnv*)env
213 {
214 JNF_STATIC_MEMBER_CACHE(getInstanceMethod, DataTransfererClass, "getInstance", "()Lsun/awt/datatransfer/DataTransferer;");
215 return JNFCallStaticObjectMethod(env, getInstanceMethod);
216 }
217
218 // Appropriated from Windows' awt_DataTransferer.cpp:
219 //
220 // * NOTE: This returns a JNI Local Ref. Any code that calls must call DeleteLocalRef with the return value.
221 //
222 - (jbyteArray)convertData:(jlong)format
223 {
224 JNIEnv* env = [ThreadUtilities getJNIEnv];
225 jobject transferer = [self dataTransferer:env];
226 jbyteArray data = nil;
227
228 if (transferer != NULL) {
229 JNF_MEMBER_CACHE(convertDataMethod, DataTransfererClass, "convertData", "(Ljava/lang/Object;Ljava/awt/datatransfer/Transferable;JLjava/util/Map;Z)[B");
230 data = JNFCallObjectMethod(env, transferer, convertDataMethod, fComponent, fTransferable, format, fFormatMap, (jboolean) TRUE);
231 }
232
233 return data;
234 }
|
51 + (void)javaDraggingEnd;
52
53 @end
54
55
56 @implementation NSEvent(AWTAdditions)
57
58
59 + (void)javaDraggingBegin
60 {
61 sIsJavaDragging = YES;
62 }
63
64 + (void)javaDraggingEnd
65 {
66 // sIsJavaDragging is reset on mouseDown as well.
67 sIsJavaDragging = NO;
68 }
69 @end
70
71 JNF_CLASS_CACHE(DataTransfererClass, "sun/awt/datatransfer/desktop/DataTransferer");
72 JNF_CLASS_CACHE(CDragSourceContextPeerClass, "sun/lwawt/macosx/CDragSourceContextPeer");
73 JNF_CLASS_CACHE(CImageClass, "sun/lwawt/macosx/CImage");
74
75 static NSDragOperation sDragOperation;
76 static NSPoint sDraggingLocation;
77
78 static BOOL sNeedsEnter;
79
80 @interface CDragSource ()
81 // Updates from the destination to the source
82 - (void) postDragEnter;
83 - (void) postDragExit;
84 // Utility
85 - (NSPoint) mapNSScreenPointToJavaWithOffset:(NSPoint) point;
86 @end
87
88 @implementation CDragSource
89
90 - (id) init:(jobject)jDragSourceContextPeer
91 component:(jobject)jComponent
194 - (void)dealloc
195 {
196 DLog2(@"[CDragSource dealloc]: %@\n", self);
197
198 // Delete or release local data:
199 [fView release];
200 fView = nil;
201
202 [fDragImage release];
203 fDragImage = nil;
204
205 [super dealloc];
206 }
207
208 // Appropriated from Windows' awt_DataTransferer.cpp:
209 //
210 // * NOTE: This returns a JNI Local Ref. Any code that calls must call DeleteLocalRef with the return value.
211 //
212 - (jobject)dataTransferer:(JNIEnv*)env
213 {
214 JNF_STATIC_MEMBER_CACHE(getInstanceMethod, DataTransfererClass, "getInstance", "()Lsun/awt/datatransfer/desktop/DataTransferer;");
215 return JNFCallStaticObjectMethod(env, getInstanceMethod);
216 }
217
218 // Appropriated from Windows' awt_DataTransferer.cpp:
219 //
220 // * NOTE: This returns a JNI Local Ref. Any code that calls must call DeleteLocalRef with the return value.
221 //
222 - (jbyteArray)convertData:(jlong)format
223 {
224 JNIEnv* env = [ThreadUtilities getJNIEnv];
225 jobject transferer = [self dataTransferer:env];
226 jbyteArray data = nil;
227
228 if (transferer != NULL) {
229 JNF_MEMBER_CACHE(convertDataMethod, DataTransfererClass, "convertData", "(Ljava/lang/Object;Ljava/awt/datatransfer/Transferable;JLjava/util/Map;Z)[B");
230 data = JNFCallObjectMethod(env, transferer, convertDataMethod, fComponent, fTransferable, format, fFormatMap, (jboolean) TRUE);
231 }
232
233 return data;
234 }
|