src/share/classes/sun/awt/dnd/SunDragSourceContextPeer.java

Print this page




  35 import java.awt.datatransfer.Transferable;
  36 
  37 import java.awt.dnd.DnDConstants;
  38 import java.awt.dnd.DragSourceContext;
  39 import java.awt.dnd.DragSourceEvent;
  40 import java.awt.dnd.DragSourceDropEvent;
  41 import java.awt.dnd.DragSourceDragEvent;
  42 import java.awt.dnd.DragGestureEvent;
  43 import java.awt.dnd.InvalidDnDOperationException;
  44 
  45 import java.awt.dnd.peer.DragSourceContextPeer;
  46 
  47 import java.awt.event.InputEvent;
  48 import java.awt.event.MouseEvent;
  49 
  50 import java.util.Map;
  51 import java.util.SortedMap;
  52 
  53 import sun.awt.SunToolkit;
  54 import sun.awt.datatransfer.DataTransferer;

  55 
  56 /**
  57  * <p>
  58  * TBC
  59  * </p>
  60  *
  61  * @since JDK1.3.1
  62  *
  63  */
  64 
  65 public abstract class SunDragSourceContextPeer implements DragSourceContextPeer {
  66 
  67     private DragGestureEvent  trigger;
  68     private Component         component;
  69     private Cursor            cursor;
  70     private Image             dragImage;
  71     private Point             dragImageOffset;
  72     private long              nativeCtxt;
  73     private DragSourceContext dragSourceContext;
  74     private int               sourceActions;


 109     /**
 110      * initiate a DnD operation ...
 111      */
 112 
 113     public void startDrag(DragSourceContext dsc, Cursor c, Image di, Point p)
 114       throws InvalidDnDOperationException {
 115 
 116         /* Fix for 4354044: don't initiate a drag if event sequence provided by
 117          * DragGestureRecognizer is empty */
 118         if (getTrigger().getTriggerEvent() == null) {
 119             throw new InvalidDnDOperationException("DragGestureEvent has a null trigger");
 120         }
 121 
 122         dragSourceContext = dsc;
 123         cursor            = c;
 124         sourceActions     = getDragSourceContext().getSourceActions();
 125         dragImage         = di;
 126         dragImageOffset   = p;
 127 
 128         Transferable transferable  = getDragSourceContext().getTransferable();
 129         SortedMap formatMap = DataTransferer.getInstance().getFormatsForTransferable
 130              (transferable, DataTransferer.adaptFlavorMap
 131                  (getTrigger().getDragSource().getFlavorMap()));
 132         long[] formats = DataTransferer.getInstance().
 133             keysToLongArray(formatMap);
 134         startDrag(transferable, formats, formatMap);
 135 
 136         /*
 137          * Fix for 4613903.
 138          * Filter out all mouse events that are currently on the event queue.
 139          */
 140         discardingMouseEvents = true;
 141         EventQueue.invokeLater(new Runnable() {
 142                 public void run() {
 143                     discardingMouseEvents = false;
 144                 }
 145             });
 146     }
 147 
 148     protected abstract void startDrag(Transferable trans,
 149                                       long[] formats, Map formatMap);
 150 




  35 import java.awt.datatransfer.Transferable;
  36 
  37 import java.awt.dnd.DnDConstants;
  38 import java.awt.dnd.DragSourceContext;
  39 import java.awt.dnd.DragSourceEvent;
  40 import java.awt.dnd.DragSourceDropEvent;
  41 import java.awt.dnd.DragSourceDragEvent;
  42 import java.awt.dnd.DragGestureEvent;
  43 import java.awt.dnd.InvalidDnDOperationException;
  44 
  45 import java.awt.dnd.peer.DragSourceContextPeer;
  46 
  47 import java.awt.event.InputEvent;
  48 import java.awt.event.MouseEvent;
  49 
  50 import java.util.Map;
  51 import java.util.SortedMap;
  52 
  53 import sun.awt.SunToolkit;
  54 import sun.awt.datatransfer.DataTransferer;
  55 import java.awt.datatransfer.DataFlavor;
  56 
  57 /**
  58  * <p>
  59  * TBC
  60  * </p>
  61  *
  62  * @since JDK1.3.1
  63  *
  64  */
  65 
  66 public abstract class SunDragSourceContextPeer implements DragSourceContextPeer {
  67 
  68     private DragGestureEvent  trigger;
  69     private Component         component;
  70     private Cursor            cursor;
  71     private Image             dragImage;
  72     private Point             dragImageOffset;
  73     private long              nativeCtxt;
  74     private DragSourceContext dragSourceContext;
  75     private int               sourceActions;


 110     /**
 111      * initiate a DnD operation ...
 112      */
 113 
 114     public void startDrag(DragSourceContext dsc, Cursor c, Image di, Point p)
 115       throws InvalidDnDOperationException {
 116 
 117         /* Fix for 4354044: don't initiate a drag if event sequence provided by
 118          * DragGestureRecognizer is empty */
 119         if (getTrigger().getTriggerEvent() == null) {
 120             throw new InvalidDnDOperationException("DragGestureEvent has a null trigger");
 121         }
 122 
 123         dragSourceContext = dsc;
 124         cursor            = c;
 125         sourceActions     = getDragSourceContext().getSourceActions();
 126         dragImage         = di;
 127         dragImageOffset   = p;
 128 
 129         Transferable transferable  = getDragSourceContext().getTransferable();
 130         SortedMap<Long,DataFlavor> formatMap = DataTransferer.getInstance().
 131             getFormatsForTransferable(transferable, DataTransferer.adaptFlavorMap
 132                 (getTrigger().getDragSource().getFlavorMap()));
 133         long[] formats = DataTransferer.getInstance().
 134             keysToLongArray(formatMap);
 135         startDrag(transferable, formats, formatMap);
 136 
 137         /*
 138          * Fix for 4613903.
 139          * Filter out all mouse events that are currently on the event queue.
 140          */
 141         discardingMouseEvents = true;
 142         EventQueue.invokeLater(new Runnable() {
 143                 public void run() {
 144                     discardingMouseEvents = false;
 145                 }
 146             });
 147     }
 148 
 149     protected abstract void startDrag(Transferable trans,
 150                                       long[] formats, Map formatMap);
 151