For non IE browsers I have this:
// attach event listeners
// copy - cut - paste handlers
((Element) Js.cast(getElement())).addEventListener("copy", copy_li);
((Element) Js.cast(getElement())).addEventListener("cut", cut_li);
((Element) Js.cast(getElement())).addEventListener("paste", paste_li);
where (Element) is elemental2.dom.Element
copy_li is something like this:
final elemental2.dom.EventListener copy_li = new elemental2.dom.EventListener() {
@Override
public void handleEvent(elemental2.dom.Event evt) {
final ClipboardEvent event = Js.cast(evt);
copy(event);
}
};
where ClipboardEvent is elemental2.dom.ClipboardEvent
I need a copy function because I reuse it in the "Cut" functionality also.
and finally copy is something like this
private void copy(ClipboardEvent event) {
if (!hasData()) { // <-- hasData() is your application specific function
return;
}
// do application stuff get/iterate and finally get the data in a String form somehow...
final String data = getData(); // application specific
event.clipboardData.setData("text/plain", data);
event.preventDefault();
}
Similarly the paste evenListener:
final elemental2.dom.EventListener paste_li = new elemental2.dom.EventListener() {
@Override
public void handleEvent(elemental2.dom.Event evt) {
final ClipboardEvent event = Js.cast(evt);
final String data = event.clipboardData.getData("text/plain")
event.preventDefault();
if (data == null)
return;
// now you need somehow to propagate data to the interesting parties (methods, classes etc)
// I am using the EventBus from GWT
getEventBus().fireEvent(new PasteEvent(data));
}
};