将树项目拖放到文件夹中?

时间:2016-05-02 22:31:08

标签: javascript firefox-addon xul xulrunner thunderbird-addon

有没有办法开始将项目从XUL树拖到文件夹中,当删除时,创建一个包含这些项目数据的文件?

按照MDN示例,我已成功将drag'n drop文件从文件夹实现到XUL树,现在我需要一个反向过程。

谢谢

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,但它有一点副作用 - 当用户释放鼠标按钮时,我找不到获取通知的方法,因此必须在初始化期间创建包含树中数据的文件临时目录中的dragstart事件,当用户释放鼠标按钮时,该事件将被移动到已删除的文件夹中。 例如:

//event listener must be added to <treechildren> element
document.getElementById("myTreeChildren").addEventListener("dragstart", treeDragStart, true);
function    treeDragStart(e)
{
var nsIFile = FileUtils.getFile("TmpD", ["myfilename.txt"], true),
        fos = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream),
        content = "this is an example text";
// flags: PR_WRONLY | PR_CREATE_FILE | PR_TRUNCATE
fos.init(nsIFile, 0x04 | 0x08 | 0x20, 0600, 0);
written = fos.write(content, content.length);
if (fos instanceof Ci.nsISafeOutputStream)
    fos.finish();
else
    fos.close();

e.dataTransfer.effectAllowed = "move";
e.dataTransfer.mozSetDataAt("application/x-moz-file", nsIFile, 0);
}//treeDragStart()

当有人从应用程序外部发生丢弃时,是否有人知道是否有办法获得通知?