3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4 <title>qooxdoo » Demo</title>
5 <link type="text/css" rel="stylesheet" href="../../resource/css/layout.css"/>
7 <link type="text/css" rel="stylesheet" href="../../resource/css/layout_ie.css"/>
9 <script type="text/javascript" src="../../script/qx.js"></script>
12 <script type="text/javascript" src="../../script/layout.js"></script>
14 <div id="demoDescription">
15 <p>Drag and Drop between trees and inside a tree.</p>
16 <p>Added support for positioned move/insert (not complete yet!)</p>
19 <script type="text/javascript">
20 qx.core.Init.getInstance().defineMain(function()
22 var vLastIndex = null;
24 function handleDragStart(e)
26 e.addData("qx.ui.tree.AbstractTreeElement", e.getCurrentTarget());
31 function handleDragDrop(e)
33 var vType = e.getDropDataTypes()[0];
34 var vSource = e.getData(vType);
35 var vTarget = e.getCurrentTarget();
37 vSource.getTree().getManager().deselectAll();
39 // this.debug("Add At: " + vLastIndex);
41 vLastIndex == null ? vTarget.addAtEnd(vSource) : vTarget.addBefore(vSource, vLastIndex);
45 treeMarkerLine.setStyleProperty("display", "none");
48 function supportsDrop(vDragCache) {
49 return !vDragCache.sourceWidget.contains(this);
52 function handleDragOver(e)
54 var l = e.getTarget().getLabelObject();
55 l.setStyleProperty("textDecoration", "underline");
58 function handleDragOut(e)
60 var l = e.getTarget().getLabelObject();
61 l.removeStyleProperty("textDecoration");
64 function handleDragEnd(e)
67 treeMarkerLine.setStyleProperty("display", "none");
70 function handleDragMove(e)
74 var vTarget = e.getTarget();
76 if (!vTarget || !(vTarget instanceof qx.ui.tree.TreeFolder))
78 treeMarkerLine.setStyleProperty("display", "none");
82 var vContainer = vTarget.getContainerObject();
86 treeMarkerLine.setStyleProperty("display", "none");
90 var vChildren = vContainer.getVisibleChildren();
91 var vChildrenLength = vChildren.length;
92 var vEventTop = e.getPageY();
94 for (var i=0, vChild, vTop; i<vChildrenLength; i++)
96 vChild = vChildren[i];
98 vTop = qx.dom.DomLocation.getPageBoxTop(vChild.getElement());
99 if ((vTop - vEventTop) > -4 && (vTop - vEventTop) < 4)
101 if (vEventTop > vTop && vChild.isFirstChild()) {
105 treeMarkerLine._applyRuntimeTop(vTop+1);
106 treeMarkerLine._applyRuntimeLeft(QxDom.getComputedPageBoxLeft(vChild.getLabelObject().getElement()) - 20);
108 treeMarkerLine.removeStyleProperty("display");
110 // this.debug("Index: " + vLastIndex + " :: " + vEventTop + " <> " + vTop);
117 treeMarkerLine.setStyleProperty("display", "none");
122 var treeMarkerLine = new qx.ui.basic.Terminator;
124 treeMarkerLine.setHeight(2);
125 treeMarkerLine.setBackgroundColor("#335EA8");
126 treeMarkerLine.setWidth(20);
127 treeMarkerLine.setZIndex(1e7);
128 treeMarkerLine.setAnonymous(true);
129 treeMarkerLine.setStyleProperty("display", "none");
131 qx.ui.core.ClientDocument.getInstance().add(treeMarkerLine);
135 var treeSource = new qx.ui.tree.Tree("Source");
139 setBackgroundColor(255);
140 setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
141 setOverflow("scrollY");
149 addEventListener("dragdrop", handleDragDrop);
150 addEventListener("dragover", handleDragOver);
151 addEventListener("dragout", handleDragOut);
152 addEventListener("dragmove", handleDragMove);
154 setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
157 qx.ui.core.ClientDocument.getInstance().add(treeSource);
159 for (var i=1, f; i<3; i++)
161 f = new qx.ui.tree.TreeFolder("Folder " + i);
163 f.addEventListener("dragstart", handleDragStart);
164 f.addEventListener("dragdrop", handleDragDrop);
165 f.addEventListener("dragover", handleDragOver);
166 f.addEventListener("dragout", handleDragOut);
167 f.addEventListener("dragend", handleDragEnd);
169 f.setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
170 f.supportsDrop = supportsDrop;
174 for (var j=1, g; j<6; j++)
176 g = new qx.ui.tree.TreeFolder("Subfolder " + j);
178 g.addEventListener("dragstart", handleDragStart);
179 g.addEventListener("dragdrop", handleDragDrop);
180 g.addEventListener("dragover", handleDragOver);
181 g.addEventListener("dragout", handleDragOut);
182 g.addEventListener("dragend", handleDragEnd);
184 g.setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
185 g.supportsDrop = supportsDrop;
189 for (var k=1, h; k<9; k++)
191 h = new qx.ui.tree.TreeFile("File " + k);
193 h.addEventListener("dragstart", handleDragStart);
205 var treeDest = new qx.ui.tree.Tree("Dest");
209 setBackgroundColor(255);
210 setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
211 setOverflow("scrollY");
219 addEventListener("dragdrop", handleDragDrop);
220 addEventListener("dragover", handleDragOver);
221 addEventListener("dragout", handleDragOut);
222 addEventListener("dragmove", handleDragMove);
224 setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
227 qx.ui.core.ClientDocument.getInstance().add(treeDest);