X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/0494b8d9b9bb03ab6c22b34dae81261e3cd7e3e6..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/examples/ux/TabReorderer.js diff --git a/examples/ux/TabReorderer.js b/examples/ux/TabReorderer.js new file mode 100755 index 00000000..d97e944a --- /dev/null +++ b/examples/ux/TabReorderer.js @@ -0,0 +1,54 @@ +/** + * @class Ext.ux.TabReorderer + * @extends Ext.ux.BoxReorderer + * This plugin allow you to reorder tabs of a TabPanel. + */ +Ext.define('Ext.ux.TabReorderer', { + + extend: 'Ext.ux.BoxReorderer', + + itemSelector: '.x-tab', + + init: function(tabPanel) { + var me = this; + + me.callParent([tabPanel.getTabBar()]); + + // Ensure reorderable property is copied into dynamically added tabs + tabPanel.onAdd = Ext.Function.createSequence(tabPanel.onAdd, me.onAdd); + }, + + afterFirstLayout: function() { + var tabs, + len, + i = 0, + tab; + + this.callParent(arguments); + + // Copy reorderable property from card into tab + for (tabs = this.container.items.items, len = tabs.length; i < len; i++) { + tab = tabs[i]; + if (tab.card) { + tab.reorderable = tab.card.reorderable; + } + } + }, + + onAdd: function(card, index) { + card.tab.reorderable = card.reorderable; + }, + + afterBoxReflow: function() { + var me = this; + + // Cannot use callParent, this is not called in the scope of this plugin, but that of its Ext.dd.DD object + Ext.ux.BoxReorderer.prototype.afterBoxReflow.apply(me, arguments); + + // Move the associated card to match the tab order + if (me.dragCmp) { + me.container.tabPanel.setActiveTab(me.dragCmp.card); + me.container.tabPanel.move(me.startIndex, me.curIndex); + } + } +}); \ No newline at end of file