extjs tabpanel動的パネル追加
index = Ext.extend(Ext.Viewport,{
center : new Ext.TabPanel({
id : 'mainview',
region : 'center',
activeTab : 0,
width : 600,
height : 250,
minTabWidth: 115,
tabWidth:135,
enableTabScroll:true,
split : true,
layoutOnTabChange:true,
tabPosition : 'top',
resizeTabs:true,
defaults : {autoScroll:true},
plugins : new Ext.ux.TabCloseMenu(),
items :{
id : 'start-panel',
title : 'MainView',
iconCls : 'tabs',
layout : 'fit',
bodyStyle : 'padding:25px',
html : '<img src="../images/bg.jpg"/>'
}
}),
constructor : function(){
//var clock = new Ext.Toolbar.TextItem('');
index.superclass.constructor.call(this,{
layout : 'border',
items : [{
region : 'north',
xtype : 'panel',
height : 25,
layout : 'column',
border : false,
items : [{
columnWidth : 1,
border : false,
layout : 'fit',
items : [{
xtype : 'panel',
id : 'logo-header',
border : false,
tbar : [
{
text : currentUser
},{
text : new Date().format('Y m d ')
},'->',{
text:' '
,iconCls:'logout'
,handler:function(){
Ext.Msg.show({
title:' ',
msg: ' : , ?',
buttons: Ext.Msg.YESNO,
fn: function(btn){
if(btn=='yes'){
Ext.Ajax.request({
url : 'logout.action',
success : function() {
location = '../main/index.jsp';
},
failure : function() {
Ext.Msg.show({
title : ' ',
msg : ' !',
icon : Ext.Msg.ERROR,
buttons : Ext.Msg.OK
});
}
});
}
}
});
}
}
]
}]
}]
},{
region : 'west',
xtype : 'panel',
layout : 'accordion',
title : ' ',
split : true,
minSize : 200,
maxSize : 250,
//margins : '2 0 5 5',
collapsible : true,
collapseMode:'mini',
width : 200,
layoutConfig : {
animate : true
},
listeners : {
'expand' :{
fn : this.onExpandPanel,
scope : this
},
'collapse' :{
fn : this.onCollapsePanel,
scope : this
}
},
items : [{
title : ' ',
iconCls : 'icon-nav',
xtype : 'treepanel',
autoScroll : true,
border : false,
id : 'treepanel',
tools : [{
id : 'refresh',
handler : this.onRefreshTreeNodes,
scope : this
},{
id:'expanded',
tooltip:' ',
handler:function(){
Ext.getCmp('treepanel').expandAll();
}
}],
loader : new Ext.tree.JsonPluginTreeLoader({
url : 'findTree.action'
}),
root : new Ext.tree.AsyncTreeNode({text : ' ', expanded:true}),
listeners : {
'click' : {
fn :this.onTreeNodeClick,
scope : this
},
'afterrender':{
fn : this.onExpandAll,
scope : this
}
}
}]
},this.center]
})
},
addTab : function(name,id,css,link){
var tabId = 'tab_'+id;
var tabTitle = name;
var tabLink = link;
var centerPanel = Ext.getCmp('mainview');
var tab =centerPanel.getComponent(tabId);
var subMainId = 'tab_'+id+'_main';
if(!tab){
var newTab = centerPanel.add(new Ext.Panel({
id : tabId,
title : tabTitle,
iconCls : 'tabs',
border : false,
closable : true,
layout : 'fit',
listeners : {
activate : this.onActiveTabSize,
scope : this
}
}));
centerPanel.setActiveTab(newTab);
newTab.load({
url : tabLink,
method : 'post',
params : {
subMainId : subMainId
},
scope : this,
discardUrl : true,
nocache : true, //
text : ' , ...',
timeout : 3000,
scripts : true
});
}else{
centerPanel.setActiveTab(tab);
}
},
onActiveTabSize : function(){
var w = Ext.getCmp('mainview').getActiveTab().getInnerWidth();
var h = Ext.getCmp('mainview').getActiveTab().getInnerHeight();
var Atab = Ext.getCmp('mainview').getActiveTab().id;
var submain = Ext.getCmp(Atab+'_main');
if(submain){
submain.setWidth(w);
submain.setHeight(h);
}
},
onRefreshTreeNodes : function(){
Ext.getCmp('treepanel').root.reload();
},
onTreeNodeClick : function(_node,_e){
if(_node.isLeaf()){
var _nodeText = _node.attributes.text;
var _nodeLink = _node.attributes.url;
var _nodeId = _node.attributes.id;
this.addTab(_nodeText,_nodeId,'_css',_nodeLink)
}
},
onExpandPanel : function(_nowCmp){
this.onActiveTabSize();
},
onCollapsePanel : function(_nowCmp){
this.onActiveTabSize();
},
onExpandAll : function(){
Ext.getCmp('treepanel').expandAll();
}
})