在desktop\js目录中包含了5个js文件,这5个js文件如下:
还有css样式表:desktop.css,图片素材
在这5个js文件中封装了用于模拟桌面的类,这些类如下:
Ext.ux.StartMenu(StartMenu.js) 模拟操作系统桌面左下方的开始菜单
Ext.ux.TaskBar(TaskBar.js) 模拟操作系统桌面右下方的任务栏
Ext.Desktop(Desktop.js) 模拟操作系统的整个桌面
Ext.app.Module(Module.js)对应整个应用程序中的各个功能模块
Ext.app.App(App.js)对应整个应用程序
由于这些类并不包含在ExtJS的核心组件中,因此,在使用这些类之前,要先引用这些js文件以及相应的css文件,代码如下:
<script type="text/javascript" src="js/StartMenu.js"></script> <script type="text/javascript" src="js/TaskBar.js"></script> <script type="text/javascript" src="js/Desktop.js"></script> <script type="text/javascript" src="js/App.js"></script> <script type="text/javascript" src="js/Module.js"></script> <script type="text/javascript" src="sample.js"></script>其中desktop.css模拟桌面所需的样式文件,在samples.js文件中利用上面5个类实现了如图所示的桌面。
使用桌面组件的第1步是创建Ext.app.App对象,代码如下:
//桌面组件配置 MyDesktop = new Ext.app.App({ //初始化 init :function(){ Ext.QuickTips.init(); }, //创建功能模块 getModules : function(){ return [ new MyDesktop.GridWindow(), new MyDesktop.TabWindow(), new MyDesktop.AccordionWindow(), new MyDesktop.BogusMenuModule(), new MyDesktop.BogusModule() ]; }, //配置开始菜单 getStartConfig : function(){ return { title: '我的系统', iconCls: 'user', toolItems: [{ text:'设置', iconCls:'settings', scope:this },'-',{ text:'注销', iconCls:'logout', scope:this }] }; } });
/* * 创建一个名为MyDesktop.GridWindow的功能模块,并在Ext.app.App的getModules()函数中对其执行了初始化操作。 */ MyDesktop.GridWindow = Ext.extend(Ext.app.Module, { id:'grid-win', //初始化 init : function(){ this.launcher = { text: 'Grid Window', iconCls:'accordion', handler : this.createWindow, scope: this } }, createWindow : function(){ var desktop = this.app.getDesktop(); var win = desktop.getWindow('grid-win'); if(!win){ win = desktop.createWindow({ id: 'grid-win', title:'Grid Window', width:740, height:480, iconCls: 'icon-grid', shim:false, animCollapse:false, constrainHeader:true }); } win.show(); } });
MyDesktop.TabWindow = Ext.extend(Ext.app.Module, { id:'tab-win', init : function(){ this.launcher = { text: 'Tab Window', iconCls:'tabs', handler : this.createWindow, scope: this } }, createWindow : function(){ var desktop = this.app.getDesktop(); var win = desktop.getWindow('tab-win'); if(!win){ win = desktop.createWindow({ id: 'tab-win', title:'Tab Window', width:740, height:480, html:'Tab Window', iconCls: 'tabs', shim:false, animCollapse:false, border:false, constrainHeader:true }); } win.show(); } });
Ext.Desktop中将快捷方式称为shortcut,我们不需要写任何代码来配置快捷方式,只需要在为标签和对象命名时遵守一定的规则即可。
在模拟桌面上显示的快捷方式时所使用的HTML标签如下:
<dl id="x-shortcuts"> <dt id="grid-win-shortcut"> <a href="#"><img src="images/s.gif" /> <div>Grid Window</div></a> </dt> </dl>
模拟快捷方式都必须包含在id = 'x-shortcuts'的dl标签中,dl标签中包含每个dt标签都将成为一个快捷方式。这些dt标签属性都以-shortcut结尾,将id属性中的-shortcut部分去掉后,得到的就是功能模块的id。