package org.geogebra.web.html5.main;
import com.google.gwt.dom.client.Element;
public class FileDropHandlerW {
/**
* Register file drop handlers for the canvas of this application
*
* @param ce
* Element that listens to the drop events
*/
protected static native void registerDropHandler(Element ce,
AppW appl) /*-{
var frameElement = ce;
if (frameElement) {
frameElement.addEventListener("dragover", function(e) {
e.preventDefault();
e.stopPropagation();
frameElement.style.borderColor = "#ff0000";
}, false);
frameElement.addEventListener("dragenter", function(e) {
e.preventDefault();
e.stopPropagation();
}, false);
frameElement
.addEventListener(
"drop",
function(e) {
e.preventDefault();
e.stopPropagation();
frameElement.style.borderColor = "#000000";
var dt = e.dataTransfer;
if (dt.files.length) {
var fileToHandle = dt.files[0];
//at first this tries to open the fileToHandle as image,
//if fileToHandle not an image, this will try to open as ggb or ggt.
if (!appl.@org.geogebra.web.html5.main.AppW::openFileAsImage(Lcom/google/gwt/core/client/JavaScriptObject;Lcom/google/gwt/core/client/JavaScriptObject;)(fileToHandle, null)) {
appl.@org.geogebra.web.html5.main.AppW::openFile(Lcom/google/gwt/core/client/JavaScriptObject;Lcom/google/gwt/core/client/JavaScriptObject;)(fileToHandle, null);
}
} else {
// This would raise security exceptions later - see ticket #2301
//var gdat = dt.getData("URL");
//if (gdat && gdat != " ") {
// var coordx = e.offsetX ? e.offsetX : e.layerX;
// var coordy = e.offsetY ? e.offsetY : e.layerY;
// appl.@org.geogebra.web.html5.main.AppW::urlDropHappened(Ljava/lang/String;II)(gdat, coordx, coordy);
//}
}
}, false);
}
$doc.body.addEventListener("dragover", function(e) {
e.preventDefault();
e.stopPropagation();
if (frameElement)
frameElement.style.borderColor = "#000000";
}, false);
$doc.body.addEventListener("drop", function(e) {
e.preventDefault();
e.stopPropagation();
}, false);
}-*/;
}