X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/7a654f8d43fdb43d78b63d90528bed6e86b608cc..3789b528d8dd8aad4558e38e22d775bcab1cbd36:/docs/source/Bar.html diff --git a/docs/source/Bar.html b/docs/source/Bar.html index 58f31a00..f8e76d4a 100644 --- a/docs/source/Bar.html +++ b/docs/source/Bar.html @@ -1,4 +1,21 @@ -
/**
+
+
+
+
+ The source code
+
+
+
+
+
+
+ /**
* @author Ed Spencer
* @class Ext.tab.Bar
* @extends Ext.panel.Header
@@ -19,7 +36,7 @@ Ext.define('Ext.tab.Bar', {
// @private
defaultType: 'tab',
- /**
+ /**
* @cfg Boolean plain
* True to not show the full background on the tabbar
*/
@@ -31,12 +48,12 @@ Ext.define('Ext.tab.Bar', {
'<div class="{baseCls}-strip<tpl if="ui"> {baseCls}-strip-{ui}<tpl for="uiCls"> {parent.baseCls}-strip-{parent.ui}-{.}</tpl></tpl>"></div>'
],
- /**
+ /**
* @cfg {Number} minTabWidth The minimum width for each tab. Defaults to <tt>30</tt>.
*/
minTabWidth: 30,
- /**
+ /**
* @cfg {Number} maxTabWidth The maximum width for each tab. Defaults to <tt>undefined</tt>.
*/
maxTabWidth: undefined,
@@ -53,7 +70,7 @@ Ext.define('Ext.tab.Bar', {
me.addClsWithUI(me.dock);
me.addEvents(
- /**
+ /**
* @event change
* Fired when the currently-active tab has changed
* @param {Ext.tab.Bar} tabBar The TabBar
@@ -63,9 +80,9 @@ Ext.define('Ext.tab.Bar', {
'change'
);
- Ext.applyIf(this.renderSelectors, {
- body : '.' + this.baseCls + '-body',
- strip: '.' + this.baseCls + '-strip'
+ Ext.applyIf(me.renderSelectors, {
+ body : '.' + me.baseCls + '-body',
+ strip: '.' + me.baseCls + '-strip'
});
me.callParent(arguments);
@@ -123,7 +140,8 @@ Ext.define('Ext.tab.Bar', {
onClick: function(e, target) {
// The target might not be a valid tab el.
var tab = Ext.getCmp(target.id),
- tabPanel = this.tabPanel;
+ tabPanel = this.tabPanel,
+ allowActive = true;
target = e.getTarget();
@@ -131,35 +149,49 @@ Ext.define('Ext.tab.Bar', {
if (tab.closable && target === tab.closeEl.dom) {
tab.onCloseClick();
} else {
- this.setActiveTab(tab);
if (tabPanel) {
+ // TabPanel will card setActiveTab of the TabBar
tabPanel.setActiveTab(tab.card);
+ } else {
+ this.setActiveTab(tab);
}
tab.focus();
}
}
},
- /**
+ /**
* @private
* Closes the given tab by removing it from the TabBar and removing the corresponding card from the TabPanel
* @param {Ext.Tab} tab The tab to close
*/
closeTab: function(tab) {
- var card = tab.card,
- tabPanel = this.tabPanel,
+ var me = this,
+ card = tab.card,
+ tabPanel = me.tabPanel,
nextTab;
+
+ if (card && card.fireEvent('beforeclose', card) === false) {
+ return false;
+ }
- if (tab.active && this.items.getCount() > 1) {
- nextTab = tab.next('tab') || this.items.items[0];
- this.setActiveTab(nextTab);
+ if (tab.active && me.items.getCount() > 1) {
+ nextTab = tab.next('tab') || me.items.items[0];
+ me.setActiveTab(nextTab);
if (tabPanel) {
tabPanel.setActiveTab(nextTab.card);
}
}
- this.remove(tab);
+ /*
+ * force the close event to fire. By the time this function returns,
+ * the tab is already destroyed and all listeners have been purged
+ * so the tab can't fire itself.
+ */
+ tab.fireClose();
+ me.remove(tab);
if (tabPanel && card) {
+ card.fireEvent('close', card);
tabPanel.remove(card);
}
@@ -168,7 +200,7 @@ Ext.define('Ext.tab.Bar', {
}
},
- /**
+ /**
* @private
* Marks the given tab as active
* @param {Ext.Tab} tab The tab to mark active
@@ -190,4 +222,6 @@ Ext.define('Ext.tab.Bar', {
me.activeTab = tab;
me.fireEvent('change', me, tab, tab.card);
}
-});
\ No newline at end of file
+});
+
+