package com.akjava.gwt.lib.client.experimental;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.Button;
public abstract class ExecuteButton extends Button{
public ExecuteButton(String label){
this(label,true);
}
public ExecuteButton(String label,final boolean autoEnableButton){
super(label);
this.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
startExecute(autoEnableButton);
}
});
}
public void startExecute(final boolean autoEnableButton){
if(!isEnabled()){
return;
}
setEnabled(false);
beforeExecute();
Timer timer=new Timer(){
@Override
public void run() {
try{
executeOnClick();
}catch(Exception e){
new RuntimeException(e);//i dont care
}finally{
if(autoEnableButton){
setEnabled(true);
}
}
}
};
timer.schedule(10);
}
public void beforeExecute(){}
public abstract void executeOnClick();
}