dojo.provide("dijit.layout.TabController"); dojo.require("dijit.layout.StackController"); dojo.requireLocalization("dijit", "common"); //TODO: make private for 2.0? dojo.declare("dijit.layout.TabController", dijit.layout.StackController, { // summary: // Set of tabs (the things with titles and a close button, that you click to show a tab panel). // Used internally by `dijit.layout.TabContainer`. // description: // Lets the user select the currently shown pane in a TabContainer or StackContainer. // TabController also monitors the TabContainer, and whenever a pane is // added or deleted updates itself accordingly. // tags: // private templateString: "
", // tabPosition: String // Defines where tabs go relative to the content. // "top", "bottom", "left-h", "right-h" tabPosition: "top", // doLayout: Boolean // TODO: unused, remove doLayout: true, // buttonWidget: String // The name of the tab widget to create to correspond to each page buttonWidget: "dijit.layout._TabButton", _rectifyRtlTabList: function(){ //summary: Rectify the width of all tabs in rtl, otherwise the tab widths are different in IE if(0 >= this.tabPosition.indexOf('-h')){ return; } if(!this.pane2button){ return; } var maxWidth = 0; for(var pane in this.pane2button){ var ow = this.pane2button[pane].innerDiv.scrollWidth; maxWidth = Math.max(maxWidth, ow); } //unify the length of all the tabs for(pane in this.pane2button){ this.pane2button[pane].innerDiv.style.width = maxWidth + 'px'; } } }); dojo.declare("dijit.layout._TabButton", dijit.layout._StackButton, { // summary: // A tab (the thing you click to select a pane). // description: // Contains the title of the pane, and optionally a close-button to destroy the pane. // This is an internal widget and should not be instantiated directly. // tags: // private baseClass: "dijitTab", templatePath: dojo.moduleUrl("dijit.layout","templates/_TabButton.html"), // Override _FormWidget.scrollOnFocus. // Don't scroll the whole tab container into view when the button is focused. scrollOnFocus: false, postCreate: function(){ if(this.closeButton){ dojo.addClass(this.innerDiv, "dijitClosable"); var _nlsResources = dojo.i18n.getLocalization("dijit", "common"); if(this.closeNode){ dojo.attr(this.closeNode,"title", _nlsResources.itemClose); // IE needs title set directly on image dojo.attr(this.closeIcon,"title", _nlsResources.itemClose); } }else{ this.closeNode.style.display="none"; } this.inherited(arguments); dojo.setSelectable(this.containerNode, false); }, _onCloseButtonEnter: function(){ // summary: // Handler when mouse is moved over the close icon (the X) dojo.addClass(this.closeNode, "closeButton-hover"); }, _onCloseButtonLeave: function(){ // summary: // Handler when mouse is moved off the close icon (the X) dojo.removeClass(this.closeNode, "closeButton-hover"); } });