`
qinya06
  • 浏览: 595076 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

转 ext Demo

阅读更多
下面这个是主界面的设计

Ext.onReady(function() { 
Ext.QuickTips.init(); 
Ext.BLANK_IMAGE_URL = 'ext/s.gif'; 
// ---------------------------------------------好友列表树 
var Tree = Ext.tree; 
// 定义(可以异步加载)根节点 
var root = new Tree.AsyncTreeNode({ 
id : '0', 
text : '目录根节点' 
}); 
// 开始构建树面板 
var treePanel = new Tree.TreePanel({ 
id : 'im-tree', 
root : root, 
loader : new Tree.TreeLoader({ 
// 从数据库加载树形结构数据 
dataUrl : '/graduationPrj/treePro.action' 
}), 
deferredRender : false, 
region : 'west', 
title : '在线用户', 
border : false, 
rootVisible : false, 
lines : false, 
autoScroll : true, 
enableDD : false, 
animate : false, 
split : true, 
width : 200, 
minSize : 175, 
maxSize : 400, 
collapsible : false, 
selModel : new Ext.tree.MultiSelectionModel(), 
margins : '0 0 0 5' 
}); 

/** 
* @method expandAll 
* @private 
* @description 展开所有节点 
*/ 
var expandAll = function() { 
treePanel.root.expand(true, false); 
} 

/** 
* @method updateUserList 
* @private 
* @description 定时更新在线用户列表,刷新时间为10分钟 
*/ 
var updateUserList = function() { 
treePanel.root.reload(); 
treePanel.root.expand(true, false); 
setTimeout(updateUserList, 1000 * 10); 
} 

/** 
* @method treeDoubleClick 
* @private 
* @description 添加‘双击事件’处理 当双击节点时,弹出聊天对话框 
*/ 
var treeDoubleClick = function(node, e) { 
if (node.isLeaf()) { 
addOrOpenTab(node.text); 
} 
} 
treePanel.on('dblclick', treeDoubleClick); 


/** 
* @method treeDoubleClick 
* @private 
* @description 判断tab有没有存在,如果不存在添加新tab 
*/ 
var addOrOpenTab = function(nodeText) { 
var n = tabs.getComponent(nodeText); 
if (!n) { 
n = tabs.add({ 
'id' : nodeText, 
'title' : nodeText, 
layout : 'border', 
closable : true, 
items : [new Ext.Panel({ 
region : 'center', 
title : '聊天记录  ', 
autoScroll : true, 
html : '<div id=' + nodeText + 'div></div>', 
tools : [{ 
id : 'refresh', 
qtip : '注意:如果长时间没有收到对方回应,试一下', 
// hidden:true, 
handler : function(event, toolEl, panel) { 
// refresh logic 
} 
}] 
})] 
}); 
} 
tabs.setActiveTab(n); 
} 


// ---------------------------------------------公共聊天室 
var logPanel = new Ext.Panel({ 
region : 'center', 
title : '聊天记录  ', 
id : 'history_panel', 
autoScroll : true, 
html : '<div id=publicChat></div>', 
tools : [{ 
id : 'refresh', 
qtip : '注意:如果长时间没有收到对方回应,试一下', 
// hidden:true, 
handler : function(event, toolEl, panel) { 
// refresh logic 
} 
}] 
}); 
/** 
* @method treeDoubleClick 
* @private 
* @description 公用的输入文本框 
*/ 
var chatPanel = new Ext.Panel({ 
region : 'south', 
title : '聊天啦', 
layout : 'fit', 
// split:true, 
autoScroll : true, 
height : 250, 
// minSize: 200, 
// maxSize: 500, 
collapsible : true, 

margins : '0 0 0 0', 
items : { 
xtype : 'form', 
baseCls : 'x-plain', 
autoHeight : true, 
autoWidth : true, 
bodyStyle : 'padding:10 10px 0;', 
defaults : { 
anchor : '98%' 
}, 
items : [{ 
xtype : 'htmleditor', 
height : 150, 
id : 'htmleditor', 
hideLabel : true 
}] 
}, 
bbar : [{ 
text : '发送请输入Ctrl-Enter', 
handler : function() { 
var t = tabs.getActiveTab().getId(); 
if (t == 'allChat') { 
sendPublicMsg(); 
} else { 
sendPrivateMsg(); 
} 
} 
} 

, '-', { 
text : '清除', 
handler : function() { 
Ext.getCmp("htmleditor").reset(); 
} 
}] 
}); 

var allChatPanel = new Ext.Panel({ 
id : 'allChat', 
title : '公共聊天室', 
layout : 'border', 
items : [logPanel] 
}); 

/** 
* 构建标签面板,出现在主显示页面,用于显示信息 
*/ 
var tabs = new Ext.TabPanel({ 
region : 'center', 
deferredRender : false, 
id : 'tabs', 
resizeTabs : true, 
minTabWidth : 115, 
tabWidth : 135, 
height : 100, 
autoScroll : true, 
enableTabScroll : true, 
plugins : new Ext.ux.TabCloseMenu(), 
items : [allChatPanel] 
}); 
tabs.setActiveTab(allChatPanel); 

var sendPublicMsg = function() { 
var content_value = Ext.getCmp("htmleditor").getValue(); 
var t = tabs.getActiveTab().getId(); 
if (content_value.trim() == '') { 
Ext.Msg.alert("消息提示", "您没有输入消息文本内容!"); 
Ext.getCmp("htmleditor").focus(); 
return; 
} 

var receivers_values = []; 
var tree = Ext.getCmp('im-tree'); 
var receivers = tree.getSelectionModel().getSelectedNodes(); 
for (i = 0; i < receivers.length; ++i) { 

receivers_values.push(receivers[i].attributes.sessionId); 

} 
if (receivers_values.length == 0) { 
Ext.Msg.alert("消息提示", '您没有选择接收者!'); 
tree.focus(); 
return; 
} 
// alert(receivers_values.length); 
if (receivers_values.length > 1) { 
Ext.Msg.alert("消息提示", '只能选择一个接收者!'); 
tree.focus(); 
return; 
} 
document.getElementById('publicChat').innerHTML = t + '中的aaadasdasdasd'; 
} 

var sendPrivateMsg = function() { 
var content_value = Ext.getCmp("htmleditor").getValue(); 
var t = tabs.getActiveTab().getId(); 
if (content_value.trim() == '') { 
Ext.Msg.alert("消息提示", "您没有输入消息文本内容!"); 
Ext.getCmp("htmleditor").focus(); 
return; 
} 

document.getElementById(t + 'div').innerHTML = t + '中的aaadasdasdasd'; 
document.getElementById("publicChat").innerHTML = t + '中的aaadasdasdasd'; 
} 

/** 
* @method treeDoubleClick 
* @private 
* @description 主界面,添加各个元素 
*/ 

var viewport = new Ext.Viewport({ 
layout : 'border', 
items : [treePanel, { 
region : 'center', 
layout : 'border', 
autoScroll : true, 
items : [tabs, chatPanel] 
} 

] 
}); 
expandAll(); 
updateUserList(); 
}); 

// ------------------------------------------------------------------- 
分享到:
评论

相关推荐

    Ext_Demo.rar_DEMO_Ext demo_ext_demo_java ext demo_javaext demo

    【标题】"Ext_Demo.rar_DEMO_Ext demo_ext_demo_java ext demo_javaext demo" 指示了一个关于Java与EXT.js集成的演示项目。EXT是一个强大的JavaScript库,用于构建富客户端应用程序,而Java通常在后端提供数据和服务...

    Ext Demo, Ext学习入门

    在 ExtDemo 中,Spring 可能用于处理后端逻辑,提供 RESTful API 给前端 ExtJs 应用调用。 **Struts2** 是一个基于 MVC 模式的 Java Web 框架,它整合了 WebWork 的优点,提供了动作调度、拦截器、结果视图等机制。...

    ExtDemo例子绝对能跑起来

    "ExtDemo例子绝对能跑起来"这个标题表明我们将探讨一个关于ExtJS的示例项目,这个项目在正确配置和执行后,能够正常运行。 描述中的"ext ext例子"可能是由于输入错误,但我们可以理解为这是在强调ExtJS框架的实例。...

    Ext Demo grid的增删改查例子

    接下来 在mysql里建立 数据库位ext的库 再去项目中 src/META-INF/persistence.xml的配置文件里吧&lt;!-- &lt;property name="hibernate.hbm2ddl.auto" value="update" /&gt; --&gt;这句话的注释去掉 好了 部署项目到tomcat上 ...

    Ext_Demo.rar_DEMO_ext de_ext demo

    【标题】"Ext_Demo.rar_DEMO_ext de_ext demo" 提供的是一个使用C#作为脚本语言,并结合ASP(Active Server Pages)和EXT框架构建的后台管理员登录界面的示例项目。EXT是一个流行的JavaScript库,它提供了丰富的用户...

    Ext 官方的完整Demo

    在"Ext 官方的完整Demo"中,我们可以找到一系列示例,帮助开发者理解和学习如何使用Ext框架来创建复杂的Web应用。 1. **组件系统**:Ext的核心是其强大的组件模型,它允许开发者通过组合各种UI组件(如按钮、表格、...

    ExtDemo初学者样例

    新手入门,有ext-base.js ext-all.js ext-all.css。简单的配置,仅适用于初学,没有debug

    ext5.0demo整理2

    ext5.0demo整理

    EXT demo 例子

    自己学习ext时 常用组件的例子代码 可以到时用的时候Copy

    ext.net 1.x DEMO

    在给定的DEMO中,我们看到了如何利用EXT.NET实现基本的数据操作和拖放功能,这对于物流公司的管理应用是非常实用的。通过理解EXT.NET的组件和API,你可以进一步扩展和定制这个DEMO,以适应更多复杂的需求。

    ext 4.1完整demo

    ext 4.1 完整demo,入门 参照 必备

    ext布局demo

    ext 3做的布局DEMO 适合新手借鉴 用myeclipse写的 可以直接用浏览器打开

    ExtDemo中关于TreeView的例子

    一个初步入门的Extdemo,对初学者有很大的帮助

    简单的formt和grid的EXT DEMO

    简单的formt和grid的EXT DEMO,练习用

    基于ssh ext demo

    标题“基于ssh ext demo”和描述“基于ssh ext demo”暗示了这个压缩包可能包含一个示例项目,该项目演示了如何使用SSH (Secure Shell) 扩展在某个IT环境中进行操作。SSH是一种网络协议,用于安全地远程登录到服务器...

    EXT_DEMO.rar_DEMO_ext desktop de_ext desktop demo_一起ext

    EXT_DEMO.rar_DEMO_ext_desktop_de_ext_desktop_demo_一起ext这个压缩包文件看起来包含了一个EXT桌面系统的演示示例,旨在供用户参考和学习。EXT桌面系统可能是一种基于Web的用户界面框架,用于构建富互联网应用程序...

    Ext4+SpringMVC实例Demo源码

    在"Ext4+SpringMVC实例Demo源码"中,我们可以期待看到如何将这两个技术结合,创建一个具有交互性和数据管理功能的Web应用。这个Demo可能包含了以下关键知识点: 1. **Ext4组件使用**:Ext4提供了一系列的UI组件,如...

    EXT3.0的经典Demo

    这个“EXT3.0的经典Demo”很可能是为了展示EXT3.0文件系统的功能、性能以及如何在实际环境中使用它而编写的官方示例。在Linux世界里,EXT3(Extended File System 3)是EXT2的后续版本,它在20世纪90年代末期推出,...

    ext---demo

    Extjs4 此源码为学习笔记一至九的全部源码,其中包含Extjs4的资源包,由于使用的是asp作为服务端,所以建议大家使用windows主机进行测试,所有案例均在demo文件夹中。

    ext.net 0.8的demo

    在"ext.net 0.8的demo"中,我们可以通过一系列示例来了解和学习如何使用这个框架。Coolite Toolkit是一个与Ext.NET类似的工具包,它同样致力于简化ASP.NET AJAX开发,提供美观的用户界面元素。 首先,让我们深入...

Global site tag (gtag.js) - Google Analytics