/* DynAPI Distribution Explorer Tree class The DynAPI Distribution is distributed under the terms of the GNU LGPL license. Requires: DynLayer, ScrollBar */ function ViewPane(content,x,y,w,h,style){ this.DynLayer = DynLayer; this.DynLayer(null,x,y,w,h); this._showVBar = true; this._showHBar = true; this.addChild(new DynLayer(null),'lyrContent'); this.addChild(new DynLayer(),'lyrCorner'); this.addChild(new ScrollBar('horz',0,0,0,0,0,'ViewPaneScrollBar'),'hscBar'); this.addChild(new ScrollBar('vert',0,0,0,0,0,'ViewPaneScrollBar'),'vscBar'); this.hscBar.addEventListener(ViewPane.ScrollEvents); this.vscBar.addEventListener(ViewPane.ScrollEvents); this.lyrContent.addEventListener(ViewPane.ContentResizeEvent); this.lyrContent.setAutoSize(true,true); this.setContent(content); this.setStyle(style||'ViewPane'); this.onCreate(ViewPane.CreateEvent); }; ViewPane.CreateEvent = function(){ this.renderStyle(); }; ViewPane.ContentResizeEvent = { onresize:function(e){ var o = e.getSource(); var vp = o.parent; vp.renderStyle('resize'); } }; ViewPane.ScrollEvents = { onscroll:function(e){ var o = e.getSource(); var vp = o.parent; var v = o.getValue()*-1; if(o==vp.hscBar) vp.lyrContent.setX(v); else if(o==vp.vscBar) vp.lyrContent.setY(v); vp.invokeEvent('scroll'); } }; var p = dynapi.setPrototype('ViewPane','DynLayer'); // Private p.VPaneOldSetSize = DynLayer.prototype.setSize; // Public p.setSize = function(w,h){ this.VPaneOldSetSize(w,h); this.renderStyle('resize'); }; p.setContent = function(c){ if(c==null) return; var lyr = this.lyrContent; lyr.setLocation(0,0); if(lyr.content) lyr.content.removeFromParent(); if(typeof(c)=='string') lyr.setHTML(c); else { lyr.setHTML(' '); lyr.content = lyr.addChild(c); } }; p.setScrollBars = function(v,h){ this._showVBar=v; this._showHBar=h; this.renderStyle('resize'); }; // Setup ViewPane ScrollBar styles - to prevent getStyle() from calling loadImages() on registered styles use getStyle('name',true) Styles.addStyle('ViewPaneScrollBar',Styles.getStyle('ScrollBar',true));