package com.baselet.gwt.client.view.widgets;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.event.dom.client.KeyUpHandler;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.TextArea;
public class OwnTextArea extends TextArea {
private InstantValueChangeHandler handler;
public OwnTextArea() {
super();
sinkEvents(Event.ONPASTE);
addKeyUpHandler(new KeyUpHandler() {
@Override
public void onKeyUp(KeyUpEvent event) {
fireHandler();
}
});
}
@Override
public void onBrowserEvent(Event event) {
super.onBrowserEvent(event);
if (DOM.eventGetType(event) == Event.ONPASTE) {
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
fireHandler();
}
});
}
}
public void setInstantValueChangeHandler(InstantValueChangeHandler handler) {
this.handler = handler;
}
public static interface InstantValueChangeHandler {
void onValueChange(String value);
}
public void fireHandler() {
handler.onValueChange(getText());
}
}