You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
8 lines
4.9 KiB
JavaScript
8 lines
4.9 KiB
JavaScript
/*
|
|
Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
|
|
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
|
see: http://dojotoolkit.org/license for details
|
|
*/
|
|
|
|
//>>built
|
|
define("dojo/dnd/Container",["../main","../Evented","./common","../parser"],function(_1,_2){_1.declare("dojo.dnd.Container",_2,{skipForm:false,constructor:function(_3,_4){this.node=_1.byId(_3);if(!_4){_4={};}this.creator=_4.creator||null;this.skipForm=_4.skipForm;this.parent=_4.dropParent&&_1.byId(_4.dropParent);this.map={};this.current=null;this.containerState="";_1.addClass(this.node,"dojoDndContainer");if(!(_4&&_4._skipStartup)){this.startup();}this.events=[_1.connect(this.node,"onmouseover",this,"onMouseOver"),_1.connect(this.node,"onmouseout",this,"onMouseOut"),_1.connect(this.node,"ondragstart",this,"onSelectStart"),_1.connect(this.node,"onselectstart",this,"onSelectStart")];},creator:function(){},getItem:function(_5){return this.map[_5];},setItem:function(_6,_7){this.map[_6]=_7;},delItem:function(_8){delete this.map[_8];},forInItems:function(f,o){o=o||_1.global;var m=this.map,e=_1.dnd._empty;for(var i in m){if(i in e){continue;}f.call(o,m[i],i,this);}return o;},clearItems:function(){this.map={};},getAllNodes:function(){return _1.query("> .dojoDndItem",this.parent);},sync:function(){var _9={};this.getAllNodes().forEach(function(_a){if(_a.id){var _b=this.getItem(_a.id);if(_b){_9[_a.id]=_b;return;}}else{_a.id=_1.dnd.getUniqueId();}var _c=_a.getAttribute("dndType"),_d=_a.getAttribute("dndData");_9[_a.id]={data:_d||_a.innerHTML,type:_c?_c.split(/\s*,\s*/):["text"]};},this);this.map=_9;return this;},insertNodes:function(_e,_f,_10){if(!this.parent.firstChild){_10=null;}else{if(_f){if(!_10){_10=this.parent.firstChild;}}else{if(_10){_10=_10.nextSibling;}}}if(_10){for(var i=0;i<_e.length;++i){var t=this._normalizedCreator(_e[i]);this.setItem(t.node.id,{data:t.data,type:t.type});this.parent.insertBefore(t.node,_10);}}else{for(var i=0;i<_e.length;++i){var t=this._normalizedCreator(_e[i]);this.setItem(t.node.id,{data:t.data,type:t.type});this.parent.appendChild(t.node);}}return this;},destroy:function(){_1.forEach(this.events,_1.disconnect);this.clearItems();this.node=this.parent=this.current=null;},markupFactory:function(_11,_12,_13){_11._skipStartup=true;return new _13(_12,_11);},startup:function(){if(!this.parent){this.parent=this.node;if(this.parent.tagName.toLowerCase()=="table"){var c=this.parent.getElementsByTagName("tbody");if(c&&c.length){this.parent=c[0];}}}this.defaultCreator=_1.dnd._defaultCreator(this.parent);this.sync();},onMouseOver:function(e){var n=e.relatedTarget;while(n){if(n==this.node){break;}try{n=n.parentNode;}catch(x){n=null;}}if(!n){this._changeState("Container","Over");this.onOverEvent();}n=this._getChildByEvent(e);if(this.current==n){return;}if(this.current){this._removeItemClass(this.current,"Over");}if(n){this._addItemClass(n,"Over");}this.current=n;},onMouseOut:function(e){for(var n=e.relatedTarget;n;){if(n==this.node){return;}try{n=n.parentNode;}catch(x){n=null;}}if(this.current){this._removeItemClass(this.current,"Over");this.current=null;}this._changeState("Container","");this.onOutEvent();},onSelectStart:function(e){if(!this.skipForm||!_1.dnd.isFormElement(e)){_1.stopEvent(e);}},onOverEvent:function(){},onOutEvent:function(){},_changeState:function(_14,_15){var _16="dojoDnd"+_14;var _17=_14.toLowerCase()+"State";_1.replaceClass(this.node,_16+_15,_16+this[_17]);this[_17]=_15;},_addItemClass:function(_18,_19){_1.addClass(_18,"dojoDndItem"+_19);},_removeItemClass:function(_1a,_1b){_1.removeClass(_1a,"dojoDndItem"+_1b);},_getChildByEvent:function(e){var _1c=e.target;if(_1c){for(var _1d=_1c.parentNode;_1d;_1c=_1d,_1d=_1c.parentNode){if(_1d==this.parent&&_1.hasClass(_1c,"dojoDndItem")){return _1c;}}}return null;},_normalizedCreator:function(_1e,_1f){var t=(this.creator||this.defaultCreator).call(this,_1e,_1f);if(!_1.isArray(t.type)){t.type=["text"];}if(!t.node.id){t.node.id=_1.dnd.getUniqueId();}_1.addClass(t.node,"dojoDndItem");return t;}});_1.dnd._createNode=function(tag){if(!tag){return _1.dnd._createSpan;}return function(_20){return _1.create(tag,{innerHTML:_20});};};_1.dnd._createTrTd=function(_21){var tr=_1.create("tr");_1.create("td",{innerHTML:_21},tr);return tr;};_1.dnd._createSpan=function(_22){return _1.create("span",{innerHTML:_22});};_1.dnd._defaultCreatorNodes={ul:"li",ol:"li",div:"div",p:"div"};_1.dnd._defaultCreator=function(_23){var tag=_23.tagName.toLowerCase();var c=tag=="tbody"||tag=="thead"?_1.dnd._createTrTd:_1.dnd._createNode(_1.dnd._defaultCreatorNodes[tag]);return function(_24,_25){var _26=_24&&_1.isObject(_24),_27,_28,n;if(_26&&_24.tagName&&_24.nodeType&&_24.getAttribute){_27=_24.getAttribute("dndData")||_24.innerHTML;_28=_24.getAttribute("dndType");_28=_28?_28.split(/\s*,\s*/):["text"];n=_24;}else{_27=(_26&&_24.data)?_24.data:_24;_28=(_26&&_24.type)?_24.type:["text"];n=(_25=="avatar"?_1.dnd._createSpan:c)(String(_27));}if(!n.id){n.id=_1.dnd.getUniqueId();}return {node:n,data:_27,type:_28};};};return _1.dnd.Container;}); |