1/* 2 * Copyright (c) 1998, 2003, Oracle and/or its affiliates. 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. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * 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} 36 * defines a {@code DragGestureRecognizer} 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} 71 * given the {@code DragSource} for the 72 * {@code Component} c, the {@code Component} 73 * to observe, the action(s) 74 * permitted for this drag operation, and 75 * the {@code DragGestureListener} to 76 * notify when a drag gesture is detected. 77 * 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} 91 * given the {@code DragSource} for 92 * the {@code Component} c, 93 * the {@code Component} to observe, and the action(s) 94 * permitted for this drag operation. 95 * 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} 107 * given the {@code DragSource} for the 108 * {@code Component} c, and the 109 * {@code Component} to observe. 110 * 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} 121 * given the {@code DragSource} for the {@code Component}. 122 * 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 * 154 * @param e the {@code MouseEvent} 155 */ 156 157 public void mouseClicked(MouseEvent e) { } 158 159 /** 160 * Invoked when a mouse button has been 161 * pressed on a {@code Component}. 162 * 163 * @param e the {@code MouseEvent} 164 */ 165 166 public void mousePressed(MouseEvent e) { } 167 168 /** 169 * Invoked when a mouse button has been released on a component. 170 * 171 * @param e the {@code MouseEvent} 172 */ 173 174 public void mouseReleased(MouseEvent e) { } 175 176 /** 177 * Invoked when the mouse enters a component. 178 * 179 * @param e the {@code MouseEvent} 180 */ 181 182 public void mouseEntered(MouseEvent e) { } 183 184 /** 185 * Invoked when the mouse exits a component. 186 * 187 * @param e the {@code MouseEvent} 188 */ 189 190 public void mouseExited(MouseEvent e) { } 191 192 /** 193 * Invoked when a mouse button is pressed on a component. 194 * 195 * @param e the {@code MouseEvent} 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 * 204 * @param e the {@code MouseEvent} 205 */ 206 207 public void mouseMoved(MouseEvent e) { } 208} 209