2 Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
4 This file is part of GNU Classpath.
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)
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.
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
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
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. */
41 import java.awt.Component;
42 import java.awt.GraphicsEnvironment;
43 import java.awt.HeadlessException;
44 import java.awt.Point;
45 import java.awt.datatransfer.FlavorMap;
46 import java.awt.event.ActionEvent;
47 import java.awt.event.ActionListener;
48 import java.io.Serializable;
49 import java.util.EventListener;
50 import java.util.TooManyListenersException;
53 * @author Michael Koch
56 public class DropTarget
57 implements DropTargetListener, EventListener, Serializable
60 * Compatible with JDK 1.2+
62 private static final long serialVersionUID = -6283860791671019047L;
64 protected static class DropTargetAutoScroller
65 implements ActionListener
67 private Component component;
70 protected DropTargetAutoScroller (Component c, Point p)
76 protected void updateLocation (Point newLocn)
81 protected void stop ()
85 public void actionPerformed (ActionEvent e)
90 private Component component;
91 private FlavorMap flavorMap;
93 private DropTargetContext dropTargetContext;
94 private DropTargetListener dropTargetListener;
95 private boolean active = true;
98 * Creates a <code>DropTarget</code> object.
100 * @exception HeadlessException If GraphicsEnvironment.isHeadless()
105 this (null, 0, null, true, null);
109 * Creates a <code>DropTarget</code> object.
111 * @exception HeadlessException If GraphicsEnvironment.isHeadless()
114 public DropTarget (Component c, DropTargetListener dtl)
116 this (c, 0, dtl, true, null);
120 * Creates a <code>DropTarget</code> object.
122 * @exception HeadlessException If GraphicsEnvironment.isHeadless()
125 public DropTarget (Component c, int i, DropTargetListener dtl)
127 this (c, i, dtl, true, null);
131 * Creates a <code>DropTarget</code> object.
133 * @exception HeadlessException If GraphicsEnvironment.isHeadless()
136 public DropTarget (Component c, int i, DropTargetListener dtl, boolean b)
138 this (c, i, dtl, b, null);
142 * Creates a <code>DropTarget</code> object.
144 * @exception HeadlessException If GraphicsEnvironment.isHeadless()
147 public DropTarget (Component c, int i, DropTargetListener dtl, boolean b,
150 if (GraphicsEnvironment.isHeadless ())
151 throw new HeadlessException ();
155 dropTargetListener = dtl;
162 * Sets the component associated with this drop target object.
164 public void setComponent (Component c)
170 * Returns the component associated with this drop target object.
172 public Component getComponent ()
178 * Sets the default actions.
180 public void setDefaultActions (int ops)
186 * Returns the default actions.
188 public int getDefaultActions ()
193 public void setActive (boolean active)
195 this.active = active;
198 public boolean isActive()
204 * Adds a new <code>DropTargetListener</code>.
206 * @exception TooManyListenersException Sun's JDK does not, despite
207 * documentation, throw this exception here when you install an additional
208 * <code>DropTargetListener</code>. So to be compatible, we do the same
211 public void addDropTargetListener (DropTargetListener dtl)
212 throws TooManyListenersException
214 dropTargetListener = dtl;
217 public void removeDropTargetListener(DropTargetListener dtl)
219 // FIXME: Do we need to do something with dtl ?
220 dropTargetListener = null;
223 public void dragEnter(DropTargetDragEvent dtde)
227 public void dragOver(DropTargetDragEvent dtde)
231 public void dropActionChanged(DropTargetDragEvent dtde)
235 public void dragExit(DropTargetEvent dte)
239 public void drop(DropTargetDropEvent dtde)
243 public FlavorMap getFlavorMap()
248 public void setFlavorMap(FlavorMap fm)
253 public void addNotify(java.awt.peer.ComponentPeer peer)
257 public void removeNotify(java.awt.peer.ComponentPeer peer)
261 public DropTargetContext getDropTargetContext()
263 if (dropTargetContext == null)
264 dropTargetContext = createDropTargetContext ();
266 return dropTargetContext;
269 protected DropTargetContext createDropTargetContext()
271 return new DropTargetContext (this);
274 protected DropTarget.DropTargetAutoScroller createDropTargetAutoScroller
275 (Component c, Point p)
277 return new DropTarget.DropTargetAutoScroller (c, p);
280 protected void initializeAutoscrolling(Point p)
284 protected void updateAutoscroll(Point dragCursorLocn)
288 protected void clearAutoscroll()
291 } // class DropTarget