| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 |
- ///import core
- ///commands 右键菜单
- ///commandsName ContextMenu
- ///commandsTitle 右键菜单
- /**
- * 右键菜单
- * @function
- * @name baidu.editor.plugins.contextmenu
- * @author zhanyi
- */
- UE.plugins['contextmenu'] = function () {
- var me = this,
- menu,
- items = me.options.contextMenu||[
- {label:'删除',cmdName:'delete'},
- {label:'全选',cmdName:'selectall'},
- {
- label:'删除代码',
- cmdName:'highlightcode',
- icon:'deletehighlightcode'
- },
- {
- label:'清空文档',
- cmdName:'cleardoc',
- exec:function () {
- if ( confirm( '确定清空文档吗?' ) ) {
- this.execCommand( 'cleardoc' );
- }
- }
- },
- '-',
- {
- label:'取消链接',
- cmdName:'unlink'
- },
- '-',
- {
- group:'段落格式',
- icon:'justifyjustify',
- subMenu:[
- {
- label:'居左对齐',
- cmdName:'justify',
- value:'left'
- },
- {
- label:'居右对齐',
- cmdName:'justify',
- value:'right'
- },
- {
- label:'居中对齐',
- cmdName:'justify',
- value:'center'
- },
- {
- label:'两端对齐',
- cmdName:'justify',
- value:'justify'
- }
- ]
- },
- '-',
- {
- label:'表格属性',
- cmdName:'edittable',
- exec:function () {
- this.ui._dialogs['inserttableDialog'].open();
- }
- },
- {
- label:'单元格属性',
- cmdName:'edittd',
- exec:function () {
- //如果没有创建,创建一下先
- if(UE.ui['edittd']){
- new UE.ui['edittd'](this);
- }
- this.ui._dialogs['edittdDialog'].open();
- }
- },
- {
- group:'表格',
- icon:'table',
- subMenu:[
- {
- label:'删除表格',
- cmdName:'deletetable'
- },
- {
- label:'表格前插行',
- cmdName:'insertparagraphbeforetable'
- },
- '-',
- {
- label:'删除行',
- cmdName:'deleterow'
- },
- {
- label:'删除列',
- cmdName:'deletecol'
- },
- '-',
- {
- label:'前插入行',
- cmdName:'insertrow'
- },
- {
- label:'前插入列',
- cmdName:'insertcol'
- },
- '-',
- {
- label:'右合并单元格',
- cmdName:'mergeright'
- },
- {
- label:'下合并单元格',
- cmdName:'mergedown'
- },
- '-',
- {
- label:'拆分成行',
- cmdName:'splittorows'
- },
- {
- label:'拆分成列',
- cmdName:'splittocols'
- },
- {
- label:'合并多个单元格',
- cmdName:'mergecells'
- },
- {
- label:'完全拆分单元格',
- cmdName:'splittocells'
- }
- ]
- },
- {
- label:'复制(ctrl+c)',
- cmdName:'copy',
- exec:function () {
- alert( "请使用ctrl+c进行复制" );
- },
- query : function(){return 0;}
- },
- {
- label:'粘贴(ctrl+v)',
- cmdName:'paste',
- exec:function () {
- alert( "请使用ctrl+v进行粘贴" );
- },
- query : function(){return 0;}
- }
- ];
- if(!items.length)return;
- var uiUtils = UE.ui.uiUtils;
- me.addListener('contextmenu',function(type,evt){
- var offset = uiUtils.getViewportOffsetByEvent(evt);
- me.fireEvent('beforeselectionchange');
- if (menu)
- menu.destroy();
- for (var i = 0,ti,contextItems = []; ti = items[i]; i++) {
- var last;
- (function(item) {
- if (item == '-') {
- if ((last = contextItems[contextItems.length - 1 ] ) && last !== '-')
- contextItems.push('-');
- } else if (item.group) {
- for (var j = 0,cj,subMenu = []; cj = item.subMenu[j]; j++) {
- (function(subItem) {
- if (subItem == '-') {
- if ((last = subMenu[subMenu.length - 1 ] ) && last !== '-')
- subMenu.push('-');
- } else {
- if ((me.commands[subItem.cmdName] || UE.commands[subItem.cmdName]||subItem.query) &&
- (subItem.query ? subItem.query() : me.queryCommandState(subItem.cmdName)) > -1) {
- subMenu.push({
- 'label':subItem.label,
- className: 'edui-for-' + subItem.cmdName + (subItem.value || ''),
- onclick : subItem.exec ? function() {
- subItem.exec.call(me)
- } : function() {
- me.execCommand(subItem.cmdName, subItem.value)
- }
- })
- }
- }
- })(cj)
- }
- if (subMenu.length) {
- contextItems.push({
- 'label' : item.group,
- className: 'edui-for-' + item.icon,
- 'subMenu' : {
- items: subMenu,
- editor:me
- }
- })
- }
- } else {
- //有可能commmand没有加载右键不能出来,或者没有command也想能展示出来添加query方法
- if ((me.commands[item.cmdName] || UE.commands[item.cmdName]||item.query) &&
- (item.query ? item.query() : me.queryCommandState(item.cmdName)) > -1) {
- //highlight todo
- if(item.cmdName == 'highlightcode' && me.queryCommandState(item.cmdName) == 0)
- return;
- contextItems.push({
- 'label':item.label,
- className: 'edui-for-' + (item.icon ? item.icon : item.cmdName + (item.value || '')),
- onclick : item.exec ? function() {
- item.exec.call(me)
- } : function() {
- me.execCommand(item.cmdName, item.value)
- }
- })
- }
- }
- })(ti)
- }
- if (contextItems[contextItems.length - 1] == '-')
- contextItems.pop();
- menu = new UE.ui.Menu({
- items: contextItems,
- editor:me
- });
- menu.render();
- menu.showAt(offset);
- domUtils.preventDefault(evt);
- if(browser.ie){
- var ieRange;
- try{
- ieRange = me.selection.getNative().createRange();
- }catch(e){
- return;
- }
- if(ieRange.item){
- var range = new dom.Range(me.document);
- range.selectNode(ieRange.item(0)).select(true,true);
- }
- }
- })
- };
|