日期:2014-05-16 浏览次数:20574 次
/** *一个表示程序可视区域的特殊容器(浏览器可视区域)。 *视窗渲染在document的body标签上,并且根据浏览器可视区域的大小自动调整并 *且管理窗口的大小变化。一个页面上只允许存在一个viewport。所有的{@link *Ext.Panel 面板}增加到viewport,通过她的items,或者通过她的子面板(子面板也 *都可以拥有自己的layout)的items,子面板的add方法,这种设计让内部布局的优*势非常明显。 **/ var viewport = new Ext.Viewport({ layout : 'border', items : [{ cls : 'docs-header', height : 58, region : 'north', xtype : 'box', el : 'header', border : false, margins : '0 0 5 0' }, appMeunPanel, mainPanel] }); viewport.doLayout();
/** *AsyncTreeNode 异步加载根节点 *TreeLoader 定义根节点的Loader *rootVisible:true, //隐藏根节点 *border:true, //边框 *animate:true, //动画效果 *autoScroll:true, //自动滚动 *enableDD:false, //节点是否可以拖拽 **/ var root = new Ext.tree.AsyncTreeNode({ text : appMeuns[i].MENUNAME, draggable : false, id : appMeuns[i].MENUID }); var node = new Ext.tree.TreePanel({ title : appMeuns[i].MENUNAME, rootVisible : false, loader : new Ext.tree.TreeLoader({ dataUrl : _ctx.base+ '/system/meun.action' }), animate : true, autoScroll : true, containerScroll : true, iconCls : appMeuns[i].MENUICON, root : root });
node.on('click', function(node, e) { e.stopEvent(); if (node.leaf) { reqType = 'js'; var url = node.attributes.href; var icons = node.attributes.iconCls; if (url) { var parts = url.split('/'); if (parts) { var fileName = parts[parts.length - 1]; reqType = fileName.split('.')[1]; } } mainPanel.loadPanel(url,icons,node.text,reqType,appid,false); } });
/** *enableTabScroll 有时标签页会超出TabPanel的整体宽度。为防止此情况下溢出的标*签页不可见,就需要将此项设为true以出现标签页可滚动的功能。只当标签页位于上方*的位置时有效(默认为false)。 * Ext.ux.TabCloseMenu() 关闭tab的插件 * superclass.constructor 用于指定超类或者基类构造。 * 我们使用javascript的call方法运行构造函数,在适用范围上。 * 第一个参数总是this,以保证构造器工作在调用函数的作用域。其它参数将被传递给父 *的构造函数 **/ MainPanel = function() { MainPanel.superclass.constructor.call(this, { id : 'doc-body', region : 'center', margins : '0 5 5 0', minTabWidth : 80, nocache: true, plugins : new Ext.ux.TabCloseMenu(), enableTabScroll : true, activeTab : 0, items : { id : 'welcome-panel', title : '欢迎使用本系统', cls : 'empty', iconCls : 'icon-docs', autoLoad : { url : _ctx.base+'/html/page/welcome.html' }, autoScroll : true }
Ext.extend(MainPanel, Ext.TabPanel, { loadPanel : function(href, cls, title, reqType, appid, index) { if (href == null) { Ext.Msg.alert("错误!", "请求路径为空!"); } else { if (reqType == 'js') { Ext.Ajax.request( { url : _ctx.base+"/"+href, success : function(response, opts) { var obj = eval(response.responseText); var tab = cmp.getComponent(obj.id); if (tab) { cmp.setActiveTab(tab); } else { var panel = obj.init(); panel.setTitle(title); panel.setIconClass(cls); cmp.setActiveTab(cmp.add(panel)); } if (!index) { try { var tabs = Ext.util.Cookies.get('tabs'); if (!tabs || tabs == null) tabs = "{}"; tabs = Ext.util.JSON.decode(tabs); tabs[obj.id] = href + ":" + cls + ":" + title+ ":" + reqType + ":" + appid + ":"+ userid; Ext.util.Cookies.set("tabs", Ext.util.JSON.encode(tabs)); } catch (e) { Ext.util.Cookies.clear("tabs"); } } }, failure : function(Optional) { Ext.Msg.alert("错误!", "加载模块失败!"); } }); } else { Ext.Msg.alert("错误!", "加载模块失败 : 文件类型错误!"); } }