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

📄 assemblyscoutviewcontent.cs

📁 SharpDevelop2.0.0 c#开发免费工具
💻 CS
字号:
// <file>
//     <copyright see="prj:///doc/copyright.txt"/>
//     <license see="prj:///doc/license.txt"/>
//     <owner name="Georg Brandl" email="g.brandl@gmx.net"/>
//     <version value="$version"/>
// </file>

using System;
using System.IO;
using System.Collections;
using System.Resources;
using System.Windows.Forms;

using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Gui;
using UI = WeifenLuo.WinFormsUI;
using SA = ICSharpCode.SharpAssembly.Assembly;

namespace ICSharpCode.SharpDevelop.AddIns.AssemblyScout
{
	///////////////////////////////////////////
	// AssemblyScoutViewContent Class
	///////////////////////////////////////////
	public class AssemblyScoutViewContent : AbstractViewContent
	{		
		public UI.DockPanel leftTabs, rightTabs;
		Control control = null;
		AssemblyTree tree = null;
		
		public override Control Control {
			get {
				return control;
			}
		}
		
		public AssemblyTree Tree {
			get {
				return tree;
			}
		}
				
		string untitledName = "";
		public override string UntitledName {
			get {
				return untitledName;
			}
			set {
				untitledName = value;
			}
		}

//		public override string TitleName {
//			get {
//				return filename;
//			}
//			set {
//				filename = value;
//				OnTitleNameChanged(null);
//			}
//		}
		
		public override string TabPageText {
			get {
				return "Assemblies";
			}
		}
		
		public override bool IsViewOnly {
			get {
				return true;
			}
		}
	
		IWorkbenchWindow workbenchWindow;
		public override IWorkbenchWindow WorkbenchWindow {
			get {
				return workbenchWindow;
			}
			set {
				workbenchWindow = value;
				if (FileName == "") {
					workbenchWindow.Title = StringParser.Parse("${res:ObjectBrowser.AssemblyScout}");
				} else {
					workbenchWindow.Title = FileName;
				}
			}
		}
		
		public override void RedrawContent()
		{
		}
		
		public override void Dispose()
		{
			try {
				foreach(Control ctl in Control.Controls) {
					ctl.Dispose();
				}
			} catch {
				return;
			}
		}
				
		public void SaveFile()
		{
		}
		
		public bool CanCreateContentForFile(string fileName)
		{
			return Path.GetExtension(fileName) == ".dll" || Path.GetExtension(fileName) == ".exe";
		}
		
		public bool CanCreateContentForLanguage(string language)
		{
			return false;
		}
		
		public IViewContent CreateContentForFile(string fileName)
		{
			Load(fileName);
			return this;
		}

		public void Undo()
		{
		}

		public void Redo()
		{
		}

		public IViewContent CreateContentForLanguage(string language, string content)
		{
			return null;
		}
		
		public override void Save()
		{
		}
		
		public override void Save(string filename)
		{
		}
		
		public override void Load(string filename)
		{
			tree.LoadFile(filename);
			this.FileName = filename;
			this.TitleName = Path.GetFileName(filename);
		}
		
