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

📄 resultlistcontrol.cs

📁 c#源代码
💻 CS
字号:
// <file>
//     <copyright see="prj:///doc/copyright.txt"/>
//     <license see="prj:///doc/license.txt"/>
//     <owner name="Mike Krueger" email="mike@icsharpcode.net"/>
//     <version value="$version"/>
// </file>

using System;
using System.Collections;
using System.Drawing;
using System.Windows.Forms;

using ICSharpCode.Core.Services;
using ICSharpCode.AssemblyAnalyser.Rules;
using ICSharpCode.SharpDevelop.Services;

namespace ICSharpCode.AssemblyAnalyser
{
	/// <summary>
	/// Description of ResultListControl.	
	/// </summary>
	[ToolboxBitmap(typeof(System.Windows.Forms.ListView))]
	public class ResultListControl : System.Windows.Forms.UserControl
	{
		private System.Windows.Forms.ListView listView;
		private System.Windows.Forms.ColumnHeader criticalHeader;
		private System.Windows.Forms.ColumnHeader itemHeader;
		private System.Windows.Forms.ColumnHeader ruleHeader;
		private System.Windows.Forms.ColumnHeader certaintyHeader;
		private System.Windows.Forms.ColumnHeader levelHeader;
		
		ResultDetailsView resultDetailsView = null;
		
		public ResultDetailsView ResultDetailsView {
			get {
				return resultDetailsView;
			}
			set {
				resultDetailsView = value;
			}
		}
		
		public ResultListControl()
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			
			StringParserService stringParserService = (StringParserService)ServiceManager.Services.GetService(typeof(StringParserService));
			levelHeader.Text     = stringParserService.Parse("${res:ICSharpCode.AssemblyAnalyser.ResultListControl.LevelHeader}");
			certaintyHeader.Text = stringParserService.Parse("${res:ICSharpCode.AssemblyAnalyser.ResultListControl.CertaintyHeader}");
			ruleHeader.Text      = stringParserService.Parse("${res:ICSharpCode.AssemblyAnalyser.ResultListControl.RuleHeader}");
			itemHeader.Text      = stringParserService.Parse("${res:ICSharpCode.AssemblyAnalyser.ResultListControl.ItemHeader}");
		}
		
		public void ClearContents()
		{
			this.listView.SelectedIndexChanged -= new System.EventHandler(this.ListViewSelectedIndexChanged);
			listView.Items.Clear();
			this.listView.SelectedIndexChanged += new System.EventHandler(this.ListViewSelectedIndexChanged);
		}
		
		public void PrintReport(ArrayList resolutions)
		{
			try {
				listView.BeginUpdate();
				listView.Items.Clear();
				StringParserService stringParserService = (StringParserService)ServiceManager.Services.GetService(typeof(StringParserService));
				int cerr = 0, err = 0, cwar = 0, war = 0, inf = 0;
				foreach (Resolution resolution in resolutions) {
					string critical = String.Empty;
					string type     = String.Empty;
					Color foreColor = Color.Black;
					
					switch (resolution.FailedRule.PriorityLevel) {
						case PriorityLevel.CriticalError:
							critical = "!";
							type = stringParserService.Parse("${res:ICSharpCode.AssemblyAnalyser.ResultListControl.ErrorType}");
							foreColor = Color.Red;
							++cerr;
							break;
						case PriorityLevel.Error:
							type = stringParserService.Parse("${res:ICSharpCode.AssemblyAnalyser.ResultListControl.ErrorType}");
							foreColor = Color.DarkRed;
							++err;
							break;
						case PriorityLevel.CriticalWarning:
							critical = "!";
							type = stringParserService.Parse("${res:ICSharpCode.AssemblyAnalyser.ResultListControl.WarningType}");
							foreColor = Color.Blue;
							++cwar;
							break;
						case PriorityLevel.Warning:
							type = stringParserService.Parse("${res:ICSharpCode.AssemblyAnalyser.ResultListControl.WarningType}");
							foreColor = Color.DarkBlue;
							++war;
							break;
						case PriorityLevel.Information:
							type = stringParserService.Parse("${res:ICSharpCode.AssemblyAnalyser.ResultListControl.InformationType}");
							++inf;
							break;
					}
					string certainity = resolution.FailedRule.Certainty.ToString() + "%";
					string text = stringParserService.Parse(resolution.FailedRule.Description);
					string item = stringParserService.Parse(resolution.Item);
					ListViewItem listViewItem = new ListViewItem(new string[] {critical, type, certainity, text, item});
					listViewItem.Font      = new Font("Arial", 9, FontStyle.Bold);
					listViewItem.ForeColor = foreColor;
					listViewItem.Tag = resolution;
					listView.Items.Add(listViewItem);
					
				}
				IStatusBarService statusBarService = (IStatusBarService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(IStatusBarService));
				if (resolutions.Count == 0) {
					statusBarService.SetMessage("${res:ICSharpCode.AssemblyAnalyser.ResultListControl.NoDefectsFoundStatusBarMessage}");
				} else {
					statusBarService.SetMessage(stringParserService.Parse("${res:ICSharpCode.AssemblyAnalyser.ResultListControl.TotalDefectsStatusBarMessage}",
					                                          new string[,] {
					                                          	{"TotalDefects", resolutions.Count.ToString()},
					                                          	{"CriticalErrors", cerr.ToString()},
					                                          	{"Errors",err.ToString()},
					                                          	{"CriticalWarnings", cwar.ToString()},
					                                          	{"Warnings", war.ToString()},
					                                          	{"Informations", inf.ToString()}
					                                          }));
				}
			} catch (Exception e) {
				Console.WriteLine("Got exception : " + e.ToString());
			} finally {
				listView.EndUpdate();
			}
		}
		
