/*
* IChat Emote Chooser v0.1
* IChat Emote Chooser -- EmoteChooser
* viperasi@gmail.com
* 根据Ext.ColorPalette修改
* 文件名:EmoteChooser.js
*/
Ext.EmoteChooser = function(config){
Ext.EmoteChooser.superclass.constructor.call(this, config);
this.addEvents(
'select'
);
if(this.handler){
this.on("select", this.handler, this.scope, true);
}
};
Ext.extend(Ext.EmoteChooser, Ext.Component, {
itemCls : "emote-chooser",
value : null,
clickEvent:'click',
ctype: "Ext.EmoteChooser",
allowReselect : false,
emotes : [//表情列表
"001","002","003","004","005","006","007","008","009","010","011",
"012","013","014","015","016","017","018","019","020","021","022",
"023","024","025","026","027","028","029","030","031","032","033",
"034","035","036","037","038","039","040","041","042","043",
"044","045","046","047","048","049","050","051","052","053","054",
"055","056","057","058","059","060"
],
onRender : function(container, position){
var t = this.tpl || new Ext.XTemplate(
'<tpl for="."><a href="#" class="emote-{.}" hidefocus="on"><em><img src="images/emote/emote_{.}.gif" unselectable="on" /></em></a></tpl>'
);//套用模板,图片路径需自己修改
var el = document.createElement("div");
el.className = this.itemCls;
t.overwrite(el, this.emotes);
container.dom.insertBefore(el, position);
this.el = Ext.get(el);
this.el.on(this.clickEvent, this.handleClick, this, {delegate: "a"});
if(this.clickEvent != 'click'){
this.el.on('click', Ext.emptyFn, this, {delegate: "a", preventDefault:true});
}
},
afterRender : function(){
Ext.EmoteChooser.superclass.afterRender.call(this);
if(this.value){
var s = this.value;
this.value = null;
this.select(s);
}
},
handleClick : function(e, t){
e.preventDefault();
if(!this.disabled){
var c = t.className.match(/(?:^|\s)emote-(.{3})(?:\s|$)/)[1];
this.select(c.toUpperCase());
}
},
select : function(emote){
//emote = emote.replace("#", "");
if(emote != this.value || this.allowReselect){
var el = this.el;
if(this.value){
el.child("a.emote-"+this.value).removeClass("emote-chooser-sel");
}
el.child("a.emote-"+emote).addClass("emote-chooser-sel");
this.value = emote;
this.fireEvent("select", this, emote);
}
}
});
Ext.reg('emotechooser', Ext.EmoteChooser);
/*
* IChat Emote Chooser v0.1
* IChat Emote Chooser -- EmoteItem
* viperasi@gmail.com
* 根据Ext.menu.ColorItem修改
* 文件名:EmoteItem.js
*/
Ext.menu.EmoteItem = function(config){
Ext.menu.EmoteItem.superclass.constructor.call(this, new Ext.EmoteChooser(config), config);
this.chooser = this.component;
this.relayEvents(this.chooser, ["select"]);
if(this.selectHandler){
this.on('select', this.selectHandler, this.scope);
}
};
Ext.extend(Ext.menu.EmoteItem, Ext.menu.Adapter);
/*
* IChat Emote Chooser v0.1
* IChat Emote Chooser -- EmoteMenu
* viperasi@gmail.com
* 根据Ext.menu.ColorMenu修改
* 文件名:EmoteMenu.js
*/
Ext.menu.EmoteMenu = function(config){
Ext.menu.EmoteMenu.superclass.constructor.call(this, config);
this.plain = true;
var ci = new Ext.menu.EmoteItem(config);
this.add(ci);
this.chooser = ci.chooser;
this.relayEvents(ci, ["select"]);
};
Ext.extend(Ext.menu.EmoteMenu, Ext.menu.Menu);
/*
*调用示例
*
*/
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>emote_chooser</title>
<link rel="stylesheet" type="text/css" href="resources/css/ext-all.css" />
<script type="text/javascript" src="js/ext-base.js"></script>
<script type="text/javascript" src="js/ext-all.js"></script>
<script type="text/javascript" src="js/EmoteChooser.js"></script>
<script type="text/javascript" src="js/EmoteItem.js"></script>
<script type="text/javascript" src="js/EmoteMenu.js"></script>
<style type="text/css"><!--css样式,必须存在,可写入ext-all.css -->
.emote-chooser{width:150px;height:92px;cursor:pointer;}
.emote-chooser a{border:1px solid #fff;float:left;padding:2px;text-decoration:none;-moz-outline:0 none;outline:0 none;cursor:pointer;}
.emote-chooser a:hover,.emote-chooser a.emote-chooser-sel{border:1px solid #8BB8F3;background:#deecfd;}
.emote-chooser em{display:block;border:1px solid #ACA899;}
.emote-chooser em img{cursor:pointer;display:block;height:20px;line-height:10px;width:20px;}
</style>
<script language="javascript">
Ext.onReady(function(){
var emoteMenu = new Ext.menu.EmoteMenu({
allowReselect: true,
focus: Ext.emptyFn,
plain:true,
selectHandler: function(cm, emote){
Ext.example.msg('Emote Selected', 'You choose {0}.', emote);
},
scope: this,
clickEvent:'mousedown'
});
var tb = new Ext.Toolbar();
tb.render('toolbar');
tb.add({
text:'emote',
iconCls: 'bmenu', // <-- icon
menu: emoteMenu // assign menu by instance
});
});
</script>
</head>
<body>
<div id="container">
<div id="toolbar"></div>
</div>
</body>
</html>
附上 HtmlEditor的添加示例:
var editor = new Ext.form.HtmlEditor({
//内容略
});
editor.getToolbar().add('-', {
tooltip : '选择表情',
iconCls : 'temote',
menu : new Ext.menu.EmoteMenu({
allowReselect : true,
focus : Ext.emptyFn,
plain : true,
selectHandler : function(cm, emote) {
var emimg = "<img src='images/emote/emote_"
+ emote + ".gif' />";
editor.insertAtCursor(emimg);
},
scope : this,
clickEvent : 'mousedown'
})
});
此代码不全,请在form 或者 win 被show 或者 render的时候 添加此内容
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/viperasi/archive/2008/08/06/2778036.aspx
分享到:
相关推荐
**2.23 HTML Editor (Ext.form.HtmlEditor)** - **xtype**: `htmleditor` - **功能描述**:HTML Editor 是一个富文本编辑器。 - **主要用途**:适用于需要用户编辑格式化的文本内容。 **2.24 Number Field (Ext....
4.1.16 Ext.form.field.HtmlEditor编辑器字段 4.1.17 Ext.form.field.Display只读文本字段 4.1.18 Ext.form.Label标签字段 4.1.19 Ext.form.FieldSet字段集 4.1.20 Ext.form.FieldContainer容器字段 4.1.21 Ext...
Extjs 4.x的插件和扩展Ext.ux.form.field.CodeMirror 可与ExtJS 4.0.7、4.1.x和4.2.x以及CodeMirror 3.20一起使用。 执照:麻省理工学院演示:论坛:Ext.ux.form.field.UploadFileField 执照:麻省理工学院演示:...
`Ext.form.HtmlEditor`是一个富文本编辑器,提供了多种格式化工具,如对齐、字体颜色、字体大小等。通过`enableAlignments`、`enableColors`等参数,可以开启或关闭不同的编辑功能,以适应不同复杂度的文本编辑需求...
- `htmleditor`:`Ext.form.HtmlEditor`,HTML编辑器组件。 - `numberfield`:`Ext.form.NumberField`,数字输入框。 - `radio`:`Ext.form.Radio`,单选按钮。 - `textarea`:`Ext.form.TextArea`,多行文本...
43. **Ext.form.HtmlEditor类**:HTML编辑器组件,提供富文本编辑功能。 这些类构成了EXT的核心API,它们提供了丰富的UI组件、数据管理和网络通信功能,使得开发者能够构建出功能强大、用户体验优秀的Web应用。理解...
9. **插件和扩展**:EXT社区提供了许多表单验证相关的插件和扩展,如`Ext.form.field.Picker`,用于下拉选择验证,以及`Ext.form.field.HtmlEditor`,用于富文本编辑器的验证。 10. **实际应用**:在实际项目中,...
Ex4.0共2个压缩包特性,《ext js权威指南》 前 言 第1章 ext js 4开发入门 / 1 1.1 学习ext js必需的基础知识 / 1 1.2 json概述 / 3 1.2.1 认识json / 3 1.2.2 json的结构 / 3 1.2.3 json的例子 / 4 1.2.4 ...
var editor = new Ext.form.field.HtmlEditor({ width: 500, height: 300, plugins: [{ ptype: 'htmleditor_upload', // 自定义插件,实现图片上传 uploadUrl: '/upload/image' // 服务器端上传接口 }], ...
- **`htmleditor` (Ext.form.HtmlEditor)**: HTML编辑器组件,允许用户编辑HTML内容。 - **`label` (Ext.form.Label)**: 标签组件,用于为表单元素提供描述性标签。 - **`numberfield` (Ext.form.NumberField)**: ...
var editor = new Ext.form.HtmlEditor({ width: 500, height: 300, plugins: [new MyPlugins.ImageInsert()] }); ``` 以上只是一个简单的示例,实际开发中可能需要处理更多细节,如图片大小限制、上传到服务器...
7.2.7 在线编辑器Ext.form.HtmlEditor 7.3 ExtJS表单组件的综合应用 第8章 设计表格类布局 8.1 表格简介 8.1.1 表格的基本属性 8.1.2 制作第一个表格 8.2 表格常用功能详解 8.2.1 主要属性功能 8.2.2 自定义...
**Ext.form.HtmlEditor** - **描述**: HTML编辑器,用于编辑富文本。 - **用途**: 内容编辑、文档编写等。 **Ext.form.Label** - **描述**: 标签,用于标记表单元素。 - **用途**: 为表单元素提供描述性的标签,如...
7.2.7 在线编辑器Ext.form.HtmlEditor 7.3 ExtJS表单组件的综合应用 第8章 设计表格类布局 8.1 表格简介 8.1.1 表格的基本属性 8.1.2 制作第一个表格 8.2 表格常用功能详解 8.2.1 主要属性功能 8.2.2 自定义...
### Extjs xtype集合详解 #### 一、基本概念与背景 在Extjs开发过程中,`xtype`(扩展类型... - **`Class`**: `Ext.form.HtmlEditor` - **描述**: HTML编辑器。 10. **`label`:** - **`xtype`**: `label` - **`...
var Printreport_panel = new Ext.form.FormPanel({ frame: false, border: false, preventBodyReset: false, height: 400, layout: 'fit', items: [{ border: false, xtype: 'htmleditor', name: 'Conten'...
var editor = new Ext.form.HtmlEditor({ width: 500, height: 300, enableAlignments: true, enableLists: true, enableLinks: true, enableImages: true, // 开启图片插入功能 plugins: ['sourceedit'] // ...
在本文中,我们将深入探讨ExtJS 2.0中的FormPanel组件,并通过具体的示例来了解如何使用不同的组件,如checkbox、radio以及htmleditor。首先,Ext.FormPanel是ExtJS中用于创建表单的主要组件,它允许我们构建复杂的...
- `formcomponents`: `form`, `checkbox`, `checkboxgroup`, `combo`, `datefield`, `displayfield`, `field`, `fieldset`, `hidden`, `htmleditor`, `label`, `numberfield`, `radio`, `radiogroup`, `textarea`, `...