基于ExtJS的左右框架和消息传递处理
来源:互联网 发布:360mac版在哪下载 编辑:程序博客网 时间:2024/06/17 14:46
更改为配置动态加载后,将可以作为左右关系的框架使用
Ext.namespace('cms.SysConfig');
//左右组合管理
cms.SysConfig.fnPanel = function(config) {
//如果在继承时在override参数中定义了constructor方法,则子类不会继承父类在构造函数中定义的属性,
//但是可以继承在prototype中定义的属性,
//在这种情况下只有在constructor中调用父类的构造函数myClass.superclass.constructor.call(this,……);
//才会继承父类在构造函数中定义的对象。
cms.SysConfig.fnPanel.superclass.constructor.call(this, config);
};
Ext.extend(cms.SysConfig.fnPanel, //子类名
Ext.ux.BaseControl, //父类名
{ //子类的创建函数,存在就Override,不存在就create
leftPanel:undefined,
rightfnPanel:undefined,
allfnPanel:undefined,
getControl : function() {
var items = new Array();
//左侧面板
this.leftfnPanel = new cms.SysConfig.leftfnPanel({
listeners : {//监听左侧触发的事件消息
// menuEvent : this.navigateEventHandler.createDelegate(this), //监听方法,第一种写法
NavigateEvent:this.navigateEventHandler.createDelegate(this)
}
});
//监听方法,第二种写法
//this.leftfnPanel.addListener("menuEvent",this.navigateEventHandler.createDelegate(this),this.leftfnPanel);
//监听方法,第三种写法,三种写法效果等同
this.leftfnPanel.on("menuEvent",this.navigateEventHandler.createDelegate(this),this.leftfnPanel);
items.push(this.leftfnPanel.getControl());
//左侧面板
this.rightfnPanel = new cms.SysConfig.rightfnPanel({
listeners : {//监听左侧触发的事件消息
rightEvent : this.rightEventHandler.createDelegate(this)
}
});
items.push(this.rightfnPanel.getControl());
//总的组装面板
this.allPanel = new Ext.Panel({
region:'center',
border : false,
frame : false,
layout: 'border',
items : [items],
listeners : {
resize : function(comp, adjWidth, adjHeight, rawWidth, rawHeight) {
}.createDelegate(this)
}
});
return this.allPanel;
},
/**
* 构建完对象进行数据的初始化加载
* @param {} params
*/
init:function(){
this.leftfnPanel.init();
this.rightfnPanel.init();
},
/**
* 左侧面板触发的事件
* 联动右侧变化
*/
navigateEventHandler:function(eventObject){
//调用右侧代码
this.rightfnPanel.onEventHandler(eventObject);
},
/**
* 右侧侧面板触发的事件
* 联动左侧变化
*/
rightEventHandler:function(eventObject){
//调用右侧代码
this.leftfnPanel.onEventHandler(eventObject);
}
});
Ext.namespace('cms.SysConfig');
cms.SysConfig.leftfnPanel = function(config) {
//如果在继承时在override参数中定义了constructor方法,则子类不会继承父类在构造函数中定义的属性,
//但是可以继承在prototype中定义的属性,
//在这种情况下只有在constructor中调用父类的构造函数myClass.superclass.constructor.call(this,……);
//才会继承父类在构造函数中定义的对象。
cms.SysConfig.leftfnPanel.superclass.constructor.call(this, config);
};
Ext.extend(cms.SysConfig.leftfnPanel, //子类名
Ext.ux.BaseControl, //父类名
{ //子类的创建函数,存在就Override,不存在就create
navigatePanel:undefined,
allPanel:undefined,
getControl : function() {
var items = new Array();
var btnItems=new Array();
var businessTypeConfigBtn = new Ext.Button({
id:"businessTypeConfig",
code:"businessTypeConfig",
text : '业务类型配置',
height:40,
width:"100%",
handler : this.btnHandler.createDelegate(this)
});
btnItems.push(businessTypeConfigBtn);
var unitTypeConfigBtn = new Ext.Button({
id:"unitTypeConfig",
code:"unitTypeConfig",
text : '单位类型配置',
height:40,
width:"100%",
handler : this.btnHandler.createDelegate(this)
});
btnItems.push(unitTypeConfigBtn);
var BusinessTypeunitTypeConfigBtn = new Ext.Button({
id:"BusinessTypeunitTypeConfig",
code:"BusinessTypeunitTypeConfig",
text : '业务类型下的单位类型配置',
height:40,
width:"100%",
handler : this.btnHandler.createDelegate(this)
});
btnItems.push(BusinessTypeunitTypeConfigBtn);
var placeTypeConfigBtn = new Ext.Button({
id:"placeTypeConfig",
code:"placeTypeConfig",
text : '场所类型配置',
height:40,
width:"100%",
handler : this.btnHandler.createDelegate(this)
});
btnItems.push(placeTypeConfigBtn);
var unitTypeplaceTypeConfigBtn = new Ext.Button({
id:"unitTypeplaceTypeConfig",
code:"unitTypeplaceTypeConfig",
text : '单位类型下的场所类型配置',
height:40,
width:"100%",
handler : this.btnHandler.createDelegate(this)
});
btnItems.push(unitTypeplaceTypeConfigBtn);
var unitTypeAlarmTypeConfigBtn = new Ext.Button({
id:"unitTypeAlarmTypeConfig",
code:"unitTypeAlarmTypeConfig",
text : '单位类型下的报警类型配置',
height:40,
width:"100%",
handler : this.btnHandler.createDelegate(this)
});
btnItems.push(unitTypeAlarmTypeConfigBtn);
var placeTypeGroupConfigBtn = new Ext.Button({
id:"placeTypeGroupConfig",
code:"placeTypeGroupConfig",
text : '场所类型组配置',
height:40,
width:"100%",
handler : this.btnHandler.createDelegate(this)
});
btnItems.push(placeTypeGroupConfigBtn);
this.navigatePanel = new Ext.Panel({
//title:"导航面板",
items:[btnItems]
});
items.push(this.navigatePanel);
//左侧导航组合面板
this.allPanel = new Ext.Panel({
title:"数据字典配置",
id:"leftPanel",
region:"west",
width:300,
items:[items],
listeners : {
//底层树
NavigateEvent : function(eventObject) {
//事件传递到上层面板
this.fireEvent(eventObject.eventCode, eventObject);
}.createDelegate(this)
}
});
this.navigatePanel.parent =this.allPanel;
return this.allPanel;
},
/**
* 构建完对象进行数据的初始化加载
* @param {} params
*/
init:function(){
},
btnHandler:function(button, e) {
this.throwMenuEvent(button);
},
throwMenuEvent : function(button) {
var eventObject = {
eventCode : 'menuEvent',
sender : this,
params : {
operate :button.code,
target : button,
data: null
}
};
this.fireEvent(eventObject.eventCode, eventObject);
},
/**
* 接收来自右侧的消息
* 并进行业务的切换
* @param {} eventObject
*/
onEventHandler:function(eventObject){
switch(eventObject.params.operate){
}
}
});
Ext.namespace('cms.SysConfig');
cms.SysConfig.rightfnPanel = function(config) {
//如果在继承时在override参数中定义了constructor方法,则子类不会继承父类在构造函数中定义的属性,
//但是可以继承在prototype中定义的属性,
//在这种情况下只有在constructor中调用父类的构造函数myClass.superclass.constructor.call(this,……);
//才会继承父类在构造函数中定义的对象。
cms.SysConfig.rightfnPanel.superclass.constructor.call(this, config);
};
Ext.extend(cms.SysConfig.rightfnPanel, //子类名
Ext.ux.BaseControl, //父类名
{ //子类的创建函数,存在就Override,不存在就create
placeTypefnPanel:undefined,
businessTypefnPanel:undefined,
allPanel:undefined,
getControl : function() {
var fnPanelItems = new Array();
//功能面板1..N
//场所类型组合管理
this.placeTypefnPanel=new cms.SysConfig.PlaceTypefnPanel({
code:"placeTypeConfigfnPanel"
});
fnPanelItems.push(this.placeTypefnPanel.getControl());
//业务类型组合管理
this.businessTypefnPanel=new cms.SysConfig.BusinessTypefnPanel({
code:"businessTypeConfigfnPanel"
});
fnPanelItems.push(this.businessTypefnPanel.getControl());
this.allPanel= new Ext.Panel({
id:"rightPanel",
region:"center",
layout:"fit",
items:[fnPanelItems]
});
return this.allPanel;
},
/**
* 构建完对象进行数据的初始化加载
* @param {} params
*/
init:function(){
this.placeTypefnPanel.init(-1);//-1全部场所类型
},
/**
* 接收左侧的消息并处理
* 切换右侧功能的显示
* @param {} eventObject
*/
onEventHandler:function(eventObject){
switch(eventObject.params.operate){
case "businessTypeConfig":{
this.switchPanel("businessTypeConfigfnPanel");
break;
}
case "placeTypeConfig":{
this.switchPanel("placeTypeConfigfnPanel");
break;
}
}
},
/**
* 控制面板的显示
*/
switchPanel: function(panelCode){
for (var index = 0, len = this.allPanel.items.items.length; index < len; index++) {
var item = this.allPanel.items.items[index];
if (item.code == panelCode) {
item.hidden && item.show();
} else {
!item.hidden && item.hide();
}
}
this.allPanel.doLayout();
}
});
- 基于ExtJS的左右框架和消息传递处理
- soap消息传递和处理(基于Message和Payload的方式)
- Webservice06---SOAP消息的传递和处理(基于Message方式)
- Webservice_12_传递SOAP的消息和处理
- 基于Bundle的消息传递
- SOAP消息的创建、传递和处理(MESSAGE方式)
- SOAP消息的传递和处理(PAYLOAD方式)
- 左右互搏,基于http的xml消息的服务器和客户端实现
- 基于JSR-356实现的Tyrus WebSocket框架的消息传递机制初步了解
- soap消息的传递与处理(二)(基于payload的方式)
- soap消息分析和soap消息的传递和处理(一)
- soap消息的传递和处理(三)——包含header和异常的处理
- 基于CORBA的可靠消息传递技术
- 基于Service Broker的异步消息传递
- Webservice_13_Payload的方式传递SOAP的消息和处理 和 用SOAPMessage传递SOAP的消息和处理(无参数)
- 窗口消息处理对象的传递
- 基于netty3.x框架的消息处理,需要注意线程池结构的设计
- Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递
- 是什么引起执行计划变得极其糟糕? 应该使用更新统计信息来解决它吗?
- 【HDU】3016 Man Down 线段树DP
- 我所理解的谷歌云计算
- 要想提高工作效率,请拒绝做这7种事
- 十道海量数据处理面试题与十个方法大总结
- 基于ExtJS的左右框架和消息传递处理
- 解释术语:虚拟内存、缺页中断、抖动
- lightoj 1414 February 29
- HDU 1301 Jungle Roads 最小生成树K算法
- 1
- 《SAS编程与数据挖掘商业案例》学习笔记之七
- 获取地址的IP + 站点
- 基于Node.js平台mongoDB开发——mongoskin(by vczero)
- #define中 #与##的神奇用法