mkanat%bugzilla.org d0bc259040 Preliminary support for Bugzilla 3.6.x
git-svn-id: svn://10.0.0.236/trunk@260648 18797224-902f-48f8-a5cc-f745e15eee43
2010-07-06 15:09:21 +00:00

125 lines
4.2 KiB
JavaScript

Ext.ux.TabCloseMenu = function(){
var tabs, menu, ctxItem;
this.init = function(tp){
tabs = tp;
tabs.on('contextmenu', onContextMenu);
}
function onContextMenu(ts, item, e){
if(!menu){ // create context menu on first right click
menu = new Ext.menu.Menu([{
id: tabs.id + '-close',
text: 'Close Tab',
handler : function(){
tabs.remove(ctxItem);
}
},{
id: tabs.id + '-close-others',
text: 'Close Other Tabs',
handler : function(){
tabs.items.each(function(item){
if(item.closable && item != ctxItem){
tabs.remove(item);
}
});
}
}]);
}
ctxItem = item;
var items = menu.items;
items.get(tabs.id + '-close').setDisabled(!item.closable);
var disableOthers = true;
tabs.items.each(function(){
if(this != item && this.closable){
disableOthers = false;
return false;
}
});
items.get(tabs.id + '-close-others').setDisabled(disableOthers);
menu.showAt(e.getPoint());
}
};
diff_tab_panel = function(type, id, doctype){
var self = this;
var doc_store = new Ext.data.JsonStore({
url: "tr_history.cgi",
listeners: { 'exception': Testopia.Util.loadError },
baseParams: {action: 'getversions',
type: type,
id: id},
root: 'versions',
fields: [
{name: 'name', mapping: 'name',
name: 'id', mapping: 'id'}
]
})
diff_tab_panel.superclass.constructor.call(this, {
title: 'Test Panel',
height: 500,
resizeTabs:true, // turn on tab resizing
minTabWidth: 115,
tabWidth:135,
enableTabScroll:true,
defaults: {autoScroll:true},
plugins: new Ext.ux.TabCloseMenu(),
activeTab: 0,
tbar: [
new Ext.form.ComboBox({
displayField: 'name',
valueField: 'id',
name: 'product',
id: 'product_combo',
fieldLabel: "Product",
store: doc_store,
emptyText: 'Select a version...',
width: 200
}),
" Right: ",
new Ext.Toolbar.Spacer(),
new Ext.form.ComboBox({
}),
" HTML: ",
new Ext.form.Radio({
id: 'format',
value: 'html',
checked: true
}),
" Raw: ",
new Ext.form.Radio({
id: 'format',
value: 'raw'
}),
new Ext.Button({
text: 'Diff',
handler: addTab
}),
new Ext.Toolbar.Separator(),
"Show Version: ",
new Ext.form.ComboBox({
}),
new Ext.Button({
text: 'Show',
handler: addTab
})
]
});
function addTab() {
self.add({
title: 'New Tab ',
iconCls: 'tabs',
html: 'diff_text',
closable:true
}).show();
}
}
Ext.extend(diff_tab_panel, Ext.TabPanel);