package com.akjava.gwt.lib.client;
import com.google.gwt.event.dom.client.MouseDownEvent;
import com.google.gwt.event.dom.client.MouseDownHandler;
import com.google.gwt.event.dom.client.MouseOutEvent;
import com.google.gwt.event.dom.client.MouseOutHandler;
import com.google.gwt.event.dom.client.MouseUpEvent;
import com.google.gwt.event.dom.client.MouseUpHandler;
import com.google.gwt.user.client.Timer;
/**
* add handlers
* @author aki
*
*/
public class MousePressEmulate implements MouseDownHandler,MouseUpHandler,MouseOutHandler{
Timer timer;
private int repeatTime;
private long start;
private MousePressingListener pressingListener;
private boolean sync=true;
private boolean doing;
@Override
public void onMouseUp(MouseUpEvent event) {
timer.cancel();
}
@Override
public void onMouseDown(MouseDownEvent event) {
pressingListener.onMouseDown(event);
start=System.currentTimeMillis();
timer=new Timer(){
@Override
public void run() {
if(System.currentTimeMillis()<start+repeatTime){
return;
}
if(sync&&doing){
return;
}
doing=true;
pressingListener.onMousePressing();
doing=false;
}};
timer.scheduleRepeating(repeatTime);
}
@Override
public void onMouseOut(MouseOutEvent event) {
timer.cancel();
}
public static interface MousePressingListener {
public void onMouseDown(MouseDownEvent event);
public void onMousePressing();
}
}