Merge from mainline (gomp-merge-2005-02-26).
[official-gcc.git] / libjava / java / awt / dnd / DropTarget.java
blob2a8b79d841587202bf390860f658c71f60a811f1
1 /* DropTarget.java --
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)
9 any later version.
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
19 02111-1307 USA.
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.
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. */
39 package java.awt.dnd;
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;
52 /**
53 * @author Michael Koch
54 * @since 1.2
56 public class DropTarget
57 implements DropTargetListener, EventListener, Serializable
59 /**
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;
70 private Point point;
72 protected DropTargetAutoScroller (Component c, Point p)
74 component = c;
75 point = p;
78 protected void updateLocation (Point newLocn)
80 point = newLocn;
83 protected void stop ()
87 public void actionPerformed (ActionEvent e)
92 private Component component;
93 private FlavorMap flavorMap;
94 private int actions;
95 private DropTargetContext dropTargetContext;
96 private DropTargetListener dropTargetListener;
97 private boolean active = true;
99 /**
100 * Creates a <code>DropTarget</code> object.
102 * @exception HeadlessException If GraphicsEnvironment.isHeadless()
103 * returns true.
105 public DropTarget ()
107 this (null, 0, null, true, null);
111 * Creates a <code>DropTarget</code> object.
113 * @exception HeadlessException If GraphicsEnvironment.isHeadless()
114 * returns true.
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()
125 * returns true.
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()
136 * returns true.
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()
147 * returns true.
149 public DropTarget (Component c, int i, DropTargetListener dtl, boolean b,
150 FlavorMap fm)
152 if (GraphicsEnvironment.isHeadless ())
153 throw new HeadlessException ();
155 component = c;
156 actions = i;
157 dropTargetListener = dtl;
158 flavorMap = fm;
160 setActive (b);
164 * Sets the component associated with this drop target object.
166 public void setComponent (Component c)
168 component = c;
172 * Returns the component associated with this drop target object.
174 public Component getComponent ()
176 return component;
180 * Sets the default actions.
182 public void setDefaultActions (int ops)
184 actions = ops;
188 * Returns the default actions.
190 public int getDefaultActions ()
192 return actions;
195 public void setActive (boolean active)
197 this.active = active;
200 public boolean isActive()
202 return active;
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
211 * thing.
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()
247 return flavorMap;
250 public void setFlavorMap(FlavorMap fm)
252 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