Fix #5654 - roojspacker - get it working as a doc tool...
[roojs1] / docs.old / symbols / src / Roo_DDView.js.html
diff --git a/docs.old/symbols/src/Roo_DDView.js.html b/docs.old/symbols/src/Roo_DDView.js.html
new file mode 100644 (file)
index 0000000..e3dd702
--- /dev/null
@@ -0,0 +1,418 @@
+<html><head><title>../roojs1/Roo/DDView.js</title><link rel="stylesheet" type="text/css" href="../../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">//&lt;script type=&quot;text/javasscript&quot;&gt;
+
+/**
+ * @class Roo.DDView
+ * A DnD enabled version of Roo.View.
+ * @param {Element/String} container The Element in which to create the View.
+ * @param {String} tpl The template string used to create the markup for each element of the View
+ * @param {Object} config The configuration properties. These include all the config options of
+ * {@link Roo.View} plus some specific to this class.&lt;br&gt;
+ * &lt;p&gt;
+ * Drag/drop is implemented by adding {@link Roo.data.Record}s to the target DDView. If copying is
+ * not being performed, the original {@link Roo.data.Record} is removed from the source DDView.&lt;br&gt;
+ * &lt;p&gt;
+ * The following extra CSS rules are needed to provide insertion point highlighting:&lt;pre&gt;&lt;code&gt;
+.x-view-drag-insert-above {
+       border-top:1px dotted #3366cc;
+}
+.x-view-drag-insert-below {
+       border-bottom:1px dotted #3366cc;
+}
+&lt;/code&gt;&lt;/pre&gt;
+ * 
+ */
+</span><span class="jsdoc-var">Roo.DDView </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">container</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">tpl</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">) {
+    </span><span class="jsdoc-var">Roo.DDView.superclass.constructor.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">);
+    </span><span class="jsdoc-var">this.getEl</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.setStyle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;outline&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">&quot;0px none&quot;</span><span class="jsdoc-syntax">);
+    </span><span class="jsdoc-var">this.getEl</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.unselectable</span><span class="jsdoc-syntax">();
+    </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dragGroup</span><span class="jsdoc-syntax">) {
+               </span><span class="jsdoc-var">this.setDraggable</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dragGroup.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;,&quot;</span><span class="jsdoc-syntax">));
+    }
+    </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dropGroup</span><span class="jsdoc-syntax">) {
+               </span><span class="jsdoc-var">this.setDroppable</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dropGroup.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;,&quot;</span><span class="jsdoc-syntax">));
+    }
+    </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.deletable</span><span class="jsdoc-syntax">) {
+       </span><span class="jsdoc-var">this.setDeletable</span><span class="jsdoc-syntax">();
+    }
+    </span><span class="jsdoc-var">this.isDirtyFlag </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
+       </span><span class="jsdoc-var">this.addEvents</span><span class="jsdoc-syntax">({
+               </span><span class="jsdoc-string">&quot;drop&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
+       </span><span class="jsdoc-syntax">});
+};
+
+</span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.DDView</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.View</span><span class="jsdoc-syntax">, {
+</span><span class="jsdoc-comment">/** @cfg {String/Array} dragGroup The ddgroup name(s) for the View's DragZone. */
+/**    @cfg {String/Array} dropGroup The ddgroup name(s) for the View's DropZone. */
+/**    @cfg {Boolean} copy Causes drag operations to copy nodes rather than move. */
+/**    @cfg {Boolean} allowCopy Causes ctrl/drag operations to copy nodes rather than move. */
+
+       </span><span class="jsdoc-var">isFormField</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+
+       </span><span class="jsdoc-var">reset</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.emptyFn</span><span class="jsdoc-syntax">,
+       
+       </span><span class="jsdoc-var">clearInvalid</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">Roo.form.Field.prototype.clearInvalid</span><span class="jsdoc-syntax">,
+
+       </span><span class="jsdoc-var">validate</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
+               </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
+       },
+       
+       </span><span class="jsdoc-var">destroy</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
+               </span><span class="jsdoc-var">this.purgeListeners</span><span class="jsdoc-syntax">();
+               </span><span class="jsdoc-var">this.getEl.removeAllListeners</span><span class="jsdoc-syntax">();
+               </span><span class="jsdoc-var">this.getEl</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.remove</span><span class="jsdoc-syntax">();
+               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dragZone</span><span class="jsdoc-syntax">) {
+                       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dragZone.destroy</span><span class="jsdoc-syntax">) {
+                               </span><span class="jsdoc-var">this.dragZone.destroy</span><span class="jsdoc-syntax">();
+                       }
+               }
+               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dropZone</span><span class="jsdoc-syntax">) {
+                       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dropZone.destroy</span><span class="jsdoc-syntax">) {
+                               </span><span class="jsdoc-var">this.dropZone.destroy</span><span class="jsdoc-syntax">();
+                       }
+               }
+       },
+
+</span><span class="jsdoc-comment">/** Allows this class to be an Roo.form.Field so it can be found using {@link Roo.form.BasicForm#findField}. */
+       </span><span class="jsdoc-var">getName</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
+               </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.name</span><span class="jsdoc-syntax">;
+       },
+
+</span><span class="jsdoc-comment">/** Loads the View from a JSON string representing the Records to put into the Store. */
+       </span><span class="jsdoc-var">setValue</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">) {
+               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.store</span><span class="jsdoc-syntax">) {
+                       </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">&quot;DDView.setValue(). DDView must be constructed with a valid Store&quot;</span><span class="jsdoc-syntax">;
+               }
+               </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">data </span><span class="jsdoc-syntax">= {};
+               </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">this.store.reader.meta.root</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">? []</span><span class="jsdoc-var">.concat</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">) : [];
+               </span><span class="jsdoc-var">this.store.proxy </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.data.MemoryProxy</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">);
+               </span><span class="jsdoc-var">this.store.load</span><span class="jsdoc-syntax">();
+       },
+
+</span><span class="jsdoc-comment">/** @return {String} a parenthesised list of the ids of the Records in the View. */
+       </span><span class="jsdoc-var">getValue</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
+               </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">result </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'('</span><span class="jsdoc-syntax">;
+               </span><span class="jsdoc-var">this.store.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">rec</span><span class="jsdoc-syntax">) {
+                       </span><span class="jsdoc-var">result </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">rec.id </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">','</span><span class="jsdoc-syntax">;
+               });
+               </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">result.substr</span><span class="jsdoc-syntax">(0, </span><span class="jsdoc-var">result.length </span><span class="jsdoc-syntax">- 1) + </span><span class="jsdoc-string">')'</span><span class="jsdoc-syntax">;
+       },
+       
+       </span><span class="jsdoc-var">getIds</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
+               </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">result </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.store.getCount</span><span class="jsdoc-syntax">());
+               </span><span class="jsdoc-var">this.store.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">rec</span><span class="jsdoc-syntax">) {
+                       </span><span class="jsdoc-var">result</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++] = </span><span class="jsdoc-var">rec.id</span><span class="jsdoc-syntax">;
+               });
+               </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">result</span><span class="jsdoc-syntax">;
+       },
+       
+       </span><span class="jsdoc-var">isDirty</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
+               </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.isDirtyFlag</span><span class="jsdoc-syntax">;
+       },
+
+</span><span class="jsdoc-comment">/**
+ *     Part of the Roo.dd.DropZone interface. If no target node is found, the
+ *     whole Element becomes the target, and this causes the drop gesture to append.
+ */
+    </span><span class="jsdoc-var">getTargetFromEvent </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
+               </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.getTarget</span><span class="jsdoc-syntax">();
+               </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">((</span><span class="jsdoc-var">target </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">) &amp;&amp; (</span><span class="jsdoc-var">target.parentNode </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">this.el.dom</span><span class="jsdoc-syntax">)) {
+               </span><span class="jsdoc-var">target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">target.parentNode</span><span class="jsdoc-syntax">;
+               }
+               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">) {
+                       </span><span class="jsdoc-var">target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.dom.lastChild </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.el.dom</span><span class="jsdoc-syntax">;
+               }
+               </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">;
+    },
+
+</span><span class="jsdoc-comment">/**
+ *     Create the drag data which consists of an object which has the property &quot;ddel&quot; as
+ *     the drag proxy element. 
+ */
+    </span><span class="jsdoc-var">getDragData </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.findItemFromChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.getTarget</span><span class="jsdoc-syntax">());
+               </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">) {
+                       </span><span class="jsdoc-var">this.handleSelection</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+                       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">selNodes </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getSelectedNodes</span><span class="jsdoc-syntax">();
+            </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">dragData </span><span class="jsdoc-syntax">= {
+                </span><span class="jsdoc-var">source</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">copy</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.copy </span><span class="jsdoc-syntax">|| (</span><span class="jsdoc-var">this.allowCopy </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">e.ctrlKey</span><span class="jsdoc-syntax">),
+                </span><span class="jsdoc-var">nodes</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">selNodes</span><span class="jsdoc-syntax">,
+                </span><span class="jsdoc-var">records</span><span class="jsdoc-syntax">: []
+                       };
+                       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">selectedIndices </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getSelectedIndexes</span><span class="jsdoc-syntax">();
+                       </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">selectedIndices.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
+                               </span><span class="jsdoc-var">dragData.records.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.store.getAt</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">selectedIndices</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]));
+                       }
+                       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">selNodes.length </span><span class="jsdoc-syntax">== 1) {
+                               </span><span class="jsdoc-var">dragData.ddel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">target.cloneNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);  </span><span class="jsdoc-comment">// the div element
+                       </span><span class="jsdoc-syntax">} </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+                               </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">div </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// create the multi element drag &quot;ghost&quot;
+                               </span><span class="jsdoc-var">div.className </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'multi-proxy'</span><span class="jsdoc-syntax">;
+                               </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">selNodes.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
+                                       </span><span class="jsdoc-var">div.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">selNodes</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.cloneNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">));
+                               }
+                               </span><span class="jsdoc-var">dragData.ddel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">div</span><span class="jsdoc-syntax">;
+                       }
+            </span><span class="jsdoc-comment">//console.log(dragData)
+            //console.log(dragData.ddel.innerHTML)
+                       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">dragData</span><span class="jsdoc-syntax">;
+               }
+        </span><span class="jsdoc-comment">//console.log('nodragData')
+               </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+    },
+    
+</span><span class="jsdoc-comment">/** Specify to which ddGroup items in this DDView may be dragged. */
+    </span><span class="jsdoc-var">setDraggable</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ddGroup</span><span class="jsdoc-syntax">) {
+       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ddGroup </span><span class="jsdoc-keyword">instanceof </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">) {
+               </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ddGroup</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.setDraggable</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+               </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+       }
+       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dragZone</span><span class="jsdoc-syntax">) {
+               </span><span class="jsdoc-var">this.dragZone.addToGroup</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ddGroup</span><span class="jsdoc-syntax">);
+       } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+                       </span><span class="jsdoc-var">this.dragZone </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.dd.DragZone</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getEl</span><span class="jsdoc-syntax">(), {
+                               </span><span class="jsdoc-var">containerScroll</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+                               </span><span class="jsdoc-var">ddGroup</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">ddGroup 
+
+                       </span><span class="jsdoc-syntax">});
+</span><span class="jsdoc-comment">//                  Draggability implies selection. DragZone's mousedown selects the element.
+                       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.multiSelect</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-var">this.singleSelect </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">; }
+
+</span><span class="jsdoc-comment">//                  Wire the DragZone's handlers up to methods in *this*
+                       </span><span class="jsdoc-var">this.dragZone.getDragData </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getDragData.createDelegate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+               }
+    },
+
+</span><span class="jsdoc-comment">/** Specify from which ddGroup this DDView accepts drops. */
+    </span><span class="jsdoc-var">setDroppable</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ddGroup</span><span class="jsdoc-syntax">) {
+       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ddGroup </span><span class="jsdoc-keyword">instanceof </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">) {
+               </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ddGroup</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.setDroppable</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+               </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+       }
+       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dropZone</span><span class="jsdoc-syntax">) {
+               </span><span class="jsdoc-var">this.dropZone.addToGroup</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ddGroup</span><span class="jsdoc-syntax">);
+       } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+                       </span><span class="jsdoc-var">this.dropZone </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.dd.DropZone</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getEl</span><span class="jsdoc-syntax">(), {
+                               </span><span class="jsdoc-var">containerScroll</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+                               </span><span class="jsdoc-var">ddGroup</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">ddGroup
+                       </span><span class="jsdoc-syntax">});
+
+</span><span class="jsdoc-comment">//                  Wire the DropZone's handlers up to methods in *this*
+                       </span><span class="jsdoc-var">this.dropZone.getTargetFromEvent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getTargetFromEvent.createDelegate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+                       </span><span class="jsdoc-var">this.dropZone.onNodeEnter </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.onNodeEnter.createDelegate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+                       </span><span class="jsdoc-var">this.dropZone.onNodeOver </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.onNodeOver.createDelegate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+                       </span><span class="jsdoc-var">this.dropZone.onNodeOut </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.onNodeOut.createDelegate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+                       </span><span class="jsdoc-var">this.dropZone.onNodeDrop </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.onNodeDrop.createDelegate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+               }
+    },
+
+</span><span class="jsdoc-comment">/** Decide whether to drop above or below a View node. */
+    </span><span class="jsdoc-var">getDropPoint </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">){
+       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">this.el.dom</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">&quot;above&quot;</span><span class="jsdoc-syntax">; }
+               </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.lib.Dom.getY</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">b </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">n.offsetHeight</span><span class="jsdoc-syntax">;
+               </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">+ (</span><span class="jsdoc-var">b </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">) / 2;
+               </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.lib.Event.getPageY</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+               </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">y </span><span class="jsdoc-syntax">&lt;= </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">) {
+                       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">&quot;above&quot;</span><span class="jsdoc-syntax">;
+               }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
+                       </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">&quot;below&quot;</span><span class="jsdoc-syntax">;
+               }
+    },
+
+    </span><span class="jsdoc-var">onNodeEnter </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">){
+               </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+    },
+    
+    </span><span class="jsdoc-var">onNodeOver </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">){
+               </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">pt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getDropPoint</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">);
+               </span><span class="jsdoc-comment">// set the insert point style on the target node
+               </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">dragElClass </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.dropNotAllowed</span><span class="jsdoc-syntax">;
+               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pt</span><span class="jsdoc-syntax">) {
+                       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">targetElClass</span><span class="jsdoc-syntax">;
+                       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pt </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;above&quot;</span><span class="jsdoc-syntax">){
+                               </span><span class="jsdoc-var">dragElClass </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n.previousSibling </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">&quot;x-tree-drop-ok-between&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;x-tree-drop-ok-above&quot;</span><span class="jsdoc-syntax">;
+                               </span><span class="jsdoc-var">targetElClass </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;x-view-drag-insert-above&quot;</span><span class="jsdoc-syntax">;
+                       } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+                               </span><span class="jsdoc-var">dragElClass </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n.nextSibling </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">&quot;x-tree-drop-ok-between&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;x-tree-drop-ok-below&quot;</span><span class="jsdoc-syntax">;
+                               </span><span class="jsdoc-var">targetElClass </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;x-view-drag-insert-below&quot;</span><span class="jsdoc-syntax">;
+                       }
+                       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.lastInsertClass </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">targetElClass</span><span class="jsdoc-syntax">){
+                               </span><span class="jsdoc-var">Roo.fly</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replaceClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.lastInsertClass</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">targetElClass</span><span class="jsdoc-syntax">);
+                               </span><span class="jsdoc-var">this.lastInsertClass </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">targetElClass</span><span class="jsdoc-syntax">;
+                       }
+               }
+               </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">dragElClass</span><span class="jsdoc-syntax">;
+       },
+
+    </span><span class="jsdoc-var">onNodeOut </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">){
+               </span><span class="jsdoc-var">this.removeDropIndicators</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">);
+    },
+
+    </span><span class="jsdoc-var">onNodeDrop </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">){
+       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;drop&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">) === </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">) {
+               </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+       }
+       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">pt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getDropPoint</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">);
+               </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">insertAt </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-var">n </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">this.el.dom</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">this.nodes.length </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">n.nodeIndex</span><span class="jsdoc-syntax">;
+               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pt </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;below&quot;</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-var">insertAt</span><span class="jsdoc-syntax">++; }
+               </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">data.records.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
+                       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">data.records</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
+                       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">dup </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.store.getById</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r.id</span><span class="jsdoc-syntax">);
+                       </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dup </span><span class="jsdoc-syntax">&amp;&amp; (</span><span class="jsdoc-var">dd </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">this.dragZone</span><span class="jsdoc-syntax">)) {
+                               </span><span class="jsdoc-var">Roo.fly</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.store.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dup</span><span class="jsdoc-syntax">)))</span><span class="jsdoc-var">.frame</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;red&quot;</span><span class="jsdoc-syntax">, 1);
+                       } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+                               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">data.copy</span><span class="jsdoc-syntax">) {
+                                       </span><span class="jsdoc-var">this.store.insert</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">insertAt</span><span class="jsdoc-syntax">++, </span><span class="jsdoc-var">r.copy</span><span class="jsdoc-syntax">());
+                               } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+                                       </span><span class="jsdoc-var">data.source.isDirtyFlag </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
+                                       </span><span class="jsdoc-var">r.store.remove</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">);
+                                       </span><span class="jsdoc-var">this.store.insert</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">insertAt</span><span class="jsdoc-syntax">++, </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">);
+                               }
+                               </span><span class="jsdoc-var">this.isDirtyFlag </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
+                       }
+               }
+               </span><span class="jsdoc-var">this.dragZone.cachedTarget </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
+               </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
+    },
+
+    </span><span class="jsdoc-var">removeDropIndicators </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">){
+               </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">){
+                       </span><span class="jsdoc-var">Roo.fly</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.removeClass</span><span class="jsdoc-syntax">([
+                               </span><span class="jsdoc-string">&quot;x-view-drag-insert-above&quot;</span><span class="jsdoc-syntax">,
+                               </span><span class="jsdoc-string">&quot;x-view-drag-insert-below&quot;</span><span class="jsdoc-syntax">]);
+                       </span><span class="jsdoc-var">this.lastInsertClass </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;_noclass&quot;</span><span class="jsdoc-syntax">;
+               }
+    },
+
+</span><span class="jsdoc-comment">/**
+ *     Utility method. Add a delete option to the DDView's context menu.
+ *     @param {String} imageUrl The URL of the &quot;delete&quot; icon image.
+ */
+       </span><span class="jsdoc-var">setDeletable</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">imageUrl</span><span class="jsdoc-syntax">) {
+               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.singleSelect </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">this.multiSelect</span><span class="jsdoc-syntax">) {
+                       </span><span class="jsdoc-var">this.singleSelect </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
+               }
+               </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getContextMenu</span><span class="jsdoc-syntax">();
+               </span><span class="jsdoc-var">this.contextMenu.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;itemclick&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">) {
+                       </span><span class="jsdoc-keyword">switch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item.id</span><span class="jsdoc-syntax">) {
+                               </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">&quot;delete&quot;</span><span class="jsdoc-syntax">:
+                                       </span><span class="jsdoc-var">this.remove</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getSelectedIndexes</span><span class="jsdoc-syntax">());
+                                       </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
+                       }
+               }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+               </span><span class="jsdoc-var">this.contextMenu.add</span><span class="jsdoc-syntax">({
+                       </span><span class="jsdoc-var">icon</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">imageUrl</span><span class="jsdoc-syntax">,
+                       </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;delete&quot;</span><span class="jsdoc-syntax">,
+                       </span><span class="jsdoc-var">text</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'Delete'
+               </span><span class="jsdoc-syntax">});
+       },
+       
+</span><span class="jsdoc-comment">/** Return the context menu for this DDView. */
+       </span><span class="jsdoc-var">getContextMenu</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
+               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.contextMenu</span><span class="jsdoc-syntax">) {
+</span><span class="jsdoc-comment">//                  Create the View's context menu
+                       </span><span class="jsdoc-var">this.contextMenu </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.menu.Menu</span><span class="jsdoc-syntax">({
+                               </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.id </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;-contextmenu&quot;
+                       </span><span class="jsdoc-syntax">});
+                       </span><span class="jsdoc-var">this.el.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;contextmenu&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.showContextMenu</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+               }
+               </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.contextMenu</span><span class="jsdoc-syntax">;
+       },
+       
+       </span><span class="jsdoc-var">disableContextMenu</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
+               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.contextMenu</span><span class="jsdoc-syntax">) {
+                       </span><span class="jsdoc-var">this.el.un</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;contextmenu&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.showContextMenu</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
+               }
+       },
+
+       </span><span class="jsdoc-var">showContextMenu</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">) {
+        </span><span class="jsdoc-var">item </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.findItemFromChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.getTarget</span><span class="jsdoc-syntax">());
+               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">) {
+                       </span><span class="jsdoc-var">e.stopEvent</span><span class="jsdoc-syntax">();
+                       </span><span class="jsdoc-var">this.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">this.multiSelect </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">e.ctrlKey</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
+                       </span><span class="jsdoc-var">this.contextMenu.showAt</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.getXY</span><span class="jsdoc-syntax">());
+           }
+    },
+
+</span><span class="jsdoc-comment">/**
+ *     Remove {@link Roo.data.Record}s at the specified indices.
+ *     @param {Array/Number} selectedIndices The index (or Array of indices) of Records to remove.
+ */
+    </span><span class="jsdoc-var">remove</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">selectedIndices</span><span class="jsdoc-syntax">) {
+               </span><span class="jsdoc-var">selectedIndices </span><span class="jsdoc-syntax">= []</span><span class="jsdoc-var">.concat</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">selectedIndices</span><span class="jsdoc-syntax">);
+               </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">selectedIndices.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
+                       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">rec </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.store.getAt</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">selectedIndices</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
+                       </span><span class="jsdoc-var">this.store.remove</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">rec</span><span class="jsdoc-syntax">);
+               }
+    },
+
+</span><span class="jsdoc-comment">/**
+ *     Double click fires the event, but also, if this is draggable, and there is only one other
+ *     related DropZone, it transfers the selected node.
+ */
+    </span><span class="jsdoc-var">onDblClick </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">item </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.findItemFromChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.getTarget</span><span class="jsdoc-syntax">());
+        </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">){
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;dblclick&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) === </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">) {
+               </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+            }
+            </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dragGroup</span><span class="jsdoc-syntax">) {
+                   </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">targets </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.dd.DragDropMgr.getRelated</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dragZone</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
+                   </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">targets.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dropZone</span><span class="jsdoc-syntax">) &gt; -1) {
+                           </span><span class="jsdoc-var">targets.remove</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dropZone</span><span class="jsdoc-syntax">);
+                               }
+                   </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">targets.length </span><span class="jsdoc-syntax">== 1) {
+                                       </span><span class="jsdoc-var">this.dragZone.cachedTarget </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
+                       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">targets</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.getEl</span><span class="jsdoc-syntax">());
+                       </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">box </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">el.getBox</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
+                       </span><span class="jsdoc-var">targets</span><span class="jsdoc-syntax">[0]</span><span class="jsdoc-var">.onNodeDrop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.dom</span><span class="jsdoc-syntax">, {
+                               </span><span class="jsdoc-var">target</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">el.dom</span><span class="jsdoc-syntax">,
+                               </span><span class="jsdoc-var">xy</span><span class="jsdoc-syntax">: [</span><span class="jsdoc-var">box.x</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">box.y </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">box.height </span><span class="jsdoc-syntax">- 1]
+                       }, </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.getDragData</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">));
+                   }
+               }
+        }
+    },
+    
+    </span><span class="jsdoc-var">handleSelection</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
+               </span><span class="jsdoc-var">this.dragZone.cachedTarget </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
+        </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">item </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.findItemFromChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.getTarget</span><span class="jsdoc-syntax">());
+        </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">) {
+               </span><span class="jsdoc-var">this.clearSelections</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
+               </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+        }
+               </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item </span><span class="jsdoc-syntax">&amp;&amp; (</span><span class="jsdoc-var">this.multiSelect </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.singleSelect</span><span class="jsdoc-syntax">)){
+                       </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.multiSelect </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">e.shiftKey </span><span class="jsdoc-syntax">&amp;&amp; (!</span><span class="jsdoc-var">e.ctrlKey</span><span class="jsdoc-syntax">) &amp;&amp; </span><span class="jsdoc-var">this.lastSelection</span><span class="jsdoc-syntax">){
+                               </span><span class="jsdoc-var">this.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getNodes</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.lastSelection</span><span class="jsdoc-syntax">), </span><span class="jsdoc-var">item.nodeIndex</span><span class="jsdoc-syntax">), </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
+                       }</span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.isSelected</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.getNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">)) &amp;&amp; </span><span class="jsdoc-var">e.ctrlKey</span><span class="jsdoc-syntax">){
+                               </span><span class="jsdoc-var">this.unselect</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">);
+                       } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+                               </span><span class="jsdoc-var">this.select</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.multiSelect </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">e.ctrlKey</span><span class="jsdoc-syntax">);
+                               </span><span class="jsdoc-var">this.lastSelection </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">;
+                       }
+               }
+    },
+
+    </span><span class="jsdoc-var">onItemClick </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
+               </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;beforeclick&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">item</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) === </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
+                       </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+               }
+               </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
+    },
+
+    </span><span class="jsdoc-var">unselect </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">nodeInfo</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">suppressEvent</span><span class="jsdoc-syntax">){
+               </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">nodeInfo</span><span class="jsdoc-syntax">);
+               </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.isSelected</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">)){
+                       </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;beforeselect&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.selections</span><span class="jsdoc-syntax">) !== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
+                               </span><span class="jsdoc-var">Roo.fly</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.removeClass</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.selectedClass</span><span class="jsdoc-syntax">);
+                               </span><span class="jsdoc-var">this.selections.remove</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
+                               </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">suppressEvent</span><span class="jsdoc-syntax">){
+                                       </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;selectionchange&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.selections</span><span class="jsdoc-syntax">);
+                               }
+                       }
+               }
+    }
+});
+</span></code></body></html>
\ No newline at end of file