myfaces.html5.dnd.drop = function()

in myfaces-html5-core/src/main/resources/META-INF/resources/org.apache.myfaces.html5/dnd.js [96:151]


myfaces.html5.dnd.drop = function(event, source, rerender, acceptedMimeTypes){
	//cancel the event. this is necessary for DnD execution
    if (event.preventDefault)
        event.preventDefault();
 
    //CALL jsf.ajax.request with constructing parameters
    //this call should will the dropListener and make the rerender operation
    //also, will send event mime types and values too!
 
    var options = {};
    //set execute
    options.execute = "@this";		//XXX: do we need to parametrize this option too?

    //set render
    if(rerender)
    	options.render = rerender;
    else
    	options.render = "@none";
    
    //set param
    var paramsToSend = event.dataTransfer.getData(myfaces.html5.dnd.PARAM_MIME_TYPE);
    if(paramsToSend)
    	options[myfaces.html5.dnd.PARAM_MIME_TYPE] = paramsToSend;

    //set the data according to acceptedMimeTypes
    if(acceptedMimeTypes){
	    var foundMimeTypes;
        if(acceptedMimeTypes.length==1 && acceptedMimeTypes[0]==myfaces.html5.dnd.ACCEPT_ALL_MIME_TYPES){
            foundMimeTypes = new Array(event.dataTransfer.types.length);
            for(var i=0; i<event.dataTransfer.types.length; i++){
                foundMimeTypes[i] =  event.dataTransfer.types.item(i);
            }
        }
        else {
            foundMimeTypes = acceptedMimeTypes.filter(function (mimeType) {return event.dataTransfer.types.contains(mimeType)});
        }
        if(foundMimeTypes.length > 0){
             options["org.apache.myfaces.dnd.foundMimeTypes"] = myfaces.html5.common.getArrayAsString(foundMimeTypes);
             for(var i=0; i< foundMimeTypes.length; i++){
                 var mimeType = foundMimeTypes[i];
                 var data = event.dataTransfer.getData(mimeType);
                 if(data){
                     options[mimeType] = data;
                 }
             }
        }
    }
    
    //set event
    options["javax.faces.behavior.event"] = "drop"

    jsf.ajax.request(source, event, options);
    
    return false;

}