package org.geogebra.web.html5.util;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.ImageElement;
public class ImageWrapper {
ImageElement img;
public ImageWrapper(ImageElement imageElement) {
this.img = imageElement;
}
/**
* @param imageManager
*
* Images in gwt event system not loaded when src added, only
* when attached to dom. So we must hack it.
*/
public void attachNativeLoadHandler(ImageManagerW imageManager,
ImageLoadCallback callback) {
addNativeLoadHandler(img, imageManager, callback);
}
private native void addNativeLoadHandler(Element img,
ImageManagerW imageManager, ImageLoadCallback callback) /*-{
img
.addEventListener(
"load",
function() {
callback.@org.geogebra.web.html5.util.ImageLoadCallback::onLoad()();
});
img
.addEventListener(
"error",
function() {
img.src = imageManager.@org.geogebra.web.html5.util.ImageManagerW::getErrorURL()();
});
}-*/;
public ImageElement getElement() {
return img;
}
public static native void nativeon(ImageElement img, String event,
ImageLoadCallback callback) /*-{
img
.addEventListener(
event,
function() {
callback.@org.geogebra.web.html5.util.ImageLoadCallback::onLoad()();
});
}-*/;
/**
* Native event handler
*
* @param event
* @param callback
*/
public void on(String event, ImageLoadCallback callback) {
nativeon(getElement(), event, callback);
}
}