You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
3.5 KiB
139 lines
3.5 KiB
/* |
|
DynAPI Distribution |
|
PanelBar Widget Class by Daniel Tiru (http://www.tiru.se) |
|
|
|
The DynAPI Distribution is distributed under the terms of the GNU LGPL license. |
|
|
|
requires: DynLayer |
|
*/ |
|
|
|
function PanelBar(menu,content,menuheight,x,y,w,h,minimized) { |
|
this.DynLayer = DynLayer; |
|
this.DynLayer(null,x,y,w,h,null); |
|
|
|
this.x = x; |
|
this.y = y; |
|
this.w = w; |
|
this.h = h; |
|
this._h = h; |
|
this._mnuheight = menuheight; |
|
|
|
if (typeof(menu)=='string') { |
|
this._lyrmnu = new DynLayer(menu); |
|
} else { |
|
this._lyrmnu = menu; |
|
} |
|
if (typeof(content)=='string') { |
|
this._lyrcnt = new DynLayer(content); |
|
} else { |
|
this._lyrcnt = content; |
|
} |
|
|
|
this._minimized = minimized; |
|
this._steps = 5; |
|
this._tmpsteps = 10; |
|
this._tmpcnt=0; |
|
|
|
|
|
this.onPreCreate(PanelBar.PreCreateEvent); |
|
} |
|
|
|
var p = dynapi.setPrototype('PanelBar','DynLayer'); |
|
|
|
p.minimize = function() { |
|
if(this._tmpcnt <= this._tmpsteps-1){ |
|
this._tmpcnt++; |
|
if (this.h-((this.h/this._tmpsteps)*this._tmpcnt) > this._mnuheight) { |
|
this.setHeight(this.h-((this.h/this._tmpsteps)*this._tmpcnt)); |
|
window.setTimeout(this+'.minimize()', 20); |
|
} |
|
else { |
|
this.setHeight(this._mnuheight); |
|
this._tmpcnt=0; |
|
} |
|
} |
|
this.menu.setHTML(this._mnuhtml.replace('{@min}',this._mnuhtmlmax)); |
|
this._minimized=true; |
|
} |
|
|
|
p.maximize = function() { |
|
if(this._tmpcnt <= this._tmpsteps-1){ |
|
this._tmpcnt++; |
|
if ((this._h/this._tmpsteps)*this._tmpcnt>this._mnuheight) { |
|
this.setHeight((this._h/this._tmpsteps)*this._tmpcnt); |
|
} |
|
window.setTimeout(this+'.maximize()', 20); |
|
} |
|
else { |
|
this._tmpcnt=0; |
|
} |
|
this.menu.setHTML(this._mnuhtml.replace('{@min}',this._mnuhtmlmin)); |
|
this._minimized=false; |
|
} |
|
|
|
p.setDraging = function(bol) { |
|
if (bol) { |
|
DragEvent.enableDragEvents(this); |
|
this.content.addEventListener({ |
|
onmousedown:function(e){ |
|
e.preventBubble(); |
|
} |
|
}); |
|
} |
|
else { |
|
DragEvent.disableDragEvents(this); |
|
} |
|
} |
|
|
|
p.setMinMaxImg = function(imgmin,imgmax) { |
|
|
|
if (imgmin!=null&&imgmax!=null) { |
|
this._mnuhtmlmin = replacestr='<a style=\'cursor:hand;\' onclick=\''+this+'.minimize();\'>'+imgmin.getHTML()+'</a>'; |
|
this._mnuhtmlmax = replacestr='<a style=\'cursor:hand;\' onclick=\''+this+'.maximize();\'>'+imgmax.getHTML()+'</a>'; |
|
if (this.menu) { |
|
if (this._minimized) { |
|
this.menu.setHTML(this._mnuhtml.replace('{@min}',this._mnuhtmlmax)); |
|
} |
|
else { |
|
this.menu.setHTML(this._mnuhtml.replace('{@min}',this._mnuhtmlmin)); |
|
} |
|
} |
|
} |
|
} |
|
|
|
p.getMenuLayer = function() { |
|
return this._lyrmnu || this.menu; |
|
} |
|
|
|
p.getContentLayer = function() { |
|
return this._lyrcnt || this.content; |
|
} |
|
|
|
PanelBar.PreCreateEvent = function(e) { |
|
|
|
this.menu = this.addChild(this._lyrmnu); |
|
this.menu.setX(0); |
|
this.menu.setY(0); |
|
this.menu.setWidth(this.w); |
|
this.menu.setHeight(this._mnuheight); |
|
|
|
if (!this._mnuhtml) { |
|
this._mnuhtml = this.menu.getHTML(); |
|
} |
|
if (!this._mnuhtmlmin || !this._mnuhtmlmax) { |
|
this._mnuhtmlmin = replacestr='<a style=\'cursor:hand;\' onclick=\''+this+'.minimize();\'>min</a>'; |
|
this._mnuhtmlmax = replacestr='<a style=\'cursor:hand;\' onclick=\''+this+'.maximize();\'>max</a>'; |
|
} |
|
this.menu.setHTML(this._mnuhtml.replace('{@min}',this._mnuhtmlmin)); |
|
|
|
this.content = this.addChild(this._lyrcnt); |
|
this.content.setX(0); |
|
this.content.setY(this._mnuheight); |
|
this.content.setWidth(this.w); |
|
this.content.setHeight(this.h-this._mnuheight); |
|
if (this._minimized) { |
|
this.setHeight(this._mnuheight); |
|
this.menu.setHTML(this._mnuhtml.replace('{@min}',this._mnuhtmlmax)); |
|
} |
|
|
|
};
|
|
|