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., 59 Temple Place, Suite 330, 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 /** @specnote According to the online documentation, this is
65 * protected, but in reality it is public. */
66 public static class DropTargetAutoScroller
67 implements ActionListener
69 private Component component
;
72 protected DropTargetAutoScroller (Component c
, Point p
)
78 protected void updateLocation (Point newLocn
)
83 protected void stop ()
87 public void actionPerformed (ActionEvent e
)
92 private Component component
;
93 private FlavorMap flavorMap
;
95 private DropTargetContext dropTargetContext
;
96 private DropTargetListener dropTargetListener
;
97 private boolean active
= true;
100 * Creates a <code>DropTarget</code> object.
102 * @exception HeadlessException If GraphicsEnvironment.isHeadless()
107 this (null, 0, null, true, null);
111 * Creates a <code>DropTarget</code> object.
113 * @exception HeadlessException If GraphicsEnvironment.isHeadless()
116 public DropTarget (Component c
, DropTargetListener dtl
)
118 this (c
, 0, dtl
, true, null);
122 * Creates a <code>DropTarget</code> object.
124 * @exception HeadlessException If GraphicsEnvironment.isHeadless()
127 public DropTarget (Component c
, int i
, DropTargetListener dtl
)
129 this (c
, i
, dtl
, true, null);
133 * Creates a <code>DropTarget</code> object.
135 * @exception HeadlessException If GraphicsEnvironment.isHeadless()
138 public DropTarget (Component c
, int i
, DropTargetListener dtl
, boolean b
)
140 this (c
, i
, dtl
, b
, null);
144 * Creates a <code>DropTarget</code> object.
146 * @exception HeadlessException If GraphicsEnvironment.isHeadless()
149 public DropTarget (Component c
, int i
, DropTargetListener dtl
, boolean b
,
152 if (GraphicsEnvironment
.isHeadless ())
153 throw new HeadlessException ();
157 dropTargetListener
= dtl
;
164 * Sets the component associated with this drop target object.
166 public void setComponent (Component c
)
172 * Returns the component associated with this drop target object.
174 public Component
getComponent ()
180 * Sets the default actions.
182 public void setDefaultActions (int ops
)
188 * Returns the default actions.
190 public int getDefaultActions ()
195 public void setActive (boolean active
)
197 this.active
= active
;
200 public boolean isActive()
206 * Adds a new <code>DropTargetListener</code>.
208 * @exception TooManyListenersException Sun's JDK does not, despite
209 * documentation, throw this exception here when you install an additional
210 * <code>DropTargetListener</code>. So to be compatible, we do the same
213 public void addDropTargetListener (DropTargetListener dtl
)
214 throws TooManyListenersException
216 dropTargetListener
= dtl
;
219 public void removeDropTargetListener(DropTargetListener dtl
)
221 // FIXME: Do we need to do something with dtl ?
222 dropTargetListener
= null;
225 public void dragEnter(DropTargetDragEvent dtde
)
229 public void dragOver(DropTargetDragEvent dtde
)
233 public void dropActionChanged(DropTargetDragEvent dtde
)
237 public void dragExit(DropTargetEvent dte
)
241 public void drop(DropTargetDropEvent dtde
)
245 public FlavorMap
getFlavorMap()
250 public void setFlavorMap(FlavorMap fm
)
255 public void addNotify(java
.awt
.peer
.ComponentPeer peer
)
259 public void removeNotify(java
.awt
.peer
.ComponentPeer peer
)
263 public DropTargetContext
getDropTargetContext()
265 if (dropTargetContext
== null)
266 dropTargetContext
= createDropTargetContext ();
268 return dropTargetContext
;
271 protected DropTargetContext
createDropTargetContext()
273 return new DropTargetContext (this);
276 protected DropTarget
.DropTargetAutoScroller createDropTargetAutoScroller
277 (Component c
, Point p
)
279 return new DropTarget
.DropTargetAutoScroller (c
, p
);
282 protected void initializeAutoscrolling(Point p
)
286 protected void updateAutoscroll(Point dragCursorLocn
)
290 protected void clearAutoscroll()
293 } // class DropTarget