Blame | Last modification | View Log | RSS feed
if(!dojo._hasResource["dijit._tree.dndSelector"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dijit._tree.dndSelector"] = true;dojo.provide("dijit._tree.dndSelector");dojo.require("dojo.dnd.common");dojo.require("dijit._tree.dndContainer");dojo.declare("dijit._tree.dndSelector",dijit._tree.dndContainer,{constructor: function(tree, params){this.selection={};this.anchor = null;this.simpleSelection=false;this.events.push(dojo.connect(this.tree.domNode, "onmousedown", this,"onMouseDown"),dojo.connect(this.tree.domNode, "onmouseup", this,"onMouseUp"));},// object attributes (for markup)singular: false, // is singular property// methodsgetSelectedItems: function(){var selectedItems = []for (var i in this.selection){selectedItems.push(dijit.getEnclosingWidget(this.selection[i]).item);}return selectedItems;},getSelectedNodes: function(){return this.selection;},selectNone: function(){// summary: unselects all itemsreturn this._removeSelection()._removeAnchor(); // self},insertItems: function(item, parent){// summary: inserts new data items (see Container's insertNodes method for details)//we actually need to add things to the store here instead of adding noes to the tree directly},destroy: function(){// summary: prepares the object to be garbage-collecteddojo.dnd.Selector.superclass.destroy.call(this);this.selection = this.anchor = null;},// mouse eventsonMouseDown: function(e){// summary: event processor for onmousedown// e: Event: mouse eventif(!this.current){ return; }var item = dijit.getEnclosingWidget(this.current).itemvar id = this.tree.store.getIdentity(item);if (!this.current.id) {this.current.id=id;}if (!this.current.type) {this.current.type="data";}if(!this.singular && !dojo.dnd.getCopyKeyState(e) && !e.shiftKey && (this.current.id in this.selection)){this.simpleSelection = true;dojo.stopEvent(e);return;}if(this.singular){if(this.anchor == this.current){if(dojo.dnd.getCopyKeyState(e)){this.selectNone();}}else{this.selectNone();this.anchor = this.current;this._addItemClass(this.anchor, "Anchor");this.selection[this.current.id] = this.current;}}else{if(!this.singular && e.shiftKey){if (dojo.dnd.getCopyKeyState(e)){//TODO add range to selection}else{//TODO select new range from anchor}}else{if(dojo.dnd.getCopyKeyState(e)){if(this.anchor == this.current){delete this.selection[this.anchor.id];this._removeAnchor();}else{if(this.current.id in this.selection){this._removeItemClass(this.current, "Selected");delete this.selection[this.current.id];}else{if(this.anchor){this._removeItemClass(this.anchor, "Anchor");this._addItemClass(this.anchor, "Selected");}this.anchor = this.current;this._addItemClass(this.current, "Anchor");this.selection[this.current.id] = this.current;}}}else{var item = dijit.getEnclosingWidget(this.current).itemvar id = this.tree.store.getIdentity(item);if(!(id in this.selection)){this.selectNone();this.anchor = this.current;this._addItemClass(this.current, "Anchor");this.selection[id] = this.current;}}}}dojo.stopEvent(e);},onMouseMove: function() {},onOverEvent: function() {this.onmousemoveEvent = dojo.connect(this.node, "onmousemove", this, "onMouseMove");},onMouseUp: function(e){// summary: event processor for onmouseup// e: Event: mouse eventif(!this.simpleSelection){ return; }this.simpleSelection = false;this.selectNone();if(this.current){this.anchor = this.current;this._addItemClass(this.anchor, "Anchor");this.selection[this.current.id] = this.current;}},_removeSelection: function(){// summary: unselects all itemsvar e = dojo.dnd._empty;for(var i in this.selection){if(i in e){ continue; }var node = dojo.byId(i);if(node){ this._removeItemClass(node, "Selected"); }}this.selection = {};return this; // self},_removeAnchor: function(){if(this.anchor){this._removeItemClass(this.anchor, "Anchor");this.anchor = null;}return this; // self}});}