зеркало из https://github.com/mozilla/gecko-dev.git
103 строки
3.0 KiB
Java
103 строки
3.0 KiB
Java
|
/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||
|
*
|
||
|
* The contents of this file are subject to the Mozilla Public License
|
||
|
* Version 1.0 (the "License"); you may not use this file except in
|
||
|
* compliance with the License. You may obtain a copy of the License at
|
||
|
* http://www.mozilla.org/MPL/
|
||
|
*
|
||
|
* Software distributed under the License is distributed on an "AS IS"
|
||
|
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
|
||
|
* the License for the specific language governing rights and limitations
|
||
|
* under the License.
|
||
|
*
|
||
|
* The Original Code is the Grendel mail/news client.
|
||
|
*
|
||
|
* The Initial Developer of the Original Code is Netscape Communications
|
||
|
* Corporation. Portions created by Netscape are Copyright (C) 1997
|
||
|
* Netscape Communications Corporation. All Rights Reserved.
|
||
|
*
|
||
|
* Created: Will Scullin <scullin@netscape.com>, 6 Nov 1997.
|
||
|
*/
|
||
|
|
||
|
package grendel.dnd;
|
||
|
|
||
|
import java.awt.*;
|
||
|
import java.awt.datatransfer.*;
|
||
|
import java.awt.event.*;
|
||
|
import java.util.*;
|
||
|
|
||
|
public class DragSource {
|
||
|
static DragSource fInstance = new DragSource();
|
||
|
|
||
|
Cursor fDefaultDragCursor =
|
||
|
Cursor.getPredefinedCursor(Cursor.HAND_CURSOR);
|
||
|
Cursor fDefaultDropCursor =
|
||
|
Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR);
|
||
|
Cursor fDefaultNoDropCursor =
|
||
|
Cursor.getPredefinedCursor(Cursor.HAND_CURSOR);
|
||
|
|
||
|
public static DragSource getDragSource(Component c) {
|
||
|
return fInstance;
|
||
|
}
|
||
|
|
||
|
public DragSourceContext startDrag(Component c,
|
||
|
AWTEvent trigger,
|
||
|
int actions,
|
||
|
Image dragImage,
|
||
|
Point dragImageOffset,
|
||
|
Transferable transferable,
|
||
|
DragSourceListener dsl)
|
||
|
throws InvalidDnDOperationException {
|
||
|
DragSourceContext res = null;
|
||
|
if (trigger instanceof MouseEvent) {
|
||
|
res = new DragSourceContext(this, c, trigger, transferable);
|
||
|
res.setSourceActions(actions);
|
||
|
try {
|
||
|
res.addDragSourceListener(dsl);
|
||
|
} catch (TooManyListenersException e) {}
|
||
|
} else {
|
||
|
throw new InvalidDnDOperationException();
|
||
|
}
|
||
|
|
||
|
return res;
|
||
|
}
|
||
|
|
||
|
public void setDefaultDragCursor(Cursor c) {
|
||
|
fDefaultDropCursor = c;
|
||
|
}
|
||
|
|
||
|
public Cursor getDefaultDragCursor() {
|
||
|
return fDefaultDropCursor;
|
||
|
}
|
||
|
|
||
|
public void setDefaultDropCursor(Cursor c) {
|
||
|
fDefaultDragCursor = c;
|
||
|
}
|
||
|
|
||
|
public Cursor getDefaultDropCursor() {
|
||
|
return fDefaultDragCursor;
|
||
|
}
|
||
|
|
||
|
public void setDefaultNoDropCursor(Cursor c) {
|
||
|
fDefaultNoDropCursor = c;
|
||
|
}
|
||
|
|
||
|
public Cursor getDefaultNoDropCursor() {
|
||
|
return fDefaultNoDropCursor;
|
||
|
}
|
||
|
|
||
|
public boolean isDragTrigger(AWTEvent trigger) {
|
||
|
if (trigger instanceof MouseEvent) {
|
||
|
MouseEvent e = (MouseEvent) trigger;
|
||
|
return (e.getID() == MouseEvent.MOUSE_DRAGGED);
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
public Rectangle getDragThresholdBBox(Component c,
|
||
|
Point hotspot) {
|
||
|
return new Rectangle(hotspot.x - 4, hotspot.y - 4,
|
||
|
8, 8);
|
||
|
}
|
||
|
}
|