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

📄 resourceeditor.cs

📁 全功能c#编译器
💻 CS
字号:
using System;
using System.Windows.Forms;
using System.Drawing;

using ICSharpCode.Core.AddIns;
using ICSharpCode.Core.AddIns.Conditions;
using ICSharpCode.Core.Services;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Services;

namespace ResourceEditor
{
	public class ResourceEditorControl : UserControl, IOwnerState
	{
		ResourceList resourceList;
		Splitter splitter;
		Panel panel;
		IResourceView currentView = null;
		
		[Flags]
		public enum ListViewViewState {
			Nothing       = 0,
			ItemsSelected = 1,
		}
		
		protected ListViewViewState internalState = ListViewViewState.Nothing;

		public System.Enum InternalState {
			get {
				return internalState;
			}
		}
		
		public ResourceList ResourceList
		{
			get {
				return resourceList;
			}
		}
		
		public ResourceEditorControl()
		{
			InitializeComponent();
			resourceList.SelectedIndexChanged += new EventHandler(resourceListSelectionChanged);
		}
		
		void resourceListSelectionChanged(object sender, EventArgs e)
		{
			if(resourceList.SelectedItems.Count == 0) {
				internalState = ListViewViewState.Nothing;
			} else {
				internalState = ListViewViewState.ItemsSelected;
			}
			
			((DefaultWorkbench)WorkbenchSingleton.Workbench).UpdateToolbars();
			
			if(resourceList.SelectedItems.Count != 1) {
				return;
			}
			object key = resourceList.SelectedItems[0].Text;
			ResourceItem item = (ResourceItem)resourceList.Resources[key.ToString()];
			showResource(item);
		}
		
		void InitializeComponent()
		{
			resourceList = new ResourceList(this);
			resourceList.Dock = DockStyle.Top;
			Controls.Add(resourceList);
			
			panel = new Panel();
			panel.BackColor = SystemColors.Info;
			panel.Dock = DockStyle.Fill;
			
			splitter = new Splitter();
			splitter.Dock = DockStyle.Top;
			
			Controls.Add(panel);
			Controls.Add(splitter);
			Controls.Add(resourceList);
			
			this.Resize += new EventHandler(initializeLayout);
		}
		
		void initializeLayout(object sender, EventArgs e)
		{
			resourceList.Height = Convert.ToInt32(0.75 * Height);
		}
		
		void showView(Control viewer)
		{
			// remvoe old view if there is one
			if(panel.Controls.Count == 1) {
				Control control = panel.Controls[0];
				panel.Controls.Remove(control);
				control.Dispose();
			}
			
			if(viewer != null) {
				viewer.Dock = DockStyle.Fill;
				panel.Controls.Add(viewer);
				currentView = (IResourceView)viewer;
				currentView.WriteProtected = resourceList.WriteProtected;
				currentView.ResourceChanged += new ResourceChangedEventHandler(viewResourceChanged);
			}
		}
		
		void viewResourceChanged(object sender, ResourceEventArgs e)
		{
			resourceList.SetResourceValue(e.ResourceName, e.ResourceValue);
			MenuService menuService = (MenuService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(MenuService));
			
			
		}
		
		void showResource(ResourceItem item)
		{
			if (item.ResourceValue is Icon) {
				IconView iv = new IconView(item);
				showView(iv);
			} else if(item.ResourceValue is Bitmap) {
				BitmapView bv = new BitmapView(item);
				showView(bv);
			} else if(item.ResourceValue is Cursor) {
				CursorView cv = new CursorView(item);
				showView(cv);
			} else if(item.ResourceValue is string) {
				TextView tv = new TextView(item);
				showView(tv);
			} else if(item.ResourceValue is byte[]) {
				BinaryView bv = new BinaryView(item);
				showView(bv);
			} else if(item.ResourceValue is bool) {
				BooleanView bv = new BooleanView(item);
				showView(bv);
			} else {
				showView(null);
			}
		}

	}
}

⌨️ 快捷键说明

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