⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 contextmenu.js

📁 对java中如何使用Ajax技术
💻 JS
字号:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.widget.Editor2Plugin.ContextMenu");// summary: dojo.widget.Editor2Plugin.ContextMenu provides context menu for Editor2 widget// description://		This plugin should be dojo.required-ed before all other plugins which//		support contextmenu, otherwise the menu for that plugin won't be shown//		For each Editor2, what will appear in its context menu can be set by changing//		Editor2.contextMenuGroupSet property (by default it is empty, which means use the//		default contextMenu). A contextMenuGroupSet has to be registered by calling//		dojo.widget.Editor2Plugin.ContextMenuManager.registerGroupSet()//		All Editor2 with the same contextMenuGroupSet will share the same ContextMenudojo.require("dojo.widget.Menu2");dojo.event.topic.subscribe("dojo.widget.Editor2::onLoad", function(editor){	dojo.widget.Editor2Plugin.ContextMenuManager.getContextMenu(editor);//	var p = new dojo.widget.Editor2Plugin.ContextMenu();});dojo.widget.Editor2Plugin.ContextMenuManager = {	menuGroups: ['Generic', 'Link', 'Anchor', 'Image', 'List', 'Table'],	_contextMenuGroupSets: {},	_registeredGroups: {},	_menus: {},	registerGroup: function(name, handler){		if(this._registeredGroups[name]){			alert("dojo.widget.Editor2Plugin.ContextMenuManager.registerGroup: menu group "+name+"is already registered. Ignored.");			return;		}		this._registeredGroups[name] = handler;	},	removeGroup: function(name){		delete this._registeredGroups[name];	},	getGroup: function(name, contextmenuplugin){		if(this._registeredGroups[name]){			var item = this._registeredGroups[name](name, contextmenuplugin);			if(item){				return item;			}		}		switch(name){			case 'Generic':			case 'Link':			case 'Image':				return new dojo.widget.Editor2Plugin[name+"ContextMenuGroup"](contextmenuplugin);			//TODO			case 'Anchor':			case 'List':		}	},	registerGroupSet: function(/*String*/name, /*Array*/set){		// summary: register a group set		// name: name of the group set		// set: an array of groups, such as ['Generic','Link']		this._contextMenuGroupSets[name] = set;	},	removeGroupSet: function(name){		var set = this._contextMenuGroupSets[name];		delete this._contextMenuGroupSets[name];		return set;	},	getContextMenu: function(editor){		var set = editor.contextMenuGroupSet || 'defaultDojoEditor2MenuGroupSet';		if(this._menus[set]){			this._menus[set].bindEditor(editor);			return this._menus[set];		}		var gs = (editor.contextMenuGroupSet && this._contextMenuGroupSets[editor.contextMenuGroupSet]) || this.menuGroups;		var menu = new dojo.widget.Editor2Plugin.ContextMenu(editor, gs);		this._menus[set] = menu;		return menu;	}};dojo.declare("dojo.widget.Editor2Plugin.ContextMenu", null,	function(editor, gs){		this.groups = [];		this.separators = [];		this.editor = editor;		this.editor.registerLoadedPlugin(this);		this.contextMenu = dojo.widget.createWidget("PopupMenu2", {});		dojo.body().appendChild(this.contextMenu.domNode);		this.bindEditor(this.editor);		dojo.event.connect(this.contextMenu, "aboutToShow", this, "aboutToShow");		dojo.event.connect(this.editor, "destroy", this, "destroy");		this.setup(gs);	},	{	bindEditor: function(editor){		this.contextMenu.bindDomNode(editor.document.body);	},	setup: function(gs){		for(var i in gs){			var g = dojo.widget.Editor2Plugin.ContextMenuManager.getGroup(gs[i], this);			if(g){				this.groups.push(g);			}		}	},	aboutToShow: function(){		var first = true;		for(var i in this.groups){			if(i>0 && this.separators.length != this.groups.length-1){				this.separators.push(dojo.widget.createWidget("MenuSeparator2", {}));				this.contextMenu.addChild(this.separators[this.separators.length-1]);			}			if(this.groups[i].refresh()){				if(i>0){					if(first){						this.separators[i-1].hide();					}else{						this.separators[i-1].show();					}				}				if(first){ first = false; }			}else{				if(i>0){					this.separators[i-1].hide();				}			}		}	},	destroy: function(){		this.editor.unregisterLoadedPlugin(this);		delete this.groups;		delete this.separators;		this.contextMenu.destroy();		delete this.contextMenu;	}});dojo.widget.defineWidget(	"dojo.widget.Editor2ContextMenuItem",	dojo.widget.MenuItem2,{	command: '',	buildRendering: function(){		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();		this.caption = curInst.getCommand(this.command).getText();		dojo.widget.Editor2ContextMenuItem.superclass.buildRendering.apply(this, arguments);	},	onClick: function(){		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();		if(curInst){			var _command = curInst.getCommand(this.command);			if(_command){				_command.execute();			}		}	},	refresh: function(){		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();		if(curInst){			var _command = curInst.getCommand(this.command);			if(_command){				if(_command.getState() == dojo.widget.Editor2Manager.commandState.Disabled){					this.disable();					return false;				}else{					this.enable();					return true;				}			}		}	},	//improve performance by skipping animation	hide: function(){		this.domNode.style.display = "none";	},	show: function(){		this.domNode.style.display = "";	}});dojo.declare("dojo.widget.Editor2Plugin.SimpleContextMenuGroup", null,	function(contextmenuplugin){		this.contextMenu = contextmenuplugin.contextMenu;		this.items = [];		dojo.event.connect(contextmenuplugin, "destroy", this, "destroy");	},	{	refresh: function(){		if(!this.items.length){			this.createItems();			for(var i in this.items){				this.contextMenu.addChild(this.items[i]);			}		}		return this.checkVisibility();	},	destroy: function(){		this.contextmenu = null;		delete this.items;		delete this.contextMenu;	},	//implement this to fill in the menu items	createItems: function(){	},	//overload this to show/hide items	checkVisibility: function(){		var show = false;		for(var i in this.items){			show = show || this.items[i].refresh();		}		var action = show ? "show" : "hide";		for(var i in this.items){			this.items[i][action]();		}		return show;	}});dojo.declare("dojo.widget.Editor2Plugin.GenericContextMenuGroup",	dojo.widget.Editor2Plugin.SimpleContextMenuGroup,{	createItems: function(){		this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {command: "cut", iconClass: "dojoE2TBIcon dojoE2TBIcon_Cut"}));		this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {command: "copy", iconClass: "dojoE2TBIcon dojoE2TBIcon_Copy"}));		this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {command: "paste", iconClass: "dojoE2TBIcon dojoE2TBIcon_Paste"}));	}});dojo.declare("dojo.widget.Editor2Plugin.LinkContextMenuGroup",	dojo.widget.Editor2Plugin.SimpleContextMenuGroup,{	createItems: function(){		this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {command: 'createlink', iconClass: "dojoE2TBIcon dojoE2TBIcon_Link"}));		this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {command: 'unlink', iconClass: "dojoE2TBIcon dojoE2TBIcon_UnLink"}));	},	checkVisibility: function(){		var show = this.items[1].refresh();		if(show){			this.items[0].refresh();			for(var i in this.items){				this.items[i].show();			}		}else{			for(var i in this.items){				this.items[i].hide();			}		}		return show;	}});dojo.declare("dojo.widget.Editor2Plugin.ImageContextMenuGroup",	dojo.widget.Editor2Plugin.SimpleContextMenuGroup,{	createItems: function(){		this.items.push(dojo.widget.createWidget("Editor2ContextMenuItem", {command: 'insertimage', iconClass: "dojoE2TBIcon dojoE2TBIcon_Image"}));	},	checkVisibility: function(){		var curInst = dojo.widget.Editor2Manager.getCurrentInstance();		var img = dojo.withGlobal(curInst.window, "getSelectedElement", dojo.html.selection);		if(img && img.tagName.toLowerCase() == 'img'){			this.items[0].show();			return true;		}else{			this.items[0].hide();			return false;		}	}});

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -