
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __java_awt_dnd_DragSource__
#define __java_awt_dnd_DragSource__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Component;
        class Cursor;
        class Image;
        class Point;
      namespace datatransfer
      {
          class FlavorMap;
          class Transferable;
      }
      namespace dnd
      {
          class DragGestureEvent;
          class DragGestureListener;
          class DragGestureRecognizer;
          class DragSource;
          class DragSourceContext;
          class DragSourceListener;
          class DragSourceMotionListener;
        namespace peer
        {
            class DragSourceContextPeer;
        }
      }
    }
  }
}

class java::awt::dnd::DragSource : public ::java::lang::Object
{

public:
  DragSource();
  static ::java::awt::dnd::DragSource * getDefaultDragSource();
  static jboolean isDragImageSupported();
  virtual void startDrag(::java::awt::dnd::DragGestureEvent *, ::java::awt::Cursor *, ::java::awt::Image *, ::java::awt::Point *, ::java::awt::datatransfer::Transferable *, ::java::awt::dnd::DragSourceListener *, ::java::awt::datatransfer::FlavorMap *);
  virtual void startDrag(::java::awt::dnd::DragGestureEvent *, ::java::awt::Cursor *, ::java::awt::datatransfer::Transferable *, ::java::awt::dnd::DragSourceListener *, ::java::awt::datatransfer::FlavorMap *);
  virtual void startDrag(::java::awt::dnd::DragGestureEvent *, ::java::awt::Cursor *, ::java::awt::Image *, ::java::awt::Point *, ::java::awt::datatransfer::Transferable *, ::java::awt::dnd::DragSourceListener *);
  virtual void startDrag(::java::awt::dnd::DragGestureEvent *, ::java::awt::Cursor *, ::java::awt::datatransfer::Transferable *, ::java::awt::dnd::DragSourceListener *);
public: // actually protected
  virtual ::java::awt::dnd::DragSourceContext * createDragSourceContext(::java::awt::dnd::peer::DragSourceContextPeer *, ::java::awt::dnd::DragGestureEvent *, ::java::awt::Cursor *, ::java::awt::Image *, ::java::awt::Point *, ::java::awt::datatransfer::Transferable *, ::java::awt::dnd::DragSourceListener *);
public:
  virtual ::java::awt::datatransfer::FlavorMap * getFlavorMap();
  virtual ::java::awt::dnd::DragGestureRecognizer * createDragGestureRecognizer(::java::lang::Class *, ::java::awt::Component *, jint, ::java::awt::dnd::DragGestureListener *);
  virtual ::java::awt::dnd::DragGestureRecognizer * createDefaultDragGestureRecognizer(::java::awt::Component *, jint, ::java::awt::dnd::DragGestureListener *);
  virtual void addDragSourceListener(::java::awt::dnd::DragSourceListener *);
  virtual void removeDragSourceListener(::java::awt::dnd::DragSourceListener *);
  virtual JArray< ::java::awt::dnd::DragSourceListener * > * getDragSourceListeners();
  virtual void addDragSourceMotionListener(::java::awt::dnd::DragSourceMotionListener *);
  virtual void removeDragSourceMotionListener(::java::awt::dnd::DragSourceMotionListener *);
  virtual JArray< ::java::awt::dnd::DragSourceMotionListener * > * getDragSourceMotionListeners();
  virtual JArray< ::java::util::EventListener * > * getListeners(::java::lang::Class *);
  static jint getDragThreshold();
private:
  static const jlong serialVersionUID = 6236096958971414066LL;
public:
  static ::java::awt::Cursor * DefaultCopyDrop;
  static ::java::awt::Cursor * DefaultMoveDrop;
  static ::java::awt::Cursor * DefaultLinkDrop;
  static ::java::awt::Cursor * DefaultCopyNoDrop;
  static ::java::awt::Cursor * DefaultMoveNoDrop;
  static ::java::awt::Cursor * DefaultLinkNoDrop;
private:
  ::java::awt::datatransfer::FlavorMap * __attribute__((aligned(__alignof__( ::java::lang::Object)))) flavorMap;
  ::java::awt::dnd::DragSourceListener * dragSourceListener;
  ::java::awt::dnd::DragSourceMotionListener * dragSourceMotionListener;
  static ::java::awt::dnd::DragSource * ds;
  ::java::awt::dnd::peer::DragSourceContextPeer * peer;
  ::java::awt::dnd::DragSourceContext * context;
public:
  static ::java::lang::Class class$;
};

#endif // __java_awt_dnd_DragSource__
