⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tabpanel.js

📁 数据库系统教材中附录的课程设计accomodation宿舍管理系统源码
💻 JS
📖 第 1 页 / 共 2 页
字号:
    // private    onBeforeAdd : function(item){        var existing = item.events ? (this.items.containsKey(item.id) ? item : null) : this.items.get(item);        if(existing){            this.setActiveTab(item);            return false;        }        Ext.TabPanel.superclass.onBeforeAdd.apply(this, arguments);        var es = item.elements;        item.elements = es ? es.replace(',header', '') : es;        item.border = (item.border === true);    },    // private    onRemove : function(tp, item){        Ext.removeNode(this.getTabEl(item));        this.stack.remove(item);        if(item == this.activeTab){            var next = this.stack.next();            if(next){                this.setActiveTab(next);            }else{                this.setActiveTab(0);            }        }        this.delegateUpdates();    },    // private    onBeforeShowItem : function(item){        if(item != this.activeTab){            this.setActiveTab(item);            return false;        }    },    // private    onItemDisabled : function(item){        var el = this.getTabEl(item);        if(el){            Ext.fly(el).addClass('x-item-disabled');        }        this.stack.remove(item);    },    // private    onItemEnabled : function(item){        var el = this.getTabEl(item);        if(el){            Ext.fly(el).removeClass('x-item-disabled');        }    },    // private    onItemTitleChanged : function(item){        var el = this.getTabEl(item);        if(el){            Ext.fly(el).child('span.x-tab-strip-text', true).innerHTML = item.title;        }    },    /**     * Gets the DOM element for a specified tab.     * @param {Panel} tab The tab     * @return {HTMLElement} The DOM node     */    getTabEl : function(item){        return document.getElementById(this.id+'__'+item.id);    },    // private    onResize : function(){        Ext.TabPanel.superclass.onResize.apply(this, arguments);        this.delegateUpdates();    },    /**     * Suspends any internal calculations or scrolling while doing a bulk operation. See {@link #endUpdate}     */    beginUpdate : function(){        this.suspendUpdates = true;    },    /**     * Resumes calculations and scrolling at the end of a bulk operation. See {@link #beginUpdate}     */    endUpdate : function(){        this.suspendUpdates = false;        this.delegateUpdates();    },    /**     * Hides the tab strip item for the passed tab     * @param {Number/String/Panel} item The tab index, id or item     */    hideTabStripItem : function(item){        item = this.getComponent(item);        var el = this.getTabEl(item);        if(el){            el.style.display = 'none';            this.delegateUpdates();        }    },    /**     * Unhides the tab strip item for the passed tab     * @param {Number/String/Panel} item The tab index, id or item     */    unhideTabStripItem : function(item){        item = this.getComponent(item);        var el = this.getTabEl(item);        if(el){            el.style.display = '';            this.delegateUpdates();        }    },    // private    delegateUpdates : function(){        if(this.suspendUpdates){            return;        }        if(this.resizeTabs && this.rendered){            this.autoSizeTabs();        }        if(this.enableTabScroll && this.rendered){            this.autoScrollTabs();        }    },    // private    autoSizeTabs : function(){        var count = this.items.length;        var ow = this.header.dom.offsetWidth;        var aw = this.header.dom.clientWidth;        if(!this.resizeTabs || count < 1 || !aw){ // !aw for display:none            return;        }                var each = Math.max(Math.min(Math.floor((aw-4) / count) - this.tabMargin, this.tabWidth), this.minTabWidth); // -4 for float errors in IE        this.lastTabWidth = each;        var lis = this.stripWrap.dom.getElementsByTagName('li');        for(var i = 0, len = lis.length-1; i < len; i++) { // -1 for the "edge" li            var li = lis[i];            var inner = li.childNodes[1].firstChild.firstChild;            var tw = li.offsetWidth;            var iw = inner.offsetWidth;            inner.style.width = (each - (tw-iw)) + 'px';        }    },    // private    adjustBodyWidth : function(w){        if(this.header){            this.header.setWidth(w);        }        if(this.footer){            this.footer.setWidth(w);        }        return w;    },    /**     * Sets the specified tab as the active tab. This method fires the {@link #beforetabchange} event which     * can return false to cancel the tab change.     * @param {String/Panel} tab The id or tab Panel to activate     */    setActiveTab : function(item){        item = this.getComponent(item);        if(!item || this.fireEvent('beforetabchange', this, item, this.activeTab) === false){            return;        }        if(!this.rendered){            this.activeTab = item;            return;        }        if(this.activeTab != item){            if(this.activeTab){                var oldEl = this.getTabEl(this.activeTab);                if(oldEl){                    Ext.fly(oldEl).removeClass('x-tab-strip-active');                }                this.activeTab.fireEvent('deactivate', this.activeTab);            }            var el = this.getTabEl(item);            Ext.fly(el).addClass('x-tab-strip-active');            this.activeTab = item;            this.stack.add(item);            this.layout.setActiveItem(item);            if(this.scrolling){                this.scrollToTab(item, this.animScroll);            }            item.fireEvent('activate', item);            this.fireEvent('tabchange', this, item);        }    },    /**     * Gets the currently active tab.     * @return {Panel} The active tab     */    getActiveTab : function(){        return this.activeTab || null;    },    /**     * Gets the specified tab by id.     * @param {String} id The tab id     * @return {Panel} The tab     */    getItem : function(item){        return this.getComponent(item);    },    // private    autoScrollTabs : function(){        var count = this.items.length;        var ow = this.header.dom.offsetWidth;        var tw = this.header.dom.clientWidth;        var wrap = this.stripWrap;        var cw = wrap.dom.offsetWidth;        var pos = this.getScrollPos();        var l = this.edge.getOffsetsTo(this.stripWrap)[0] + pos;        if(!this.enableTabScroll || count < 1 || cw < 20){ // 20 to prevent display:none issues            return;        }        if(l <= tw){            wrap.dom.scrollLeft = 0;            wrap.setWidth(tw);            if(this.scrolling){                this.scrolling = false;                this.header.removeClass('x-tab-scrolling');                this.scrollLeft.hide();                this.scrollRight.hide();            }        }else{            if(!this.scrolling){                this.header.addClass('x-tab-scrolling');            }            tw -= wrap.getMargins('lr');            wrap.setWidth(tw > 20 ? tw : 20);            if(!this.scrolling){                if(!this.scrollLeft){                    this.createScrollers();                }else{                    this.scrollLeft.show();                    this.scrollRight.show();                }            }            this.scrolling = true;            if(pos > (l-tw)){ // ensure it stays within bounds                wrap.dom.scrollLeft = l-tw;            }else{ // otherwise, make sure the active tab is still visible                this.scrollToTab(this.activeTab, false);            }            this.updateScrollButtons();        }    },    // private    createScrollers : function(){        var h = this.stripWrap.dom.offsetHeight;        // left        var sl = this.header.insertFirst({            cls:'x-tab-scroller-left'        });        sl.setHeight(h);        sl.addClassOnOver('x-tab-scroller-left-over');        this.leftRepeater = new Ext.util.ClickRepeater(sl, {            interval : this.scrollRepeatInterval,            handler: this.onScrollLeft,            scope: this        });        this.scrollLeft = sl;        // right        var sr = this.header.insertFirst({            cls:'x-tab-scroller-right'        });        sr.setHeight(h);        sr.addClassOnOver('x-tab-scroller-right-over');        this.rightRepeater = new Ext.util.ClickRepeater(sr, {            interval : this.scrollRepeatInterval,            handler: this.onScrollRight,            scope: this        });        this.scrollRight = sr;    },    // private    getScrollWidth : function(){        return this.edge.getOffsetsTo(this.stripWrap)[0] + this.getScrollPos();    },    // private    getScrollPos : function(){        return parseInt(this.stripWrap.dom.scrollLeft, 10) || 0;    },    // private    getScrollArea : function(){        return parseInt(this.stripWrap.dom.clientWidth, 10) || 0;    },    // private    getScrollAnim : function(){        return {duration:this.scrollDuration, callback: this.updateScrollButtons, scope: this};    },    // private    getScrollIncrement : function(){        return this.scrollIncrement || (this.resizeTabs ? this.lastTabWidth+2 : 100);    },    /**     * Scrolls to a particular tab if tab scrolling is enabled     * @param {Panel} item The item to scroll to     * @param {Boolean} animate True to enable animations     */    scrollToTab : function(item, animate){        if(!item){ return; }        var el = this.getTabEl(item);        var pos = this.getScrollPos(), area = this.getScrollArea();        var left = Ext.fly(el).getOffsetsTo(this.stripWrap)[0] + pos;        var right = left + el.offsetWidth;        if(left < pos){            this.scrollTo(left, animate);        }else if(right > (pos + area)){            this.scrollTo(right - area, animate);        }    },    // private    scrollTo : function(pos, animate){        this.stripWrap.scrollTo('left', pos, animate ? this.getScrollAnim() : false);        if(!animate){            this.updateScrollButtons();        }    },    // private    onScrollRight : function(){        var sw = this.getScrollWidth()-this.getScrollArea();        var pos = this.getScrollPos();        var s = Math.min(sw, pos + this.getScrollIncrement());        if(s != pos){            this.scrollTo(s, this.animScroll);        }            },    // private    onScrollLeft : function(){        var pos = this.getScrollPos();        var s = Math.max(0, pos - this.getScrollIncrement());        if(s != pos){            this.scrollTo(s, this.animScroll);        }    },    // private    updateScrollButtons : function(){        var pos = this.getScrollPos();        this.scrollLeft[pos == 0 ? 'addClass' : 'removeClass']('x-tab-scroller-left-disabled');        this.scrollRight[pos >= (this.getScrollWidth()-this.getScrollArea()) ? 'addClass' : 'removeClass']('x-tab-scroller-right-disabled');    }});Ext.reg('tabpanel', Ext.TabPanel);/** * Sets the specified tab as the active tab. This method fires the {@link #beforetabchange} event which * can return false to cancel the tab change. * @param {String/Panel} tab The id or tab Panel to activate * @method activate */Ext.TabPanel.prototype.activate = Ext.TabPanel.prototype.setActiveTab;// private utility class used by TabPanelExt.TabPanel.AccessStack = function(){    var items = [];    return {        add : function(item){            items.push(item);            if(items.length > 10){                items.shift();            }        },        remove : function(item){            var s = [];            for(var i = 0, len = items.length; i < len; i++) {                if(items[i] != item){                    s.push(items[i]);                }            }            items = s;        },        next : function(){            return items.pop();        }    };};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -