Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv11913/src/net/sourceforge/bprocessor/gl/tool
Modified Files:
AbstractTool.java
Log Message:
Small improvement of the time based delay in drag in tools
Index: AbstractTool.java
===================================================================
RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/tool/AbstractTool.java,v
retrieving revision 1.121
retrieving revision 1.122
diff -C2 -d -r1.121 -r1.122
*** AbstractTool.java 16 May 2007 07:37:56 -0000 1.121
--- AbstractTool.java 1 Jun 2007 10:49:33 -0000 1.122
***************
*** 38,41 ****
--- 38,43 ----
import java.awt.Point;
import java.awt.Toolkit;
+ import java.awt.event.ActionEvent;
+ import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
***************
*** 53,56 ****
--- 55,59 ----
import java.util.Collection;
import java.util.Stack;
+ import javax.swing.Timer;
import org.apache.log4j.Logger;
***************
*** 82,85 ****
--- 85,92 ----
private Transform id;
+ private MouseEvent parked;
+
+ private Timer dragtimer;
+
/** The minimum drag time */
private static final int MIN_DRAG_TIME_MS = 200;
***************
*** 191,194 ****
--- 198,211 ----
}
+ private class DragAction implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ if (parked != null) {
+ dragged(parked);
+ parked = null;
+ glv.repaint(true);
+ }
+ }
+ }
+
/**
* Getter for cursor
***************
*** 359,362 ****
--- 376,380 ----
*/
public void mouseDragged(MouseEvent e) {
+ parked = null;
int x = e.getX();
int y = e.getY();
***************
*** 373,376 ****
--- 391,400 ----
if (e.getWhen() > pressedTime + MIN_DRAG_TIME_MS) {
dragged(e);
+ } else {
+ parked = e;
+ int delay = (int) (MIN_DRAG_TIME_MS - (e.getWhen() - pressedTime));
+ dragtimer = new Timer(delay, new DragAction());
+ dragtimer.setRepeats(false);
+ dragtimer.start();
}
}
***************
*** 386,389 ****
--- 410,414 ----
*/
public void mouseMoved(MouseEvent e) {
+ parked = null;
int x = e.getX();
int y = e.getY();
***************
*** 424,427 ****
--- 449,453 ----
*/
public void mousePressed(MouseEvent e) {
+ parked = null;
pressedTime = e.getWhen();
pressPos[0] = e.getX();
***************
*** 464,467 ****
--- 490,494 ----
*/
public void mouseReleased(MouseEvent e) {
+ parked = null;
if (e.getButton() == MouseEvent.BUTTON2) {
glv.setCursor(cursor);
|