pjs/grendel/dnd/DragSource.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);
}
}