Source for java.awt.dnd.DragSourceContext

   1: /* DragSourceContext.java --
   2:    Copyright (C) 2002 Free Software Foundation
   3: 
   4: This file is part of GNU Classpath.
   5: 
   6: GNU Classpath is free software; you can redistribute it and/or modify
   7: it under the terms of the GNU General Public License as published by
   8: the Free Software Foundation; either version 2, or (at your option)
   9: any later version.
  10: 
  11: GNU Classpath is distributed in the hope that it will be useful, but
  12: WITHOUT ANY WARRANTY; without even the implied warranty of
  13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14: General Public License for more details.
  15: 
  16: You should have received a copy of the GNU General Public License
  17: along with GNU Classpath; see the file COPYING.  If not, write to the
  18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  19: 02110-1301 USA.
  20: 
  21: Linking this library statically or dynamically with other modules is
  22: making a combined work based on this library.  Thus, the terms and
  23: conditions of the GNU General Public License cover the whole
  24: combination.
  25: 
  26: As a special exception, the copyright holders of this library give you
  27: permission to link this library with independent modules to produce an
  28: executable, regardless of the license terms of these independent
  29: modules, and to copy and distribute the resulting executable under
  30: terms of your choice, provided that you also meet, for each linked
  31: independent module, the terms and conditions of the license of that
  32: module.  An independent module is a module which is not derived from
  33: or based on this library.  If you modify this library, you may extend
  34: this exception to your version of the library, but you are not
  35: obligated to do so.  If you do not wish to do so, delete this
  36: exception statement from your version. */
  37: 
  38: 
  39: package java.awt.dnd;
  40: 
  41: import java.awt.Component;
  42: import java.awt.Cursor;
  43: import java.awt.Image;
  44: import java.awt.Point;
  45: import java.awt.datatransfer.Transferable;
  46: import java.awt.dnd.peer.DragSourceContextPeer;
  47: import java.io.Serializable;
  48: import java.util.TooManyListenersException;
  49: 
  50: /**
  51:  * @since 1.2
  52:  */
  53: public class DragSourceContext
  54:   implements DragSourceListener, DragSourceMotionListener, Serializable
  55: {
  56:   /**
  57:    * Compatible with JDK 1.2+
  58:    */
  59:   static final long serialVersionUID = -115407898692194719L;
  60: 
  61:   protected static final int DEFAULT = 0;
  62:   protected static final int ENTER = 1;
  63:   protected static final int OVER = 2;
  64:   protected static final int CHANGED = 3;
  65: 
  66:   private DragSourceContextPeer peer;
  67:   private Cursor cursor;
  68:   private Transferable transferable;
  69:   private DragGestureEvent trigger;
  70:   private DragSourceListener dragSourceListener;
  71:   private boolean useCustomCursor; // FIXME: currently unused but needed for serialization.
  72:   private int sourceActions; // FIXME: currently unused but needed for serialization.
  73:   private Image image;
  74:   private Point offset;
  75:   
  76:   /**
  77:    * Initializes a drag source context.
  78:    *
  79:    * @exception IllegalArgumentException If Component or DragSource of trigger
  80:    * are null, the drag action for the trigger event is DnDConstants.ACTION_NONE
  81:    * or if the source actions for the DragGestureRecognizer associated with the
  82:    * trigger event are equal to DnDConstants.ACTION_NONE.
  83:    * @exception NullPointerException If peer or trigger is null.
  84:    */
  85:   public DragSourceContext (DragSourceContextPeer peer,
  86:                             DragGestureEvent trigger, Cursor cursor,
  87:                             Image image, Point offset, Transferable trans,
  88:                             DragSourceListener dsl)
  89:   {
  90:     if (peer == null
  91:         || trigger == null)
  92:       throw new NullPointerException ();
  93: 
  94:     if (trigger.getComponent () == null
  95:         || trigger.getDragSource () == null
  96:         || trigger.getDragAction () == DnDConstants.ACTION_NONE
  97:         || trigger.getSourceAsDragGestureRecognizer ()
  98:               .getSourceActions () == DnDConstants.ACTION_NONE)
  99:       throw new IllegalArgumentException ();
 100: 
 101:     this.peer = peer;
 102:     this.trigger = trigger;
 103:     this.cursor = cursor;
 104:     this.image = image;
 105:     this.offset = offset;
 106:     this.transferable = trans;
 107:     this.dragSourceListener = dsl;
 108:     
 109:     throw new Error ("not implemented");
 110:   }
 111: 
 112:   public DragSource getDragSource()
 113:   {
 114:     return trigger.getDragSource ();
 115:   }
 116: 
 117:   public Component getComponent()
 118:   {
 119:     return trigger.getComponent ();
 120:   }
 121: 
 122:   public DragGestureEvent getTrigger()
 123:   {
 124:     return trigger;
 125:   }
 126: 
 127:   public int getSourceActions()
 128:   {
 129:     return trigger.getSourceAsDragGestureRecognizer ().getSourceActions ();
 130:   }
 131: 
 132:   public void setCursor (Cursor cursor)
 133:   {
 134:     this.cursor = cursor;
 135:     // FIXME: Check if we need to do more here
 136:   }
 137: 
 138:   public Cursor getCursor()
 139:   {
 140:     return cursor;
 141:   }
 142: 
 143:   /**
 144:    * Adds a <code>DragSourceListener</code>.
 145:    *
 146:    * @exception TooManyListenersException If a <code>DragSourceListener</code>
 147:    * has already been added.
 148:    */
 149:   public void addDragSourceListener (DragSourceListener dsl)
 150:     throws TooManyListenersException
 151:   {
 152:     if (dragSourceListener != null)
 153:       throw new TooManyListenersException ();
 154: 
 155:     dragSourceListener = dsl;
 156:   }
 157: 
 158:   public void removeDragSourceListener (DragSourceListener dsl)
 159:   {
 160:     if (dragSourceListener == dsl)
 161:       dragSourceListener = null;
 162:   }
 163: 
 164:   public void transferablesFlavorsChanged()
 165:   {
 166:   }
 167: 
 168:   public void dragEnter(DragSourceDragEvent e)
 169:   {
 170:   }
 171: 
 172:   public void dragOver(DragSourceDragEvent e)
 173:   {
 174:   }
 175: 
 176:   public void dragExit(DragSourceEvent e)
 177:   {
 178:   }
 179: 
 180:   public void dropActionChanged(DragSourceDragEvent e)
 181:   {
 182:   }
 183: 
 184:   public void dragDropEnd(DragSourceDropEvent e)
 185:   {
 186:   }
 187: 
 188:   public void dragMouseMoved(DragSourceDragEvent e)
 189:   {
 190:   }
 191: 
 192:   public Transferable getTransferable()
 193:   {
 194:     return transferable;
 195:   }
 196: 
 197:   protected void updateCurrentCursor(int dropOp, int targetAct, int status)
 198:   {
 199:   }
 200: } // class DragSourceContext