Overview Package Class Use Source Tree Index Deprecated About
GNU Classpath (0.95)
Frames | No Frames

Source for java.awt.dnd.DragSource

 1:  /* DragSource.java --
 2:  Copyright (C) 2002 Free Software Foundation, Inc.
 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 gnu.classpath.NotImplementedException;
 42: 
 43:  import java.awt.Component;
 44:  import java.awt.Cursor;
 45:  import java.awt.GraphicsEnvironment;
 46:  import java.awt.HeadlessException;
 47:  import java.awt.Image;
 48:  import java.awt.Point;
 49:  import java.awt.Toolkit;
 50:  import java.awt.datatransfer.FlavorMap;
 51:  import java.awt.datatransfer.SystemFlavorMap;
 52:  import java.awt.datatransfer.Transferable;
 53:  import java.awt.dnd.peer.DragSourceContextPeer;
 54:  import java.io.Serializable;
 55:  import java.util.EventListener;
 56: 
 57:  /**
 58:  * @since 1.2
 59:  */
 60:  public class DragSource implements Serializable
 61: {
 62:  /**
 63:  * Compatible with JDK 1.2+.
 64:  */
 65:  private static final long serialVersionUID = 6236096958971414066L;
 66: 
 67:  public static final Cursor DefaultCopyDrop = null;
 68:  public static final Cursor DefaultMoveDrop = null;
 69:  public static final Cursor DefaultLinkDrop = null;
 70:  public static final Cursor DefaultCopyNoDrop = null;
 71:  public static final Cursor DefaultMoveNoDrop = null;
 72:  public static final Cursor DefaultLinkNoDrop = null;
 73: 
 74:  private transient FlavorMap flavorMap = SystemFlavorMap.getDefaultFlavorMap ();
 75:  private transient DragSourceListener dragSourceListener;
 76:  private transient DragSourceMotionListener dragSourceMotionListener;
 77:  
 78:  private static DragSource ds;
 79:  private DragSourceContextPeer peer;
 80:  private DragSourceContext context;
 81: 
 82:  /**
 83:  * Initializes the drag source.
 84:  *
 85:  * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
 86:  */
 87:  public DragSource()
 88:  {
 89:  if (GraphicsEnvironment.isHeadless())
 90:  {
 91:  ds = null;
 92:  throw new HeadlessException();
 93:  }
 94:  }
 95: 
 96:  /**
 97:  * Gets the default drag source.
 98:  * 
 99:  * @exception HeadlessException If GraphicsEnvironment.isHeadless() is true.
 100:  */
 101:  public static DragSource getDefaultDragSource()
 102:  {
 103:  if (GraphicsEnvironment.isHeadless())
 104:  {
 105:  ds = null;
 106:  throw new HeadlessException();
 107:  }
 108: 
 109:  if (ds == null)
 110:  ds = new DragSource();
 111:  return ds;
 112:  }
 113: 
 114:  public static boolean isDragImageSupported()
 115:  {
 116:  // In all cases, Sun returns false here.
 117:  return false;
 118:  }
 119: 
 120:  /**
 121:  * Start a drag, given the DragGestureEvent that initiated the drag.
 122:  *
 123:  * @exception InvalidDnDOperationException If the Drag and Drop system is
 124:  * unable to initiate a drag operation, or if the user attempts to start
 125:  * a drag while an existing drag operation is still executing.
 126:  */
 127:  public void startDrag(DragGestureEvent trigger, Cursor dragCursor,
 128:  Image dragImage, Point imageOffset,
 129:  Transferable trans, DragSourceListener dsl,
 130:  FlavorMap map)
 131:  {
 132:  // http://www.javaworld.com/javaworld/jw-03-1999/jw-03-dragndrop.html
 133: 
 134:  // This function creates a DragSourceContext object. This object tracks the
 135:  // state of the operation by listening to a native peer. In this situation,
 136:  // the DragSource may be obtained from the event or by an instance variable.
 137:  // This function also creates a new DragSourceContextPeer.
 138: 
 139:  // This function sends the same message to the context, which then forwards
 140:  // it to the peer, passing itself as a parameter. Now, the native system has
 141:  // access to the Transferable through the context.
 142:  
 143:  try
 144:  {
 145:  flavorMap = map;
 146:  
 147:  if (peer == null)
 148:  peer = Toolkit.getDefaultToolkit().createDragSourceContextPeer(trigger);
 149:  
 150:  if (context == null)
 151:  context = createDragSourceContext(peer, trigger,
 152:  dragCursor,
 153:  dragImage,
 154:  imageOffset, trans,
 155:  dsl);
 156: 
 157:  if (peer == null)
 158:  throw new InvalidDnDOperationException();
 159: 
 160:  peer.startDrag(context, dragCursor, dragImage, imageOffset);
 161:  }
 162:  catch (Exception e)
 163:  {
 164:  throw new InvalidDnDOperationException("Drag and Drop system is "
 165:  + "unable to initiate a drag operation.");
 166:  }
 167:  }
 168: 
 169:  /**
 170:  * Start a drag, given the DragGestureEvent that initiated the drag.
 171:  *
 172:  * @exception InvalidDnDOperationException If the Drag and Drop system is
 173:  * unable to initiate a drag operation, or if the user attempts to start
 174:  * a drag while an existing drag operation is still executing.
 175:  */
 176:  public void startDrag(DragGestureEvent trigger, Cursor dragCursor,
 177:  Transferable trans, DragSourceListener dsl,
 178:  FlavorMap map)
 179:  {
 180:  startDrag(trigger, dragCursor, null, null, trans, dsl, map);
 181:  }
 182: 
 183:  /**
 184:  * Start a drag, given the DragGestureEvent that initiated the drag.
 185:  *
 186:  * @exception InvalidDnDOperationException If the Drag and Drop system is
 187:  * unable to initiate a drag operation, or if the user attempts to start
 188:  * a drag while an existing drag operation is still executing.
 189:  */
 190:  public void startDrag(DragGestureEvent trigger, Cursor dragCursor,
 191:  Image dragImage, Point imageOffset,
 192:  Transferable trans, DragSourceListener dsl)
 193:  {
 194:  startDrag(trigger, dragCursor, dragImage, imageOffset, trans, dsl, null);
 195:  }
 196: 
 197:  /**
 198:  * Start a drag, given the DragGestureEvent that initiated the drag.
 199:  *
 200:  * @exception InvalidDnDOperationException If the Drag and Drop system is
 201:  * unable to initiate a drag operation, or if the user attempts to start
 202:  * a drag while an existing drag operation is still executing.
 203:  */
 204:  public void startDrag(DragGestureEvent trigger, Cursor dragCursor,
 205:  Transferable trans, DragSourceListener dsl)
 206:  {
 207:  startDrag(trigger, dragCursor, null, null, trans, dsl, null);
 208:  }
 209: 
 210:  /**
 211:  * Creates the DragSourceContext to handle this drag.
 212:  *
 213:  * @exception IllegalArgumentException 
 214:  * @exception NullPointerException If dscp, dgl, dragImage or t is null.
 215:  */
 216:  protected DragSourceContext
 217:  createDragSourceContext(DragSourceContextPeer peer, DragGestureEvent dge,
 218:  Cursor cursor, Image image, Point offset,
 219:  Transferable t, DragSourceListener dsl)
 220:  {
 221:  return new DragSourceContext(peer, dge, cursor, image, offset, t, dsl);
 222:  }
 223: 
 224:  public FlavorMap getFlavorMap()
 225:  {
 226:  return flavorMap;
 227:  }
 228:  
 229:  public <T extends DragGestureRecognizer> T
 230:  createDragGestureRecognizer(Class<T> recognizer,
 231:  Component c,
 232:  int actions,
 233:  DragGestureListener dgl)
 234:  {
 235:  return (T) Toolkit.getDefaultToolkit().createDragGestureRecognizer(recognizer,
 236:  this, c,
 237:  actions, dgl);
 238:  }
 239: 
 240:  public DragGestureRecognizer createDefaultDragGestureRecognizer(Component c,
 241:  int actions,
 242:  DragGestureListener dgl)
 243:  {
 244:  return createDragGestureRecognizer(MouseDragGestureRecognizer.class, c,
 245:  actions, dgl);
 246:  }
 247: 
 248:  /**
 249:  * @since 1.4
 250:  */
 251:  public void addDragSourceListener(DragSourceListener l)
 252:  {
 253:  DnDEventMulticaster.add (dragSourceListener, l);
 254:  }
 255: 
 256:  /**
 257:  * @since 1.4
 258:  */
 259:  public void removeDragSourceListener(DragSourceListener l)
 260:  {
 261:  DnDEventMulticaster.remove (dragSourceListener, l);
 262:  }
 263: 
 264:  /**
 265:  * @since 1.4
 266:  */
 267:  public DragSourceListener[] getDragSourceListeners()
 268:  {
 269:  return (DragSourceListener[]) getListeners (DragSourceListener.class);
 270:  }
 271: 
 272:  /**
 273:  * @since 1.4
 274:  */
 275:  public void addDragSourceMotionListener(DragSourceMotionListener l)
 276:  {
 277:  DnDEventMulticaster.add (dragSourceMotionListener, l);
 278:  }
 279: 
 280:  /**
 281:  * @since 1.4
 282:  */
 283:  public void removeDragSourceMotionListener(DragSourceMotionListener l)
 284:  {
 285:  DnDEventMulticaster.remove (dragSourceMotionListener, l);
 286:  }
 287: 
 288:  /**
 289:  * @since 1.4
 290:  */
 291:  public DragSourceMotionListener[] getDragSourceMotionListeners ()
 292:  {
 293:  return (DragSourceMotionListener[]) getListeners
 294:  (DragSourceMotionListener.class);
 295:  }
 296: 
 297:  /**
 298:  * @since 1.4
 299:  */
 300:  public <T extends EventListener> T[] getListeners (Class<T> listenerType)
 301:  {
 302:  if (listenerType == DragSourceListener.class)
 303:  return DnDEventMulticaster.getListeners (dragSourceListener,
 304:  listenerType);
 305: 
 306:  if (listenerType == DragSourceMotionListener.class)
 307:  return DnDEventMulticaster.getListeners (dragSourceMotionListener,
 308:  listenerType);
 309: 
 310:  // Return an empty EventListener array.
 311:  return (T[]) new EventListener [0];
 312:  }
 313:  
 314:  /**
 315:  * TODO
 316:  * @return TODO
 317:  * 
 318:  * @since 1.5
 319:  */
 320:  public static int getDragThreshold()
 321:  throws NotImplementedException
 322:  {
 323:  // FIXME: Not implemented.
 324:  return 8;
 325:  }
 326: } // class DragSource
Overview Package Class Use Source Tree Index Deprecated About
GNU Classpath (0.95)

AltStyle によって変換されたページ (->オリジナル) /