		public AssemblyScoutViewContent()
		{
			Panel panel = new Panel();
			panel.Dock = DockStyle.Fill;
			
			leftTabs           = new UI.DockPanel();
			leftTabs.Dock      = DockStyle.Left;
			leftTabs.Width     = 400;
			leftTabs.AllowDrop = false;
			leftTabs.AllowRedocking = false;
						
			AssemblyTree assemblyTree      = new AssemblyTree(this);
			this.tree = assemblyTree;
			
			UI.DockContent treeviewpage = new UI.DockContent();
			treeviewpage.Text = StringParser.Parse("${res:ObjectBrowser.Tree}");
			treeviewpage.Icon                  = ResourceService.GetIcon("Icons.16x16.Class");
			treeviewpage.DockPadding.All       = 8;
			treeviewpage.Controls.Add(assemblyTree);
			treeviewpage.DockableAreas = UI.DockAreas.Document;
			treeviewpage.CloseButton = false;
			treeviewpage.Show(leftTabs);
			
			UI.DockContent indexviewpage = new UI.DockContent();
			indexviewpage.Text = StringParser.Parse("${res:ObjectBrowser.Search}");
			indexviewpage.Icon                  = ResourceService.GetIcon("Icons.16x16.FindIcon");
			SearchPanel SearchPanel   = new SearchPanel(assemblyTree);
			SearchPanel.ParentDisplayInfo       = this;
			indexviewpage.DockPadding.All       = 8;
			indexviewpage.Controls.Add(SearchPanel);
			indexviewpage.DockableAreas = UI.DockAreas.Document;
			indexviewpage.CloseButton = false;
			indexviewpage.Show(leftTabs);
			
			Splitter vsplitter    = new Splitter();
			vsplitter.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;

			vsplitter.Location    = new System.Drawing.Point(0, 200);
			vsplitter.TabIndex    = 5;
			vsplitter.TabStop     = false;
			vsplitter.Size        = new System.Drawing.Size(3, 273);
			vsplitter.Dock        = DockStyle.Left;
			
			
			rightTabs = new UI.DockPanel();
			rightTabs.Dock       = DockStyle.Fill;
			rightTabs.AllowDrop  = false;
			rightTabs.AllowRedocking = false;
						
			UI.DockContent memberpage = new UI.DockContent();
			memberpage.Text = StringParser.Parse("${res:ObjectBrowser.Info}");
			memberpage.Icon                  = ResourceService.GetIcon("Icons.16x16.Information");
			memberpage.DockPadding.All       = 8;
			memberpage.Controls.Add(new InfoView(assemblyTree));
			memberpage.DockableAreas = UI.DockAreas.Document;
			memberpage.CloseButton = false;
			memberpage.Show(rightTabs);
			
			UI.DockContent ildasmviewpage = new UI.DockContent();
			ildasmviewpage.Text = StringParser.Parse("${res:ObjectBrowser.Disasm}");
			ildasmviewpage.Icon                  = ResourceService.GetIcon("Icons.16x16.ILDasm");
			ildasmviewpage.DockPadding.All       = 8;
			ildasmviewpage.Controls.Add(new ILDasmView(assemblyTree));
			ildasmviewpage.DockableAreas = UI.DockAreas.Document;
			ildasmviewpage.CloseButton = false;
			ildasmviewpage.Show(rightTabs);
			
			UI.DockContent sourceviewpage = new UI.DockContent();
			sourceviewpage.Text = StringParser.Parse("${res:ObjectBrowser.Source}");
			sourceviewpage.Icon                  = ResourceService.GetIcon("Icons.16x16.TextFileIcon");
			sourceviewpage.DockPadding.All       = 8;
			sourceviewpage.Controls.Add(new SourceView(assemblyTree));
			sourceviewpage.DockableAreas = UI.DockAreas.Document;
			sourceviewpage.CloseButton = false;
			sourceviewpage.Show(rightTabs);
			
			UI.DockContent xmlviewpage = new UI.DockContent();
			xmlviewpage.Text = StringParser.Parse("${res:ObjectBrowser.XML}");
			xmlviewpage.Icon                  = ResourceService.GetIcon("Icons.16x16.XMLFileIcon");
			xmlviewpage.DockPadding.All       = 8;
			xmlviewpage.Controls.Add(new XmlView(assemblyTree));
			xmlviewpage.DockableAreas = UI.DockAreas.Document;
			xmlviewpage.CloseButton = false;
			xmlviewpage.Show(rightTabs);
			
			UI.DockContent extproppage = new UI.DockContent();
			extproppage.Text = StringParser.Parse("${res:ObjectBrowser.Extended}");
			extproppage.Icon                  = ResourceService.GetIcon("Icons.16x16.Property");
			extproppage.DockPadding.All       = 8;
			extproppage.Controls.Add(new ExtendedPropsPanel(assemblyTree));
			extproppage.DockableAreas = UI.DockAreas.Document;
			extproppage.CloseButton = false;
			extproppage.Show(rightTabs);
			
			panel.Controls.Add(rightTabs);
			panel.Controls.Add(vsplitter);
			panel.Controls.Add(leftTabs);
			
			treeviewpage.Activate();
			memberpage.Activate();
			
			this.control = panel;
			this.TitleName = StringParser.Parse("${res:ObjectBrowser.AssemblyScout}");
		}
		
		public void LoadStdAssemblies() {
			//try {
			tree.AddAssembly(SA.SharpAssembly.Load("mscorlib"));
			tree.AddAssembly(SA.SharpAssembly.Load("System"));
			tree.AddAssembly(SA.SharpAssembly.Load("System.Xml"));
			tree.AddAssembly(SA.SharpAssembly.Load("System.Windows.Forms"));
			tree.AddAssembly(SA.SharpAssembly.Load("System.Drawing"));
			tree.AddAssembly(SA.SharpAssembly.Load("System.Data"));
			tree.AddAssembly(SA.SharpAssembly.Load("System.Design"));			
			tree.AddAssembly(SA.SharpAssembly.Load("System.Web"));			
			//} catch {}
		}
		
		public void LoadRefAssemblies() {
			try {
				if (ProjectService.CurrentProject == null) return;
				foreach(ProjectItem item in ProjectService.CurrentProject.Items) {
					if (item.ItemType == ItemType.Reference) {
						if (!tree.IsAssemblyLoaded(item.FileName)) {
							try {
								tree.LoadFile(item.FileName);
							} catch (Exception) {
								//MessageBox.Show("Object Browser error:\nError loading assembly " + pr.GetReferencedFileName(null) + ".", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
							}
						}
					}
				}
			} catch (Exception) {}
		}
	}
}

⌨️ 快捷键说明

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