diff options
Diffstat (limited to 'lib/dojo/dnd/Selector.js.uncompressed.js')
-rw-r--r-- | lib/dojo/dnd/Selector.js.uncompressed.js | 331 |
1 files changed, 0 insertions, 331 deletions
diff --git a/lib/dojo/dnd/Selector.js.uncompressed.js b/lib/dojo/dnd/Selector.js.uncompressed.js deleted file mode 100644 index ab0d61adb..000000000 --- a/lib/dojo/dnd/Selector.js.uncompressed.js +++ /dev/null @@ -1,331 +0,0 @@ -define("dojo/dnd/Selector", [ - "../_base/array", "../_base/declare", "../_base/event", "../_base/kernel", "../_base/lang", - "../dom", "../dom-construct", "../mouse", "../_base/NodeList", "../on", "../touch", "./common", "./Container" -], function(array, declare, event, kernel, lang, dom, domConstruct, mouse, NodeList, on, touch, dnd, Container){ - -// module: -// dojo/dnd/Selector - -/* - Container item states: - "" - an item is not selected - "Selected" - an item is selected - "Anchor" - an item is selected, and is an anchor for a "shift" selection -*/ - -/*===== -var __SelectorArgs = declare([Container.__ContainerArgs], { - // singular: Boolean - // allows selection of only one element, if true - singular: false, - - // autoSync: Boolean - // autosynchronizes the source with its list of DnD nodes, - autoSync: false -}); -=====*/ - -var Selector = declare("dojo.dnd.Selector", Container, { - // summary: - // a Selector object, which knows how to select its children - - /*===== - // selection: Set<String> - // The set of id's that are currently selected, such that this.selection[id] == 1 - // if the node w/that id is selected. Can iterate over selected node's id's like: - // | for(var id in this.selection) - selection: {}, - =====*/ - - constructor: function(node, params){ - // summary: - // constructor of the Selector - // node: Node||String - // node or node's id to build the selector on - // params: __SelectorArgs? - // a dictionary of parameters - if(!params){ params = {}; } - this.singular = params.singular; - this.autoSync = params.autoSync; - // class-specific variables - this.selection = {}; - this.anchor = null; - this.simpleSelection = false; - // set up events - this.events.push( - on(this.node, touch.press, lang.hitch(this, "onMouseDown")), - on(this.node, touch.release, lang.hitch(this, "onMouseUp")) - ); - }, - - // object attributes (for markup) - singular: false, // is singular property - - // methods - getSelectedNodes: function(){ - // summary: - // returns a list (an array) of selected nodes - var t = new NodeList(); - var e = dnd._empty; - for(var i in this.selection){ - if(i in e){ continue; } - t.push(dom.byId(i)); - } - return t; // NodeList - }, - selectNone: function(){ - // summary: - // unselects all items - return this._removeSelection()._removeAnchor(); // self - }, - selectAll: function(){ - // summary: - // selects all items - this.forInItems(function(data, id){ - this._addItemClass(dom.byId(id), "Selected"); - this.selection[id] = 1; - }, this); - return this._removeAnchor(); // self - }, - deleteSelectedNodes: function(){ - // summary: - // deletes all selected items - var e = dnd._empty; - for(var i in this.selection){ - if(i in e){ continue; } - var n = dom.byId(i); - this.delItem(i); - domConstruct.destroy(n); - } - this.anchor = null; - this.selection = {}; - return this; // self - }, - forInSelectedItems: function(/*Function*/ f, /*Object?*/ o){ - // summary: - // iterates over selected items; - // see `dojo/dnd/Container.forInItems()` for details - o = o || kernel.global; - var s = this.selection, e = dnd._empty; - for(var i in s){ - if(i in e){ continue; } - f.call(o, this.getItem(i), i, this); - } - }, - sync: function(){ - // summary: - // sync up the node list with the data map - - Selector.superclass.sync.call(this); - - // fix the anchor - if(this.anchor){ - if(!this.getItem(this.anchor.id)){ - this.anchor = null; - } - } - - // fix the selection - var t = [], e = dnd._empty; - for(var i in this.selection){ - if(i in e){ continue; } - if(!this.getItem(i)){ - t.push(i); - } - } - array.forEach(t, function(i){ - delete this.selection[i]; - }, this); - - return this; // self - }, - insertNodes: function(addSelected, data, before, anchor){ - // summary: - // inserts new data items (see `dojo/dnd/Container.insertNodes()` method for details) - // addSelected: Boolean - // all new nodes will be added to selected items, if true, no selection change otherwise - // data: Array - // a list of data items, which should be processed by the creator function - // before: Boolean - // insert before the anchor, if true, and after the anchor otherwise - // anchor: Node - // the anchor node to be used as a point of insertion - var oldCreator = this._normalizedCreator; - this._normalizedCreator = function(item, hint){ - var t = oldCreator.call(this, item, hint); - if(addSelected){ - if(!this.anchor){ - this.anchor = t.node; - this._removeItemClass(t.node, "Selected"); - this._addItemClass(this.anchor, "Anchor"); - }else if(this.anchor != t.node){ - this._removeItemClass(t.node, "Anchor"); - this._addItemClass(t.node, "Selected"); - } - this.selection[t.node.id] = 1; - }else{ - this._removeItemClass(t.node, "Selected"); - this._removeItemClass(t.node, "Anchor"); - } - return t; - }; - Selector.superclass.insertNodes.call(this, data, before, anchor); - this._normalizedCreator = oldCreator; - return this; // self - }, - destroy: function(){ - // summary: - // prepares the object to be garbage-collected - Selector.superclass.destroy.call(this); - this.selection = this.anchor = null; - }, - - // mouse events - onMouseDown: function(e){ - // summary: - // event processor for onmousedown - // e: Event - // mouse event - if(this.autoSync){ this.sync(); } - if(!this.current){ return; } - if(!this.singular && !dnd.getCopyKeyState(e) && !e.shiftKey && (this.current.id in this.selection)){ - this.simpleSelection = true; - if(mouse.isLeft(e)){ - // Accept the left button and stop the event. Stopping the event prevents text selection while - // dragging. However, don't stop the event on mobile because that prevents a click event, - // and also prevents scroll (see #15838). - // For IE we don't stop event when multiple buttons are pressed. - event.stop(e); - } - return; - } - if(!this.singular && e.shiftKey){ - if(!dnd.getCopyKeyState(e)){ - this._removeSelection(); - } - var c = this.getAllNodes(); - if(c.length){ - if(!this.anchor){ - this.anchor = c[0]; - this._addItemClass(this.anchor, "Anchor"); - } - this.selection[this.anchor.id] = 1; - if(this.anchor != this.current){ - var i = 0, node; - for(; i < c.length; ++i){ - node = c[i]; - if(node == this.anchor || node == this.current){ break; } - } - for(++i; i < c.length; ++i){ - node = c[i]; - if(node == this.anchor || node == this.current){ break; } - this._addItemClass(node, "Selected"); - this.selection[node.id] = 1; - } - this._addItemClass(this.current, "Selected"); - this.selection[this.current.id] = 1; - } - } - }else{ - if(this.singular){ - if(this.anchor == this.current){ - if(dnd.getCopyKeyState(e)){ - this.selectNone(); - } - }else{ - this.selectNone(); - this.anchor = this.current; - this._addItemClass(this.anchor, "Anchor"); - this.selection[this.current.id] = 1; - } - }else{ - if(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] = 1; - } - } - }else{ - if(!(this.current.id in this.selection)){ - this.selectNone(); - this.anchor = this.current; - this._addItemClass(this.current, "Anchor"); - this.selection[this.current.id] = 1; - } - } - } - } - event.stop(e); - }, - onMouseUp: function(/*===== e =====*/){ - // summary: - // event processor for onmouseup - // e: Event - // mouse event - if(!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] = 1; - } - }, - onMouseMove: function(/*===== e =====*/){ - // summary: - // event processor for onmousemove - // e: Event - // mouse event - this.simpleSelection = false; - }, - - // utilities - onOverEvent: function(){ - // summary: - // this function is called once, when mouse is over our container - this.onmousemoveEvent = on(this.node, touch.move, lang.hitch(this, "onMouseMove")); - }, - onOutEvent: function(){ - // summary: - // this function is called once, when mouse is out of our container - if(this.onmousemoveEvent){ - this.onmousemoveEvent.remove(); - delete this.onmousemoveEvent; - } - }, - _removeSelection: function(){ - // summary: - // unselects all items - var e = dnd._empty; - for(var i in this.selection){ - if(i in e){ continue; } - var node = dom.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 - } -}); - -return Selector; - -}); |