1 /*
   2  * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 #ifndef CDragSource_h
  27 #define CDragSource_h
  28 
  29 #import <Cocoa/Cocoa.h>
  30 #include <jni.h>
  31 
  32 @class CDragSource;
  33 
  34 @protocol CDragSourceHolder
  35 - (void) setDragSource:(CDragSource *)source;
  36 @end
  37 
  38 @interface CDragSource : NSObject {
  39 @private
  40     NSView<CDragSourceHolder>* fView;
  41     jobject            fComponent;
  42     jobject            fDragSourceContextPeer;
  43 
  44     jobject            fTransferable;
  45     jobject            fTriggerEvent;
  46     jlong            fTriggerEventTimeStamp;
  47     NSPoint            fDragPos;
  48     jint                fClickCount;
  49     jint                fModifiers;
  50 
  51     NSImage*        fDragImage;
  52     NSPoint            fDragImageOffset;
  53 
  54     jint                fSourceActions;
  55     jlongArray        fFormats;
  56     jobject            fFormatMap;
  57 
  58     jint                     fDragKeyModifiers;
  59     jint                     fDragMouseModifiers;
  60 }
  61 
  62 // Common methods:
  63 - (id)        init:(jobject)jDragSourceContextPeer
  64          component:(jobject)jComponent
  65            control:(id)control
  66       transferable:(jobject)jTransferable
  67       triggerEvent:(jobject)jTrigger
  68           dragPosX:(jint)dragPosX
  69           dragPosY:(jint)dragPosY
  70          modifiers:(jint)extModifiers
  71         clickCount:(jint)clickCount
  72          timeStamp:(jlong)timeStamp
  73          dragImage:(jlong)nsDragImagePtr
  74   dragImageOffsetX:(jint)jDragImageOffsetX
  75   dragImageOffsetY:(jint)jDragImageOffsetY
  76      sourceActions:(jint)jSourceActions
  77            formats:(jlongArray)jFormats
  78          formatMap:(jobject)jFormatMap;
  79 
  80 - (void)removeFromView:(JNIEnv *)env;
  81 
  82 - (void)drag;
  83 
  84 // dnd APIs (see AppKit/NSDragging.h, NSDraggingSource):
  85 - (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)flag;
  86 - (void)draggedImage:(NSImage *)image beganAt:(NSPoint)screenPoint;
  87 - (void)draggedImage:(NSImage *)image endedAt:(NSPoint)screenPoint operation:(NSDragOperation)operation;
  88 - (void)draggedImage:(NSImage *)image movedTo:(NSPoint)screenPoint;
  89 - (BOOL)ignoreModifierKeysWhileDragging;
  90 
  91 @end
  92 
  93 #endif // CDragSource_h