		#region Windows Forms Designer generated code
		/// <summary>
		/// This method is required for Windows Forms designer support.
		/// Do not change the method contents inside the source code editor. The Forms designer might
		/// not be able to load this method if it was changed manually.
		/// </summary>
		private void InitializeComponent() {
			this.levelHeader = new System.Windows.Forms.ColumnHeader();
			this.certaintyHeader = new System.Windows.Forms.ColumnHeader();
			this.ruleHeader = new System.Windows.Forms.ColumnHeader();
			this.itemHeader = new System.Windows.Forms.ColumnHeader();
			this.criticalHeader = new System.Windows.Forms.ColumnHeader();
			this.listView = new System.Windows.Forms.ListView();
			this.SuspendLayout();
			// 
			// levelHeader
			// 
			this.levelHeader.Text = "Level";
			this.levelHeader.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
			// 
			// certaintyHeader
			// 
			this.certaintyHeader.Text = "Certainty";
			this.certaintyHeader.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
			// 
			// ruleHeader
			// 
			this.ruleHeader.Text = "Rule";
			this.ruleHeader.Width = 350;
			// 
			// itemHeader
			// 
			this.itemHeader.Text = "Item";
			this.itemHeader.Width = 200;
			// 
			// criticalHeader
			// 
			this.criticalHeader.Text = "!";
			this.criticalHeader.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
			this.criticalHeader.Width = 20;
			// 
			// listView
			// 
			this.listView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
						this.criticalHeader,
						this.levelHeader,
						this.certaintyHeader,
						this.ruleHeader,
						this.itemHeader});
			this.listView.Dock = System.Windows.Forms.DockStyle.Fill;
			this.listView.FullRowSelect = true;
			this.listView.HideSelection = false;
			this.listView.Location = new System.Drawing.Point(0, 0);
			this.listView.MultiSelect = false;
			this.listView.Name = "listView";
			this.listView.Size = new System.Drawing.Size(572, 396);
			this.listView.TabIndex = 3;
			this.listView.View = System.Windows.Forms.View.Details;
			this.listView.ItemActivate += new System.EventHandler(this.ListViewItemActivate);
			this.listView.SelectedIndexChanged += new System.EventHandler(this.ListViewSelectedIndexChanged);
			// 
			// ResultListControl
			// 
			this.Controls.Add(this.listView);
			this.Name = "ResultListControl";
			this.Size = new System.Drawing.Size(572, 396);
			this.ResumeLayout(false);
		}
		#endregion
		void ListViewSelectedIndexChanged(object sender, System.EventArgs e)
		{
			if (resultDetailsView != null && listView.SelectedItems.Count > 0) {
				resultDetailsView.ViewResolution((Resolution)listView.SelectedItems[0].Tag);
			}
			listView.Focus();
		}
		void ListViewItemActivate(object sender, System.EventArgs e)
		{
			ListViewItem item  = listView.SelectedItems[0];
			if (item != null && item.Tag != null) {
				Resolution res = (Resolution)item.Tag;
				IParserService parserService = (IParserService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(IParserService));
				Position position = parserService.GetPosition(res.Item.Replace('+', '.'));
				
				if (position != null && position.Cu != null) {
					IFileService fileService = (IFileService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(IFileService));
					Console.WriteLine("File name : " + position.Cu.FileName);
					fileService.JumpToFilePosition(position.Cu.FileName, Math.Max(0, position.Line - 1), Math.Max(0, position.Column - 1));
				}
			}
		}
		
	}
}

⌨️ 快捷键说明

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