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

📄 menueditorservice.cs

📁 全功能c#编译器
💻 CS
字号:
// <file>
//     <copyright see="prj:///doc/copyright.txt"/>
//     <license see="prj:///doc/license.txt"/>
//     <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
//     <version value="$version"/>
// </file>

using System;
using System.Diagnostics;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Windows.Forms;
using System.Windows.Forms.Design;
using ICSharpCode.SharpDevelop.FormDesigner.Hosts;

using System.Drawing.Design;

namespace ICSharpCode.SharpDevelop.FormDesigner {
	
	public class MenuEditorService : IMenuEditorService
	{
		IDesignerHost             host;
		bool                      isActive = false;
		
		AbstractMenuEditorControl menuEditorControl = null;
		Menu                      menu;
		
		public IDesignerHost Host {
			get {
				return host;
			}
			set {
				host = value;
			}
		}
		
		public AbstractMenuEditorControl MenuEditorControl {
			get {
				return menuEditorControl;
			}
		}
		
		
		public MenuEditorService(IDesignerHost host)
		{ 
			this.host = host;
			Initialize();
		}
		
		void Initialize()
		{
			ISelectionService selectionService = (ISelectionService)host.GetService(typeof(ISelectionService));
			selectionService.SelectionChanged += new EventHandler(HandleSelectionChange);
		}
		
		void HandleSelectionChange(object sender, EventArgs e)
		{
			ISelectionService selectionService = (ISelectionService)host.GetService(typeof(ISelectionService));
			Menu selectedMenu = selectionService.PrimarySelection as Menu;
			
			if (selectedMenu != null) {
				if (menu != selectedMenu && (selectedMenu is MainMenu || selectedMenu is ContextMenu)) {
					DisposeMenuEditorControl();
					this.menu = selectedMenu;
					InitMenuEditorControl();
				} 
			} else {
				if (menuEditorControl != null && selectionService.PrimarySelection != null) {
					AbstractMenuEditorControl.MenuEditorFocused = false;
					menuEditorControl.CloseSubMenuEditor();
					menuEditorControl.Refresh();
				}
			}
		}
		
		public void Dispose()
		{
		}
		
		void DisposeMenuEditorControl()
		{
			if (menuEditorControl != null) {
				menuEditorControl.Dispose();
				menuEditorControl = null;
			}
		}

		void InitMenuEditorControl()
		{
			Control rootComponent = host.RootComponent as Control;
			if (rootComponent != null) {
				menuEditorControl = (menu is MainMenu) ? (AbstractMenuEditorControl)new MainMenuEditorControl(host, menu) : 
				                                         (AbstractMenuEditorControl)new ContextMenuEditorControl(host, menu);
				rootComponent.Parent.Controls.Add(menuEditorControl);
				menuEditorControl.BringToFront();
			}
		}

		
#region System.Windows.Forms.Design.IMenuEditorService interface implementation
		public bool IsActive()
		{
			return isActive;
		}
		
		public bool MessageFilter(ref System.Windows.Forms.Message m)
		{
			return false;
		}
		
		public void SetSelection(System.Windows.Forms.MenuItem item)
		{
			Console.WriteLine("!!!TODO!!! SET SELECTION TO : " + item);
		}
		
		public void SetMenu(System.Windows.Forms.Menu menu)
		{
			Console.WriteLine("SET MENU TO : " + menu);
			this.menu = menu;
			isActive  = menu != null;
			if (isActive) {
				InitMenuEditorControl();
			} else {
				DisposeMenuEditorControl();
			}
		}
		
		public System.Windows.Forms.Menu GetMenu()
		{
			return menu;
		}
#endregion
	}
}

⌨️ 快捷键说明

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