ExtJs 4给菜单和按钮加上快捷键
来源:互联网 发布:c数组内存分配 编辑:程序博客网 时间:2024/06/09 15:29
var kb,
owner,
mappings;
function addKeyBinding(c) {
if (kb = c.keyBinding) {
delete c.keyBinding;
if (!kb.fn && c.handler) {
kb.fn = function(k, e) {
e.preventDefault();
e.stopEvent();
c.handler.call(c.scope, c, e);
}
}
mappings.push(kb);
var t = [];
if (kb.ctrl) t.push('Ctrl');
if (kb.alt) t.push('Alt');
if (kb.shift) t.push('Shift');
t.push(kb.key.toUpperCase());
c.hotKey = t.join('+');
c.showHotKey = kb.showHotKey;
if (c instanceof Ext.menu.Item) {
c.onRender = Ext.Function.createSequence(c.onRender,addMenuItemHotKey);
} else if ((c instanceof Ext.Button) && (c.showHotKey)) {
c.onRender = Ext.Function.createSequence(c.onRender,addButtonHotKey);
}
}
if ((c instanceof Ext.Button) && c.menu) {
c.menu.cascade(addKeyBinding);
}
}
function findKeyNavs() {
delete this.onRender;
if (owner = this.ownerCt) {
mappings = [];
this.cascade(addKeyBinding);
if (!owner.menuKeyMap) {
//owner.menuKeyMap = new Ext.KeyMap(owner.el, mappings);
var target = document;
if((mappings[0].global!=null)&&(mappings[0].global==false))
{
target=owner.el;
}
owner.menuKeyMap = new Ext.KeyMap(target, mappings);
owner.el.dom.tabIndex = 0;
} else {
owner.menuKeyMap.addBinding(mappings);
}
}
}
function addMenuItemHotKey() {
delete this.onRender;
if((this.showHotKey!=null)&&(this.showHotKey == false))
return;
this.el.child('.x-menu-item-link').setStyle({
overflow: 'hidden',
zoom: 1
});
this.el.child('.x-menu-item-link').child('.x-menu-item-text').setStyle({
'float': 'left'
});
this.el.child('.x-menu-item-link').createChild({
style: {
padding: '0px 0px 0px 15px',
float: 'right',
},
html: this.hotKey
});
}
function addButtonHotKey() {
delete this.onRender;
if((this.showHotKey!=null)&&(this.showHotKey == false))
return;
var p = this.btnEl.up('');
p.setStyle({
overflow: 'hidden',
zoom: 1
});
if(p.up('td')!=null)
p.up('td').setStyle('text-align', 'left');
this.btnEl.setStyle('.x-menu-item-text').setStyle({
'float': 'left'
});
p = p.createChild({
style: {
padding: '0px 0px 0px 15px',
float: 'right',
position: 'relative',
bottom: Ext.isWebKit ? '-1px' : '-2px'
},
html: this.hotKey
});
}
return {
init: function(toolbar) {
toolbar.onRender = Ext.Function.createSequence(toolbar.onRender,findKeyNavs);
toolbar.doLayout = Ext.Function.createSequence(toolbar.doLayout,findKeyNavs);
}
}
})());
而如何使用这个插件,可以参考下这段代码:
tbar: {
plugins: new Ext.ux.ToolbarKeyMap(),
items: [{
text: 'Main Menu',
menu: {
items: [{
text: 'First option',
keyBinding: {
key: 'a',
ctrl: true
},
handler: onMenuClick
}, {
text: 'Second option',
keyBinding: {
key: 'c',
alt: true
},
handler: onMenuClick
}]
}
}, {
text: 'A Button',
handler: function() {
alert("Clicked button");
},
keyBinding: {
key: 'd',
ctrl: true,
alt: true
},
showHotKey: true // defaults to NOT showing the hotkey name
}]
},
- ExtJs 4给菜单和按钮加上快捷键
- 设置按钮和菜单快捷键
- 给菜单加上图片
- extjs 给column 加上提示
- 给按钮加上链接功能
- 给按钮加上小盾牌
- MFC:给按钮加上图片
- 给按钮加上链接功能
- 给按钮加上bmp图片
- 如何给swing加上alt+x和ctrl+x快捷键
- 给DataGrid加上右键菜单
- VB:给菜单加上图标
- 给DataGrid加上右键菜单
- 给按钮设置菜单
- 给菜单添加快捷键
- Windows 7:为菜单快捷键加上下划线
- 给资源管理器加上自定义按钮失败 :(
- 给PowerPoint按钮加上提示文字
- JAVA的instanceOf
- 为什么嵌入式开发人员要使用FPGA
- Undefined symbols for architecture x86_64 解决办法的再补充
- 水晶头接法
- 类图 元素
- ExtJs 4给菜单和按钮加上快捷键
- 每天喝水的正确时间
- 执行 ./runcluvfy.sh stage -pre crsinst -n node1,node2 -verbose错误
- 收藏 C# Thu Mar 1 00:00:00 UTC+0800 2012 如何转换为2012-03-01
- SDN初创公司Big Switch获得Intel的650万美元融资,挑战思科的网络技术霸权
- SVN常用hooks
- 浅析如何将C#数据查询结果放进Combobox中显示
- Why headless android
- Ubuntu .deb包安装方法