]>
git.wh0rd.org - tt-rss.git/blob - lib/dijit/layout/SplitContainer.js
2 define("dijit/layout/SplitContainer",["dojo/_base/array","dojo/cookie","dojo/_base/declare","dojo/dom","dojo/dom-class","dojo/dom-construct","dojo/dom-geometry","dojo/dom-style","dojo/_base/event","dojo/_base/kernel","dojo/_base/lang","dojo/on","dojo/_base/sniff","dojo/_base/window","../registry","../_WidgetBase","./_LayoutWidget"],function(_1
,_2
,_3
,_4
,_5
,_6
,_7
,_8
,_9
,_a
,_b
,on
,_c
,_d
,_e
,_f
,_10
){_b
.extend(_f
,{sizeMin
:10,sizeShare
:10});return _3("dijit.layout.SplitContainer",_10
,{constructor:function(){_a
.deprecated("dijit.layout.SplitContainer is deprecated","use BorderContainer with splitter instead",2);},activeSizing
:false,sizerWidth
:7,orientation
:"horizontal",persist
:true,baseClass
:"dijitSplitContainer",postMixInProperties:function(){this.inherited("postMixInProperties",arguments
);this.isHorizontal
=(this.orientation
=="horizontal");},postCreate:function(){this.inherited(arguments
);this.sizers
=[];if(_c("mozilla")){this.domNode
.style
.overflow
="-moz-scrollbars-none";}if(typeof this.sizerWidth
=="object"){try{this.sizerWidth
=parseInt(this.sizerWidth
.toString());}catch(e
){this.sizerWidth
=7;}}var _11
=_d
.doc
.createElement("div");this.virtualSizer
=_11
;_11
.style
.position
="relative";_11
.style
.zIndex
=10;_11
.className
=this.isHorizontal
?"dijitSplitContainerVirtualSizerH":"dijitSplitContainerVirtualSizerV";this.domNode
.appendChild(_11
);_4
.setSelectable(_11
,false);},destroy:function(){delete this.virtualSizer
;if(this._ownconnects
){var h
;while(h
=this._ownconnects
.pop()){h
.remove();}}this.inherited(arguments
);},startup:function(){if(this._started
){return;}_1
.forEach(this.getChildren(),function(_12
,i
,_13
){this._setupChild(_12
);if(i
<_13
.length
-1){this._addSizer();}},this);if(this.persist
){this._restoreState();}this.inherited(arguments
);},_setupChild:function(_14
){this.inherited(arguments
);_14
.domNode
.style
.position
="absolute";_5
.add(_14
.domNode
,"dijitSplitPane");},_onSizerMouseDown:function(e
){if(e
.target
.id
){for(var i
=0;i
<this.sizers
.length
;i
++){if(this.sizers
[i
].id
==e
.target
.id
){break;}}if(i
<this.sizers
.length
){this.beginSizing(e
,i
);}}},_addSizer:function(_15
){_15
=_15
===undefined?this.sizers
.length
:_15
;var _16
=_d
.doc
.createElement("div");_16
.id
=_e
.getUniqueId("dijit_layout_SplitterContainer_Splitter");this.sizers
.splice(_15
,0,_16
);this.domNode
.appendChild(_16
);_16
.className
=this.isHorizontal
?"dijitSplitContainerSizerH":"dijitSplitContainerSizerV";var _17
=_d
.doc
.createElement("div");_17
.className
="thumb";_16
.appendChild(_17
);this.connect(_16
,"onmousedown","_onSizerMouseDown");_4
.setSelectable(_16
,false);},removeChild:function(_18
){if(this.sizers
.length
){var i
=_1
.indexOf(this.getChildren(),_18
);if(i
!=-1){if(i
==this.sizers
.length
){i
--;}_6
.destroy(this.sizers
[i
]);this.sizers
.splice(i
,1);}}this.inherited(arguments
);if(this._started
){this.layout();}},addChild:function(_19
,_1a
){this.inherited(arguments
);if(this._started
){var _1b
=this.getChildren();if(_1b
.length
>1){this._addSizer(_1a
);}this.layout();}},layout:function(){this.paneWidth
=this._contentBox
.w
;this.paneHeight
=this._contentBox
.h
;var _1c
=this.getChildren();if(!_1c
.length
){return;}var _1d
=this.isHorizontal
?this.paneWidth
:this.paneHeight
;if(_1c
.length
>1){_1d
-=this.sizerWidth
*(_1c
.length
-1);}var _1e
=0;_1
.forEach(_1c
,function(_1f
){_1e
+=_1f
.sizeShare
;});var _20
=_1d
/_1e;var _21=0;_1.forEach(_1c.slice(0,_1c.length-1),function(_22){var _23=Math.round(_20*_22.sizeShare);_22.sizeActual=_23;_21+=_23;});_1c[_1c.length-1].sizeActual=_1d-_21;this._checkSizes();var pos=0;var _24=_1c[0].sizeActual;this._movePanel(_1c[0],pos,_24);_1c[0].position=pos;pos+=_24;if(!this.sizers){return;}_1.some(_1c.slice(1),function(_25,i){if(!this.sizers[i]){return true;}this._moveSlider(this.sizers[i],pos,this.sizerWidth);this.sizers[i].position=pos;pos+=this.sizerWidth;_24=_25.sizeActual;this._movePanel(_25,pos,_24);_25.position=pos;pos+=_24;},this);},_movePanel:function(_26,pos,_27){var box;if(this.isHorizontal){_26.domNode.style.left=pos+"px";_26.domNode.style.top=0;box={w:_27,h:this.paneHeight};if(_26.resize){_26.resize(box);}else{_7.setMarginBox(_26.domNode,box);}}else{_26.domNode.style.left=0;_26.domNode.style.top=pos+"px";box={w:this.paneWidth,h:_27};if(_26.resize){_26.resize(box);}else{_7.setMarginBox(_26.domNode,box);}}},_moveSlider:function(_28,pos,_29){if(this.isHorizontal){_28.style.left=pos+"px";_28.style.top=0;_7.setMarginBox(_28,{w:_29,h:this.paneHeight});}else{_28.style.left=0;_28.style.top=pos+"px";_7.setMarginBox(_28,{w:this.paneWidth,h:_29});}},_growPane:function(_2a,_2b){if(_2a>0){if(_2b.sizeActual>_2b.sizeMin){if((_2b.sizeActual-_2b.sizeMin)>_2a){_2b.sizeActual=_2b.sizeActual-_2a;_2a=0;}else{_2a-=_2b.sizeActual-_2b.sizeMin;_2b.sizeActual=_2b.sizeMin;}}}return _2a;},_checkSizes:function(){var _2c=0;var _2d=0;var _2e=this.getChildren();_1.forEach(_2e,function(_2f){_2d+=_2f.sizeActual;_2c+=_2f.sizeMin;});if(_2c<=_2d){var _30=0;_1.forEach(_2e,function(_31){if(_31.sizeActual<_31.sizeMin){_30+=_31.sizeMin-_31.sizeActual;_31.sizeActual=_31.sizeMin;}});if(_30>0){var _32=this.isDraggingLeft?_2e.reverse():_2e;_1.forEach(_32,function(_33){_30=this._growPane(_30,_33);},this);}}else{_1.forEach(_2e,function(_34){_34.sizeActual=Math.round(_2d*(_34.sizeMin/_2c
));});}},beginSizing:function(e
,i
){var _35
=this.getChildren();this.paneBefore
=_35
[i
];this.paneAfter
=_35
[i
+1];this.isSizing
=true;this.sizingSplitter
=this.sizers
[i
];if(!this.cover
){this.cover
=_6
.create("div",{style
:{position
:"absolute",zIndex
:5,top
:0,left
:0,width
:"100%",height
:"100%"}},this.domNode
);}else{this.cover
.style
.zIndex
=5;}this.sizingSplitter
.style
.zIndex
=6;this.originPos
=_7
.position(_35
[0].domNode
,true);var _36
,_37
;if(this.isHorizontal
){_36
=e
.layerX
||e
.offsetX
||0;_37
=e
.pageX
;this.originPos
=this.originPos
.x
;}else{_36
=e
.layerY
||e
.offsetY
||0;_37
=e
.pageY
;this.originPos
=this.originPos
.y
;}this.startPoint
=this.lastPoint
=_37
;this.screenToClientOffset
=_37
-_36
;this.dragOffset
=this.lastPoint
-this.paneBefore
.sizeActual
-this.originPos
-this.paneBefore
.position
;if(!this.activeSizing
){this._showSizingLine();}this._ownconnects
=[on(_d
.doc
.documentElement
,"mousemove",_b
.hitch(this,"changeSizing")),on(_d
.doc
.documentElement
,"mouseup",_b
.hitch(this,"endSizing"))];_9
.stop(e
);},changeSizing:function(e
){if(!this.isSizing
){return;}this.lastPoint
=this.isHorizontal
?e
.pageX
:e
.pageY
;this.movePoint();if(this.activeSizing
){this._updateSize();}else{this._moveSizingLine();}_9
.stop(e
);},endSizing:function(){if(!this.isSizing
){return;}if(this.cover
){this.cover
.style
.zIndex
=-1;}if(!this.activeSizing
){this._hideSizingLine();}this._updateSize();this.isSizing
=false;if(this.persist
){this._saveState(this);}var h
;while(h
=this._ownconnects
.pop()){h
.remove();}},movePoint:function(){var p
=this.lastPoint
-this.screenToClientOffset
;var a
=p
-this.dragOffset
;a
=this.legaliseSplitPoint(a
);p
=a
+this.dragOffset
;this.lastPoint
=p
+this.screenToClientOffset
;},legaliseSplitPoint:function(a
){a
+=this.sizingSplitter
.position
;this.isDraggingLeft
=!!(a
>0);if(!this.activeSizing
){var min
=this.paneBefore
.position
+this.paneBefore
.sizeMin
;if(a
<min
){a
=min
;}var max
=this.paneAfter
.position
+(this.paneAfter
.sizeActual
-(this.sizerWidth
+this.paneAfter
.sizeMin
));if(a
>max
){a
=max
;}}a
-=this.sizingSplitter
.position
;this._checkSizes();return a
;},_updateSize:function(){var pos
=this.lastPoint
-this.dragOffset
-this.originPos
;var _38
=this.paneBefore
.position
;var _39
=this.paneAfter
.position
+this.paneAfter
.sizeActual
;this.paneBefore
.sizeActual
=pos
-_38
;this.paneAfter
.position
=pos
+this.sizerWidth
;this.paneAfter
.sizeActual
=_39
-this.paneAfter
.position
;_1
.forEach(this.getChildren(),function(_3a
){_3a
.sizeShare
=_3a
.sizeActual
;});if(this._started
){this.layout();}},_showSizingLine:function(){this._moveSizingLine();_7
.setMarginBox(this.virtualSizer
,this.isHorizontal
?{w
:this.sizerWidth
,h
:this.paneHeight
}:{w
:this.paneWidth
,h
:this.sizerWidth
});this.virtualSizer
.style
.display
="block";},_hideSizingLine:function(){this.virtualSizer
.style
.display
="none";},_moveSizingLine:function(){var pos
=(this.lastPoint
-this.startPoint
)+this.sizingSplitter
.position
;_8
.set(this.virtualSizer
,(this.isHorizontal
?"left":"top"),pos
+"px");},_getCookieName:function(i
){return this.id
+"_"+i
;},_restoreState:function(){_1
.forEach(this.getChildren(),function(_3b
,i
){var _3c
=this._getCookieName(i
);var _3d
=_2(_3c
);if(_3d
){var pos
=parseInt(_3d
);if(typeof pos
=="number"){_3b
.sizeShare
=pos
;}}},this);},_saveState:function(){if(!this.persist
){return;}_1
.forEach(this.getChildren(),function(_3e
,i
){_2(this._getCookieName(i
),_3e
.sizeShare
,{expires
:365});},this);}});});