Hi,
I'm trying to add drag and drop feature to my webb application. I'm using
XPCOM service nsIDragService.
dragService.invokeDragSession method sets array of transferable objects to
be transfered.
How can I set some string as a transfer object?
Here's the code:
window.captureEvents(Event.DRAGGESTURE);
window.captureEvents(Event.DRAGDROP);
window.addEventListener("draggesture", dragStart, true);
window.addEventListener("dragdrop", dragDrop, true);
function dragStart(e){
window.status = "drag: " + e.target.id;
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var dragService =
Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService);
var transferObj =
Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
var region =
Components.classes["@mozilla.org/gfx/region;1"].createInstance(Components.interfaces.nsIScriptableRegion);
var transferableObjs =
Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
transferObj.addDataFlavor("text/unicode");
var dataObj = new Object("some string text that I want to transfer when
drop occurs");
transferObj.setTransferData("text/unicode", dataObj, 2);
transferableObjs.AppendElement(transferObj);
region.setToRect(200, 200, 200, 200);
dragService.invokeDragSession(null, transferableObjs, region , 1);
}
function dragDrop(e){
e.stopPropagation();
window.status += "drop: " + e.target.id;
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var dragService =
Components.classes["@mozilla.org/widget/dragservice;1"].getService(Components.interfaces.nsIDragService);
var transferObj =
Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
var dragSession = dragService.getCurrentSession();
var numItems = dragSession.numDropItems;
transferObj.addDataFlavor("text/unicode");
for (var i = 0; i < numItems; i++) {
dragSession.getData(transferObj, i);
var dataObj = new Object();
var dropSizeObj = new Object();
transferObj.getTransferData("text/unicode", dataObj, dropSizeObj);
var str =
dataObj.value.QueryInterface(Components.interfaces.nsISupports);
alert(str);
}
}
_______________________________________________
dev-tech-xpcom mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-xpcom