首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

Extjs-desktop施用

2013-08-04 
Extjs---desktop应用最近在学习Extjs,感觉到了extjs的强大,尤其是看了它的desktop之后,ext的desktop做的确

Extjs---desktop应用

最近在学习Extjs,感觉到了extjs的强大,尤其是看了它的desktop之后,ext的desktop做的确实不错,在网上找了一下extjs的desktop的资料,并没有太多完整的实例有的话想下载很麻烦,于是决定自己整一个,说干就干,我的desktop是SSH+Extjs 4实现

?
Extjs-desktop施用
?

总体架构就是大家看到的截图,至于SSH框架的大家就不在这里赘述了,接下来介绍每个包的作用:

??? core包中存放desktop的核心代码:

????
Extjs-desktop施用
? ? css包用于存放样式:

???
Extjs-desktop施用
?? ext包用于存放js:

Extjs-desktop施用
?images用于存放desktop中的图片,在extjs的desktop的例子中可以找到images包

modules中用于存放桌面上显示的模块:
Extjs-desktop施用
?
Extjs-desktop施用
?接下来就是把App.js 和setting.js以及desktop.html考到WebContent的目录下

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>extjs4 desktop</title><!-- css -->    <link rel="stylesheet" type="text/css" href="extjslib/css/ext-all.css" />    <link rel="stylesheet" type="text/css" href="extjslib/css/desktop.css" />    <!-- base js -->    <script type="text/javascript" src="extjslib/ext/ext-all.js"></script>    <!-- <script type="text/javascript" src="extjslib/ext/ext-lang-zh_CN.js"></script> -->    <!-- core js -->    <script type="text/javascript" src="extjslib/core/Module.js"></script>     <script type="text/javascript" src="extjslib/core/Video.js"></script>     <script type="text/javascript" src="extjslib/core/Wallpaper.js"></script>     <script type="text/javascript" src="extjslib/core/FitAllLayout.js"></script>     <script type="text/javascript" src="extjslib/core/StartMenu.js"></script>     <script type="text/javascript" src="extjslib/core/TaskBar.js"></script>     <script type="text/javascript" src="extjslib/core/ShortcutModel.js"></script>       <script type="text/javascript" src="extjslib/core/Desktop.js"></script>     <script type="text/javascript" src="extjslib/core/App.js"></script>     <!-- module js -->    <script type="text/javascript" src="modules/WallpaperModel.js"></script>     <script type="text/javascript" src="modules/VideoWindow.js"></script>     <script type="text/javascript" src="modules/BogusModule.js"></script>     <script type="text/javascript" src="modules/BogusMenuModule.js"></script>     <script type="text/javascript" src="modules/TabWindow.js"></script>     <script type="text/javascript" src="modules/GridWindow.js"></script>     <script type="text/javascript" src="modules/AccordionWindow.js"></script>     <script type="text/javascript" src="modules/SystemStatus.js"></script>     <script type="text/javascript" src="modules/Notepad.js"></script>    <script type="text/javascript" src="modules/UserManager.js"></script>    <!-- config js -->    <script type="text/javascript" src="Settings.js"></script>     <script type="text/javascript" src="App.js"></script>     <script type="text/javascript">        Ext.Loader.setConfig({enabled:true});    Ext.Loader.setPath({        'Ext.ux.desktop': 'extjslib',        //'Fly.modules': 'modules',        MyDesktop: ''    });    Ext.require('MyDesktop.App');    var myDesktopApp;        Ext.override(Ext.ZIndexManager, {            tempHidden: [],            show: function() {                var comp, x, y;                while (comp = this.tempHidden.shift()) {                    x = comp.x;                    y = comp.y;                    comp.show();                    comp.setPosition(x, y);                }            }        });    Ext.onReady(function () {        myDesktopApp = new MyDesktop.App();    });    </script></head><body></body></html>

?? 先看下效果:

?
Extjs-desktop施用
?自己扩展的用户模块:

?


Extjs-desktop施用
?

    /*!      * Ext JS Library 4.0      * Copyright(c) 2006-2011 Sencha Inc.      * licensing@sencha.com      * http://www.sencha.com/license      */            Ext.define('MyDesktop.UserManager', {          extend: 'Ext.ux.desktop.Module',                requires: [          'Ext.data.JsonStore',          'Ext.util.Format',          'Ext.grid.Panel',          'Ext.grid.RowNumberer'          ],                id:'users-grid',                init : function(){              this.launcher = {                  text: 'User Manager',                  iconCls:'user',                handler : this.createWindow,                scope: this            };          },                          createWindow : function(){          var desktop = this.app.getDesktop();            var win = desktop.getWindow(this.id);            var required = '<span style="color:red;font-weight:bold" data-qtip="Required">* </span>';                       Ext.define('User', {                  extend: 'Ext.data.Model',                  fields: [{                      name: 'id',                 },{                      name: 'userName'                 },{                      name: 'password'                },{                      name: 'status'                  },{                      name: 'createTime'                  },{                      name: 'roleName',                 }]              });                                            var userStore=Ext.create('Ext.data.Store',{             //autoDestroy: true,             autoLoad:true,             model: 'User',             proxy: {                       actionMethods:{                           create: "POST",                            read: "POST",                            update: "POST",                            destroy: "POST"                       },                       type: 'ajax',                       api: {                           create  : '',                           read    : 'userAction!list.action',                           update  : '',                           destroy : ''                       },                       reader: {                           type: 'json',                           root: 'rows'                     }                   }            });                               //创建数据模型             Ext.regModel('role',{                 fields:[{name:'id'},{name:'roleName'}]             });                          //定义组合框中显示的数据源             var roleStore = Ext.create('Ext.data.Store',{                 model:'role',                 proxy:{                     type:'ajax',                     url:'roleAction!list.action',                     reader: {                         type: 'json',                         root: 'rows'                   }                 }             });                        if(!win){            var userid;              var usergrid = Ext.create('Ext.grid.Panel',{                       flex:2,                       frame: true,                       title:'User Info',                     store:userStore,                     layout: 'column',                       columns: [                               new Ext.grid.RowNumberer(),                               {                                   text: "ID",                                   flex: 70,                                   sortable: true,                                   dataIndex: 'id'                               },                               {                                   text: "User Name",                                   width: 70,                                   sortable: true,                                   dataIndex: 'userName'                               },                               {                                   text: "Password",                                   width: 70,                                   sortable: true,                                   dataIndex: 'password'                               },                               {                                   text: "Status",                                   width: 70,                                   sortable: true,                                   dataIndex: 'status'                               },                               {                                   text: "CreateTime",                                   width: 70,                                   sortable: true,                                   dataIndex: 'createTime'                               },                               {                                   text: "Role Name",                                   width: 70,                                   sortable: true,                                   dataIndex: 'roleName'                               }                        ],                     listeners: {                           selectionchange: function(model, records) {                               if (records[0]) {                                   userid = records[0].data.id;                                   Ext.getCmp('userForm').loadRecord(records[0]);                                 //Ext.getCmp('roleNames').setValue(records[0].data.roleName);                                 Ext.getCmp('user_save').setDisabled(false);                                   Ext.getCmp('userForm').remove('roleNames');                                   Ext.getCmp('user_update').setDisabled(false);                                   Ext.getCmp('user_save').setText('Add');                               }                           }                       }                 });                                           var userform = new Ext.form.Panel({                       flex:1,                       title:'Edit User',                       xtype: 'form',                       frame: true,                       id: 'userForm',                       bodyPadding: 10,                       layout:'anchor',                       fieldDefaults: {                           labelStyle:'font-weight: bold;text-align:right',                           labelWidth: 70                       },                       defaultType: 'textfield',                       items: [{                       id:'id',                         name: 'id',                         inputType:'hidden'                     },{                           id:'user-name',                           fieldLabel: 'User Name',                           beforeLabelTextTpl: required,                           name: 'userName',                           allowBlank:false,                           enableKeyEvents: true                                    },{                       id:'status',                         fieldLabel: 'Status',                           name: 'status'                     },{                           id:'password',                           fieldLabel: 'Password',                           beforeLabelTextTpl: required,                           name: 'password',                           blankText : 'The password cannot be blank',                           regex : /^[\s\S]{6,32}$/,                           regexText : 'Password length must be greater than 6 and less than 32',                           inputType : 'password',                           allowBlank:false                       },{                       id:'roleName',                         fieldLabel: 'Role Name',                           name: 'roleName'                     }],                                          buttons: [{                           id:'user_save',                           text: 'Add',                           maxWidth:55,                           handler:function(){                               var user_form = this.up('form');                               if(this.getText() == 'Add'){                             user_form.add(                             {                                             id:'roleNames',                                               name:'roleName',                                               store:roleStore,                                             fieldLabel: 'Role Name',                                             xtype:'combobox',                                             displayField:'roleName',//定义要显示的字段                                               valueField:'id',                                               queryMode:'remote',//远程模式                                              allQuery:'allArea',                                               minChars:1,//下拉框自动选择前用户需要输入的最小字符数量                                               queryDelay:300,//查询延迟时间(毫秒)                                                        triggerAction:'all',//单击按钮显示全部数据                                              forceSelection:true,//要求输入值必须在列表中存在                                               typeAhead:true,//允许自动选择匹配的剩余部分文本                                               value:'1'//默认值                                          }                              );                             roleStore.load();                                 user_form.getForm().reset();                                   Ext.getCmp('user_update').setDisabled(true);                                   this.setText('Save');                                 user_form.remove('roleName');                             }else{                                   if(user_form.getForm().isValid()){                                       user_form.getForm().submit({                                           url: 'userAction!addUser.action',                                           submitEmptyText: false,                                           waitTitle:'Please wait',                                           waitMsg: 'The user is added...',                                         params : {                                               "user.userName":Ext.getCmp('user-name').getValue(),                                             "user.password":Ext.getCmp('password').getValue(),                                             "user.status":Ext.getCmp('status').getValue(),                                             "role.id":Ext.getCmp('roleNames').getValue()                                         },                                         success:function(form,action){                                               var response = Ext.decode(action.response.responseText);                                               Ext.Msg.alert('tip', response.msg);                                               userStore.load();                                           },                                           failure:function(form,action){                                               Ext.Msg.alert('tip', 'Failed to add the users!');                                           }                                       });                                   }else{                                       Ext.Msg.alert('tip', 'Data validation failures!');                                   }                                   this.setText('Add');                                   Ext.getCmp('userForm').remove('roleNames');                                   Ext.getCmp('user_update').setDisabled(false);                               }                           }                       },{                           id:'user_update',                           text: 'Edit',                           maxWidth:55,                           handler:function(){                               var user_form = this.up('form');                             if(this.getText() == 'Edit'){                             user_form.add(                             {                                             id:'roleNames',                                               name:'roleName',                                               store:roleStore,                                             fieldLabel: 'Role Name',                                             xtype:'combobox',                                             displayField:'roleName',//定义要显示的字段                                               valueField:'id',                                               queryMode:'remote',//远程模式                                              allQuery:'allArea',                                               minChars:1,//下拉框自动选择前用户需要输入的最小字符数量                                               queryDelay:300,//查询延迟时间(毫秒)                                                        triggerAction:'all',//单击按钮显示全部数据                                              forceSelection:true,//要求输入值必须在列表中存在                                               typeAhead:true,//允许自动选择匹配的剩余部分文本                                               value:'1'//默认值                                          }                              );                             roleStore.load();                                 Ext.getCmp('user_save').setDisabled(true);                                   this.setText('Save');                                 user_form.remove('roleName');                             }else{                             if(user_form.getForm().isValid()){                                       user_form.getForm().submit({                                           url: 'userAction!editUser.action',                                           submitEmptyText: false,                                           waitTitle:'Please wait',                                           waitMsg: 'The user is editing...',                                           params : {                                              "user.userName":Ext.getCmp('user-name').getValue(),                                             "user.password":Ext.getCmp('password').getValue(),                                             "user.status":Ext.getCmp('status').getValue(),                                             "role.id":Ext.getCmp('roleNames').getValue(),                                             "user.id" : Ext.getCmp('id').getValue()                                                                                      },                                           success:function(form,action){                                               var response = Ext.decode(action.response.responseText);                                               Ext.Msg.alert('tip', response.msg);                                               userStore.load();                                           },                                           failure:function(form,action){                                               Ext.Msg.alert('tip', 'Edit user failure!');                                           }                                       });                                   }else{                                       Ext.Msg.alert('tip', 'Data validation failures!');                                   }                                this.setText('Edit');                                      Ext.getCmp('userForm').remove('roleNames');                                      Ext.getCmp('user_save').setDisabled(false);                              }                         }                       },{                           text: 'Cancel',                           maxWidth:30,                           handler: function() {                               this.up('form').getForm().reset();                           }                       }]                   });                             win = desktop.createWindow({                      id: 'users-grid',                      title:'User Mamage',                      width:780,                    height:480,                     iconCls: 'icon-grid',                      layout: {                          type: 'hbox',                          align: 'stretch',                          defaultMargins:{                              top: 1,                              right: 1,                              bottom: 1,                              left: 1                          },                          padding:0                      },                      items: [                      usergrid,                     userform                      ]                  });              }              win.show();            return win;          }      });  

??

目前desktop的例子就自己扩展了一个用户模块,最近由于时间紧,还没有进行下一步扩展,不过对于学习还是可以参考的了,由于是集成SSH所欲文件有点大无法上传,如果有需要还是留言吧或者有微博的朋友可以加我为好友,因为微博一直在线,可以回复的及时一些吧,微博昵称:临时工介绍所

?

热点排行