summaryrefslogtreecommitdiff
path: root/js/dojo-1.6/dojox/mobile/TabContainer.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/dojo-1.6/dojox/mobile/TabContainer.js')
-rw-r--r--js/dojo-1.6/dojox/mobile/TabContainer.js162
1 files changed, 162 insertions, 0 deletions
diff --git a/js/dojo-1.6/dojox/mobile/TabContainer.js b/js/dojo-1.6/dojox/mobile/TabContainer.js
new file mode 100644
index 0000000..170498c
--- /dev/null
+++ b/js/dojo-1.6/dojox/mobile/TabContainer.js
@@ -0,0 +1,162 @@
+/*
+ Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dojox.mobile.TabContainer"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.mobile.TabContainer"] = true;
+dojo.provide("dojox.mobile.TabContainer");
+
+dojo.require("dojox.mobile");
+
+// Deprecated. Use dojox.mobile.TabBar instead.
+dojo.declare(
+ "dojox.mobile.TabContainer",
+ dijit._WidgetBase,
+{
+ iconBase: "",
+ iconPos: "",
+ fixedHeader: false,
+
+ constructor: function(){
+ dojo.deprecated("dojox.mobile.TabContainer is deprecated", "use dojox.mobile.TabBar instead", 2.0);
+ },
+
+ buildRendering: function(){
+ var node = this.domNode = this.srcNodeRef;
+ node.className = "mblTabContainer";
+ var headerNode = this.tabHeaderNode = dojo.doc.createElement("DIV");
+ var paneNode = this.containerNode = dojo.doc.createElement("DIV");
+
+ // reparent
+ for(var i = 0, len = node.childNodes.length; i < len; i++){
+ paneNode.appendChild(node.removeChild(node.firstChild));
+ }
+
+ headerNode.className = "mblTabPanelHeader";
+ headerNode.align = "center";
+ if(this.fixedHeader){
+ var view = dijit.getEnclosingWidget(this.domNode.parentNode); // parentNode is null if created programmatically
+ view.domNode.insertBefore(headerNode, view.domNode.firstChild);
+ dojo.style(headerNode, {
+ position: "absolute",
+ width: "100%",
+ top: "0px",
+ zIndex: "1"
+ });
+ view.fixedHeader = headerNode;
+ }else{
+ node.appendChild(headerNode);
+ }
+ paneNode.className = "mblTabPanelPane";
+ node.appendChild(paneNode);
+ },
+
+ startup: function(){
+ this.createTabButtons();
+ this.inherited(arguments);
+ },
+
+ createTabButtons: function(){
+ var div = dojo.doc.createElement("DIV");
+ div.align = "center";
+ var tbl = dojo.doc.createElement("TABLE");
+ var cell = tbl.insertRow(-1).insertCell(-1);
+ var children = this.containerNode.childNodes;
+ for(var i = 0; i < children.length; i++){
+ var pane = children[i];
+ if(pane.nodeType != 1){ continue; }
+ var widget = dijit.byNode(pane);
+ if(widget.selected || !this._selectedPane){
+ this._selectedPane = widget;
+ }
+ pane.style.display = "none";
+ var tab = dojo.doc.createElement("DIV");
+ tab.className = "mblTabButton";
+ if(widget.icon){
+ var imgDiv = dojo.create("DIV");
+ var img = dojo.create("IMG");
+ imgDiv.className = "mblTabButtonImgDiv";
+ img.src = widget.icon;
+ dojox.mobile.setupIcon(img, widget.iconPos);
+ imgDiv.appendChild(img);
+ tab.appendChild(imgDiv);
+ }
+ tab.appendChild(dojo.doc.createTextNode(widget.label));
+ tab.pane = widget;
+ widget.tab = tab;
+ this.connect(tab, "onclick", "onTabClick");
+ cell.appendChild(tab);
+ }
+ div.appendChild(tbl);
+ this.tabHeaderNode.appendChild(div);
+ this.selectTab(this._selectedPane.tab);
+ },
+
+ selectTab: function(/*DomNode*/tab){
+ this._selectedPane.domNode.style.display = "none";
+ dojo.removeClass(this._selectedPane.tab, "mblTabButtonSelected");
+ this._selectedPane = tab.pane;
+ this._selectedPane.domNode.style.display = "";
+ dojo.addClass(tab, "mblTabButtonSelected");
+ if(dojo.isBB){
+ var ref = tab.nextSibling;
+ tab.parentNode.insertBefore(tab.parentNode.removeChild(tab), ref);
+ }
+ var view = dijit.getEnclosingWidget(this.domNode.parentNode);
+ if(this.fixedHeader){
+ // This widget stacks multiple panes and controls their visibility.
+ // Each pane cannot have its own scroll position status, because
+ // the entire widget scrolls.
+ // When in the fixedHeader mode, the user can always select a tab
+ // even when the current pane is scrolled down to the bottom.
+ // Even in such cases, the next page should be shown from the top.
+ if(view && view.scrollTo){
+ view.scrollTo({y:0});
+ }
+ }
+ view.flashScrollBar && view.flashScrollBar();
+ },
+
+ onTabClick: function(e){
+ var tab = e.currentTarget;
+ dojo.addClass(tab, "mblTabButtonHighlighted");
+ setTimeout(function(){
+ dojo.removeClass(tab, "mblTabButtonHighlighted");
+ }, 200);
+ this.selectTab(tab);
+ }
+});
+
+dojo.declare(
+ "dojox.mobile.TabPane",
+ dijit._WidgetBase,
+{
+ label: "",
+ icon: "",
+ iconPos: "",
+ selected: false,
+
+ inheritParams: function(){
+ var parent = this.getParentWidget();
+ if(parent){
+ if(!this.icon){ this.icon = parent.iconBase; }
+ if(!this.iconPos){ this.iconPos = parent.iconPos; }
+ }
+ },
+
+ buildRendering: function(){
+ this.inheritParams();
+ this.domNode = this.containerNode = this.srcNodeRef || dojo.doc.createElement("DIV");
+ this.domNode.className = "mblTabPane";
+ },
+
+ getParentWidget: function(){
+ var ref = this.srcNodeRef || this.domNode;
+ return ref && ref.parentNode ? dijit.getEnclosingWidget(ref.parentNode) : null;
+ }
+});
+
+}