vitro/webapp/web/src/widget/AccordionContainer.js

71 lines
2.1 KiB
JavaScript

/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
http://dojotoolkit.org/community/licensing.shtml
*/
dojo.provide("dojo.widget.AccordionContainer");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.AccordionPane");
dojo.widget.defineWidget(
"dojo.widget.AccordionContainer",
dojo.widget.HtmlWidget,
{
widgetType: "AccordionContainer",
isContainer: true,
labelNodeClass: "",
containerNodeClass: "",
allowCollapse: false,
addChild: function(widget, overrideContainerNode, pos, ref, insertIndex){
if (widget.widgetType != "AccordionPane") {
var wrapper=dojo.widget.createWidget("AccordionPane",{label: widget.label, open: widget.open, labelNodeClass: this.labelNodeClass, containerNodeClass: this.containerNodeClass, allowCollapse: this.allowCollapse });
wrapper.addChild(widget);
this.addWidgetAsDirectChild(wrapper);
this.registerChild(wrapper);
wrapper.setSizes();
return wrapper;
} else {
dojo.html.addClass(widget.containerNode, this.containerNodeClass);
dojo.html.addClass(widget.labelNode, this.labelNodeClass);
this.addWidgetAsDirectChild(widget);
this.registerChild(widget);
widget.setSizes();
return widget;
}
},
postCreate: function() {
var tmpChildren = this.children;
this.children=[];
dojo.html.removeChildren(this.domNode);
dojo.lang.forEach(tmpChildren, dojo.lang.hitch(this,"addChild"));
},
removeChild: function(widget) {
dojo.widget.AccordionContainer.superclass.removeChild.call(this, widget);
if(this.children[0]){
this.children[0].setSizes();
}
},
onResized: function(){
this.children[0].setSizes();
}
}
);
// These arguments can be specified for the children of a Accordion
// Since any widget can be specified as a child, mix them
// into the base widget class. (This is a hack, but it's effective.)
dojo.lang.extend(dojo.widget.Widget, {
label: "",
open: false
});