blob: 93aeff6d0a437d72028b683f20a6f32b3c9cb14d [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 1998-2003 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26package java.awt.dnd;
27
28import java.awt.Component;
29
30import java.awt.event.MouseEvent;
31import java.awt.event.MouseListener;
32import java.awt.event.MouseMotionListener;
33
34/**
35 * This abstract subclass of <code>DragGestureRecognizer</code>
36 * defines a <code>DragGestureRecognizer</code>
37 * for mouse-based gestures.
38 *
39 * Each platform implements its own concrete subclass of this class,
40 * available via the Toolkit.createDragGestureRecognizer() method,
41 * to encapsulate
42 * the recognition of the platform dependent mouse gesture(s) that initiate
43 * a Drag and Drop operation.
44 * <p>
45 * Mouse drag gesture recognizers should honor the
46 * drag gesture motion threshold, available through
47 * {@link DragSource#getDragThreshold}.
48 * A drag gesture should be recognized only when the distance
49 * in either the horizontal or vertical direction between
50 * the location of the latest mouse dragged event and the
51 * location of the corresponding mouse button pressed event
52 * is greater than the drag gesture motion threshold.
53 * <p>
54 * Drag gesture recognizers created with
55 * {@link DragSource#createDefaultDragGestureRecognizer}
56 * follow this convention.
57 *
58 * @author Laurence P. G. Cable
59 *
60 * @see java.awt.dnd.DragGestureListener
61 * @see java.awt.dnd.DragGestureEvent
62 * @see java.awt.dnd.DragSource
63 */
64
65public abstract class MouseDragGestureRecognizer extends DragGestureRecognizer implements MouseListener, MouseMotionListener {
66
67 private static final long serialVersionUID = 6220099344182281120L;
68
69 /**
70 * Construct a new <code>MouseDragGestureRecognizer</code>
71 * given the <code>DragSource</code> for the
72 * <code>Component</code> c, the <code>Component</code>
73 * to observe, the action(s)
74 * permitted for this drag operation, and
75 * the <code>DragGestureListener</code> to
76 * notify when a drag gesture is detected.
77 * <P>
78 * @param ds The DragSource for the Component c
79 * @param c The Component to observe
80 * @param act The actions permitted for this Drag
81 * @param dgl The DragGestureListener to notify when a gesture is detected
82 *
83 */
84
85 protected MouseDragGestureRecognizer(DragSource ds, Component c, int act, DragGestureListener dgl) {
86 super(ds, c, act, dgl);
87 }
88
89 /**
90 * Construct a new <code>MouseDragGestureRecognizer</code>
91 * given the <code>DragSource</code> for
92 * the <code>Component</code> c,
93 * the <code>Component</code> to observe, and the action(s)
94 * permitted for this drag operation.
95 * <P>
96 * @param ds The DragSource for the Component c
97 * @param c The Component to observe
98 * @param act The actions permitted for this drag
99 */
100
101 protected MouseDragGestureRecognizer(DragSource ds, Component c, int act) {
102 this(ds, c, act, null);
103 }
104
105 /**
106 * Construct a new <code>MouseDragGestureRecognizer</code>
107 * given the <code>DragSource</code> for the
108 * <code>Component</code> c, and the
109 * <code>Component</code> to observe.
110 * <P>
111 * @param ds The DragSource for the Component c
112 * @param c The Component to observe
113 */
114
115 protected MouseDragGestureRecognizer(DragSource ds, Component c) {
116 this(ds, c, DnDConstants.ACTION_NONE);
117 }
118
119 /**
120 * Construct a new <code>MouseDragGestureRecognizer</code>
121 * given the <code>DragSource</code> for the <code>Component</code>.
122 * <P>
123 * @param ds The DragSource for the Component
124 */
125
126 protected MouseDragGestureRecognizer(DragSource ds) {
127 this(ds, null);
128 }
129
130 /**
131 * register this DragGestureRecognizer's Listeners with the Component
132 */
133
134 protected void registerListeners() {
135 component.addMouseListener(this);
136 component.addMouseMotionListener(this);
137 }
138
139 /**
140 * unregister this DragGestureRecognizer's Listeners with the Component
141 *
142 * subclasses must override this method
143 */
144
145
146 protected void unregisterListeners() {
147 component.removeMouseListener(this);
148 component.removeMouseMotionListener(this);
149 }
150
151 /**
152 * Invoked when the mouse has been clicked on a component.
153 * <P>
154 * @param e the <code>MouseEvent</code>
155 */
156
157 public void mouseClicked(MouseEvent e) { }
158
159 /**
160 * Invoked when a mouse button has been
161 * pressed on a <code>Component</code>.
162 * <P>
163 * @param e the <code>MouseEvent</code>
164 */
165
166 public void mousePressed(MouseEvent e) { }
167
168 /**
169 * Invoked when a mouse button has been released on a component.
170 * <P>
171 * @param e the <code>MouseEvent</code>
172 */
173
174 public void mouseReleased(MouseEvent e) { }
175
176 /**
177 * Invoked when the mouse enters a component.
178 * <P>
179 * @param e the <code>MouseEvent</code>
180 */
181
182 public void mouseEntered(MouseEvent e) { }
183
184 /**
185 * Invoked when the mouse exits a component.
186 * <P>
187 * @param e the <code>MouseEvent</code>
188 */
189
190 public void mouseExited(MouseEvent e) { }
191
192 /**
193 * Invoked when a mouse button is pressed on a component.
194 * <P>
195 * @param e the <code>MouseEvent</code>
196 */
197
198 public void mouseDragged(MouseEvent e) { }
199
200 /**
201 * Invoked when the mouse button has been moved on a component
202 * (with no buttons no down).
203 * <P>
204 * @param e the <code>MouseEvent</code>
205 */
206
207 public void mouseMoved(MouseEvent e) { }
208}