]>
git.wh0rd.org - tt-rss.git/blob - lib/dojo/dnd/Container.js
0ab702ede5d18066e5e91f414bd97d01cc3116c0
2 Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
3 Available via Academic Free License >= 2.1 OR the modified BSD license.
4 see: http://dojotoolkit.org/license for details
8 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
;});