|
|||||||
![]() |
|
|
Thread Tools |
|
#1
|
||||
|
||||
|
Usage:
plugins: [ Ext.ux.AddTabButton ],
createTab: function() { // Optional function which the plugin uses to create new tabs
return {
title: 'New Tab',
closable: true
};
},
Ext.ux.AddTabButton = (function() {
function onTabPanelRender() {
this.addTab = this.itemTpl.insertBefore(this.edge, {
id: this.id + 'addTabButton',
cls: 'add-tab',
text: this.addTabText || ' ',
iconCls: ''
}, true);
this.addTab.child('em.x-tab-left').setStyle('padding-right', '6px');
this.addTab.child('a.x-tab-right').setStyle('padding-left', '6px');
new Ext.ToolTip({
target: this.addTab,
bodyCfg: {
html: 'Add new tab'
}
});
this.addTab.on({
mousedown: stopEvent,
click: onAddTabClick,
scope: this
});
}
function createScrollers() {
this.scrollerWidth = (this.scrollRightWidth = this.scrollRight.getWidth()) + this.scrollLeft.getWidth();
}
function autoScrollTabs() {
var scrollersVisible = (this.scrollLeft && this.scrollLeft.isVisible()),
pos = this.tabPosition == 'top' ? 'header' : 'footer';
if (scrollersVisible) {
if (this.addTab.dom.parentNode === this.strip.dom) {
if (this.addTabWrap) {
this.addTabWrap.show();
} else {
this.addTabWrap = this[pos].createChild({
cls: 'x-tab-strip-wrap',
style: {
position: 'absolute',
right: (this.scrollRightWidth + 1) + 'px',
top: 0,
width: '30px',
margin: 0
}, cn: {
tag: 'ul',
cls: 'x-tab-strip x-tab-strip-' + this.tabPosition,
style: {
width: 'auto'
}
}
});
this.addTabWrap.setVisibilityMode(Ext.Element.DISPLAY);
this.addTabUl = this.addTabWrap.child('ul');
}
this.addTabUl.dom.appendChild(this.addTab.dom);
this.addTab.setStyle('float', 'none');
}
this.stripWrap.setWidth(this[pos].getWidth(true) - (this.scrollerWidth + 31));
this.stripWrap.setStyle('margin-right', (this.scrollRightWidth + 31) + 'px');
} else {
//
if ((this.addTab.dom.parentNode !== this.strip.dom)) {
var notEnoughSpace = (((this[pos].getWidth(true) - this.edge.getOffsetsTo(this.stripWrap)[0])) < 33)
this.addTabWrap.hide();
this.addTab.setStyle('float', '');
this.strip.dom.insertBefore(this.addTab.dom, this.edge.dom);
this.stripWrap.setWidth(this.stripWrap.getWidth() + 31);
if (notEnoughSpace) {
this.autoScrollTabs();
}
}
}
}
function autoSizeTabs() {
this.addTab.child('.x-tab-strip-inner').setStyle('width', '14px');
}
function stopEvent(e) {
e.stopEvent();
}
function onAddTabClick() {
this.setActiveTab(this.add(this.createTab? this.createTab() : {
title: 'New Tab'
}));
}
return {
init: function(tp) {
if (tp instanceof Ext.TabPanel) {
tp.onRender = tp.onRender.createSequence(onTabPanelRender);
tp.createScrollers = tp.createScrollers.createSequence(createScrollers);
tp.autoScrollTabs = tp.autoScrollTabs.createSequence(autoScrollTabs);
tp.autoSizeTabs = tp.autoSizeTabs.createSequence(autoSizeTabs);
}
}
};
})();
__________________
ExtJs forum volunteer. No official connection to the Ext Company. I do not speak for them. ExtJs consultancy offered. £ 50/hour. Evenings+weekends. the_bagbournes@btinternet.com Search the forum: http://www.google.com/coop/cse?cx=01...%3Az7of1ufqccu Read the docs too: http://extjs.com/deploy/dev/docs/ See Saki's samples: http://examples.extjs.eu/ Build your own Ext: http://extjs.com/products/extjs/build/ Scope: http://extjs.com/forum/showthread.ph...642#post257642 |
|
#2
|
||||
|
||||
|
excellent dude.
![]()
__________________
Get 42% off by using coupon code n2442 valid until (11/24/09) -> [Book] - Ext JS In Action My Blog || Ext JS screencasts || ext-doc || twitter My free extensions/plugins: Progressbar inside paging toolbar || Tab panel scroller menu || Window drawers || Icon Manager Grid view custom 'view' filter || PanelHeaderToolbar JavaScript Magazine August article now available. |
|
#3
|
|||
|
|||
|
thank you, thats sooo cool, but how can i use iconCls: 'add' ?
|
|
#4
|
||||
|
||||
|
OK, now you can configure your TabPabel with
addTabText: '+' Or, use the class to give it an icon eg div.x-tab-strip-wrap .add-tab a span.x-tab-strip-inner {
background: url(../../resources/images/default/dd/drop-add.gif) no-repeat center center;
}
![]()
__________________
ExtJs forum volunteer. No official connection to the Ext Company. I do not speak for them. ExtJs consultancy offered. £ 50/hour. Evenings+weekends. the_bagbournes@btinternet.com Search the forum: http://www.google.com/coop/cse?cx=01...%3Az7of1ufqccu Read the docs too: http://extjs.com/deploy/dev/docs/ See Saki's samples: http://examples.extjs.eu/ Build your own Ext: http://extjs.com/products/extjs/build/ Scope: http://extjs.com/forum/showthread.ph...642#post257642 |
|
#5
|
|||
|
|||
|
Hi Animal,
There is a way to add buttons with right aligment, independent of the aligment of the tabs. I mean, all the tabs would be with left aligment and the new tab buttons with right aligment?? |
![]() |
| Thread Tools | |
|
|