ExtJs桌面组件(DeskTop)
在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
- }]
- };
- }
- });
与创建大多数ExtJS组件不同,在创建Ext.app.App对象时,并不需要在Ext.onReady方法中指定页面加载完后执行的初始化桌面的方法,ExtJS会在页面加载完成后,自动调用Ext.app.App的init方法对模拟的桌面进行初始化。
在init方法执行后,ExtJS会自动调用getModules和getStartConfig方法对整个应用程序进行配置。getModules方法返回了一个包含多个Ext.app.Module对象的数组。每一个Module对象代表应用中的一个功能模块,这些功能模块都以弹窗的形式出现在桌面上。可以使用模拟桌面的开始菜单的Ext.ux.StartMenu展开这些功能模块的窗口。
对于已经展开的窗口,也可以通过模拟桌面下方的任务栏的Ext.ux.TaskBar控制某个窗口的显示或隐藏。
Ext.app.App中的startConfig()函数主要是用来配置开始菜单的选项。例子中配置了两个按钮,名称分别为"设置","注销",可以像对待普通菜单项一样配置,设置对应的标题,图标等参数。也可以设置handler在用户点击时执行对应的操作。
- /*
- * 创建一个名为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();
- }
- });
在为Ext.app.App创建功能模块时,都要集成Ext提供的Ext.app.Module,这个类中只定义一个init()函数,需要重写这个函数来实现我们的功能。
一般只需要在init()函数中定义一个launcher对象,他是一个JSON对象,内部包含了启动这个功能模块所需要的一些配置。当在Ext.ux.StartMenu中点击对应的功能模块时,就会执行launcher中定义的handler属性,弹出这个功能模块对应的窗口。
例子中的handler属性对应着自身的createWindow()函数。在这个回调函数中,我们先通过this.app.getDesktop()获得整个应用对应的模拟桌面,然后使用desktop.getWindow('grid-win')判断功能模块对应的窗口是否已经存在,如果窗口还没有创建,就调用desktop.createWindow()创建这个窗口,,并显示出来。
除了使用Ext.ux.StartMenu显示功能窗口之外,我们还可以使用桌面的快捷方式启动对应的功能模块,点击模拟桌面上放置的图标或链接,就可以让对应的功能窗口直接显示出来。
- 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="data:images/s.gif" />
- <div>Grid Window</div></a>
- </dt>
- </dl>
模拟快捷方式都必须包含在id = 'x-shortcuts'的dl标签中,dl标签中包含每个dt标签都将成为一个快捷方式。这些dt标签属性都以-shortcut结尾,将id属性中的-shortcut部分去掉后,得到的就是功能模块的id。
转载自:http://blog.csdn.net/sjf0115/article/details/9346727
ExtJs桌面组件(DeskTop)的更多相关文章
- Google Map和桌面组件 Android开发教程
本文节选于机械工业出版社推出的<Android应用开发揭秘>一 书,作者为杨丰盛.本书内容全面,详细讲解了Android框架.Android组件.用户界面开发.游戏开发.数据存储.多媒体开 ...
- Android之桌面组件AppWidget
转载:Android之桌面组件App Widget初探 Android开发应用除了程序应用,还有App Widget应用.好多人会开发程序应用而不会开发App Widget应用.本帖子就是帮助大家学习 ...
- blfs(systemd版本)学习笔记-编译安装gnome桌面组件及应用
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! blfs中的gnome项目地址:http://www.linuxfromscratch.org/blfs/view/stable ...
- Javascript - ExtJs - GridPanel组件
GridPanel组件(Ext.grid.GridPanel)logogram:Ext.grid.Panel | xtype:gridpanel 此类派生自Ext.Panel,创建表格需要两个必须的对 ...
- 实用ExtJS教程100例-008:使用iframe填充ExtJS Window组件
上面两节中我们分别演示了ExtJS Window的常用功能 和 如何最小化ExtJS Window组件,在这篇内容中我们来演示一下如何使用iframe填充window组件. 思路很简单,首先创建一个w ...
- Extjs window组件 拖动统制
Extjs window组件 拖动控制有时候一拖就拖出了浏览器,在想拖回来就不好办了: 解决办法:参考以下代码,在加载Ext核心库以后执行: Ext.override(Ext.Window, { ...
- Extjs获得组件值的方式
Extjs中找Form,Extjs找组件的方式: 1,Extjs.getCmp 2,通过组件之间的关系,up,down 结论: 1,form.getValues()和form.getForm().g ...
- ExtJS关于组件Component生命周期
extjs组件生命周期大体分为3个阶段:初始化.渲染.销毁. 第一阶段:初始化 初始化工作开始于组件的诞生,所有必须的配置设定.事件注册.预渲染处理等都在此时进行. 1.应用组件的配置: 当初始化一个 ...
- Win7 远程 Ubuntu 桌面 mate desktop,并实现中文输入法
一. 安装mate desktop: $sudo apt-add-repository ppa:ubuntu-mate-dev/ppa $sudo apt-add-repository ppa:ubu ...
随机推荐
- No.004 Median of Two Sorted Arrays
4. Median of Two Sorted Arrays Total Accepted: 104147 Total Submissions: 539044 Difficulty: Hard The ...
- ios如何获取位置权限
获取当前位置需要改plist文件 在plist文件加入 NSLocationWhenInUseUsageDescription 字段 /** 初始化一个管理器对象 */ locationMan ...
- namespace的用法
C++中采用的是单一的全局变量命名空间.在这单一的空间中,如果有两个变量或函数的名字完全相同,就会出现冲突.当然,你也可以使用不同的名字,但有时我们并不知道另一个变量也使用完全相同的名字:有时为了程序 ...
- SVN与TortoiseSVN实战:文件加锁详解
硬广:<SVN与TortoiseSVN实战>系列已经写了八篇,本篇是完结篇,整个系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解,以技巧性为主. 本篇详解使用Tortoi ...
- AceAdmin In MVC之控件
AceAdmin有很多Html控件,而下载下来之后全部混杂在一起,想用一个控件有时得调整半天,干脆整理出一个版本,而且结合起来MVC的封装.以后就不用一个js css的调了. 在MVC中Html的控件 ...
- 【Linux】freetds安装配置连接MSSQL
我使用的是freetds-0.91,下载地址:http://pan.baidu.com/s/1hq68rZY 安装编译(根据需要unixodbc): [root@zabbixserver / ]# t ...
- redis使用
1.服务器 下载redis Windows版,命令行启动redis-server.exe即可. 2.客户端使用 jedis 添加DLL: commons-pool2-2.0.jar jedis-2.4 ...
- Android IOS WebRTC 音视频开发总结(三四)-- windows.20150706
最近好不容易更新了PC版的WEBRTC,总结下有哪些调整,文章来自博客园RTC.Blacker,支持原创,转载请说明出处. 图1:解决方案工程结构对比: 说明: 1, 最大的调整就是移除了VideoE ...
- 【一步一图】:详解IIS日志配置
打开网站配置:右键点击属性 弹出设置界面 如上图,日志可选4种格式: [Microsoft IIS 日志文件格式] 存放地址如上图 以in开头 年份后两位+月份+日 命名: 示例: //, ...
- [Cocos2d-x for WP8学习笔记] HelloWorld
Cocos2d-x 是一个支持多平台的 2D 手机游戏引擎,使用 C++ 开发,基于OpenGL ES,基于Cocos2d-iphone,支持 WOPhone, iOS 4.1, Android 2. ...