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

📄 tasklistpanel.cs

📁 C#实现DHTML编辑器功能!
💻 CS
字号:
// DINAMIC XML Editor
//
// Copyright (c) 2002-2003 Dusan Hlavaty
// mailto: duddo@atlas.cz
//
// This software is licensed under the terms of
// GNU General Public license
//
using System;
using System.Windows.Forms;

using Crownwood.Magic.Docking;

using XML_editor.MyForms;
using XML_editor.Common;

namespace XML_editor.DockingPanels
{

	/// <summary>
	/// Dokovaci panel do ktoreho sa budu vypisovat vysledky ulohy (tasky) -
	/// ekvivalent 'Task List' vo V.Studiu
	/// </summary>
	public class TaskListPanel : Crownwood.Magic.Docking.Content
	{

		/// <summary>
		/// Odkaz na hlavny formular aplikacie
		/// </summary>
		private MainForm mainForm = null;

		/// <summary>
		/// ListView, o ktory sa bude starat tento <see cref="TaskListPanel"/>
		/// </summary>
		private ListView listView = null;

		/// <summary>
		/// zahlavie stlpca - Type
		/// </summary>
		ColumnHeader chType        = new ColumnHeader();
		
		/// <summary>
		/// zahlavie stlpca - Description
		/// </summary>
		ColumnHeader chDescription = new ColumnHeader();

		/// <summary>
		/// zahlavie stlpca - File
		/// </summary>
		ColumnHeader chFile        = new ColumnHeader();
		
		/// <summary>
		/// zahlavie stlpca - Line
		/// </summary>
		ColumnHeader chLine        = new ColumnHeader();
		
		// -------------------------------------------------------------------------
		/// <summary>
		/// Odkaz na hlavny formular aplikacie
		/// </summary>
		public MainForm MainForm
		{
			get 
			{
				return this.mainForm;
			}
		}

		// -------------------------------------------------------------------------
		/// <summary>
		/// Inicializuje dokovaci panel obsahujuci TaskList.
		/// </summary>
		/// <param name="mainForm">odkaz na hlavny formular aplikacie - <see cref="MainForm"/></param>
		/// <param name="manager">odkaz na <see cref="DockingManager"/>, ku ktoremu bude tento panel patrit</param>
		public TaskListPanel(MainForm mainForm, DockingManager manager)	: base(manager)
		{
			this.mainForm = mainForm;
			this.FullTitle = this.Title = "Task List";

			//
			//	listView
			//
			this.listView = new ListView();
			this.SetupColumns();
			this.listView.Columns.Add(this.chType);
			this.listView.Columns.Add(this.chLine);
			this.listView.Columns.Add(this.chDescription);
			this.listView.Columns.Add(this.chFile);
			this.listView.FullRowSelect = true;
			this.listView.AutoArrange = true;
			this.listView.Alignment = ListViewAlignment.Left;
			this.listView.View = View.Details;
			//this.listView.Dock = DockStyle.Fill;
			this.listView.GridLines  = true;
			this.listView.Activation = ItemActivation.OneClick;
			this.listView.ItemActivate += new System.EventHandler(this.listView_ItemActivate);


			this.Control = this.listView;

			ImageList imgList = new ImageList();
			imgList.Images.Add( IconProvider.LoadBitmap(this, "XML_editor.Icons.Error.png"));
			imgList.Images.Add( IconProvider.LoadBitmap(this, "XML_editor.Icons.Warning.png"));
			imgList.Images.Add( IconProvider.LoadBitmap(this, "XML_editor.Icons.Information.png"));
			imgList.Images.Add( IconProvider.LoadBitmap(this, "XML_editor.Icons.TaskList.bmp", true, new System.Drawing.Point(0,0)));
			this.ImageList = this.listView.SmallImageList = this.listView.LargeImageList = imgList;
			this.ImageIndex = 3;

			// Zaradime sa do docking managera
			this.MainForm.DockingManager.Contents.Add(this);
			this.MainForm.DockingManager.AddContentWithState(this, Crownwood.Magic.Docking.State.DockBottom);
			this.MainForm.DockingManager.ToggleContentAutoHide(this);
		}

		// -------------------------------------------------------------------------
		/// <summary>
		/// Nastavi zahlavia jednotlivych stlpcov
		/// </summary>
		private void SetupColumns()
		{
			this.chType.Text        = "!";
			this.chLine.Text        = "Line";
			this.chDescription.Text = "Description";
			this.chFile.Text        = "File";
//			OnTitleChanged(null);
//			OnIconChanged(null);
		}

		// -------------------------------------------------------------------------
		/// <summary>
		/// Vymaze obsah TaskList-u
		/// </summary>
		public void Clear() 
		{
			this.listView.Items.Clear();
		}

		// -------------------------------------------------------------------------
		/// <summary>
		/// Prida dalsi TASK do TaskListu
		/// </summary>
		/// <param name="taskType">Typ ulohy (tasku) ako je definovany v <see cref="TaskType"/></param>
		/// <param name="description">Popis ulohy</param>
		/// <param name="fullFileName">Nazov suboru (aj s cestou), ku ktoremu sa vztahuje tato uloha</param>
		/// <param name="line">Cislo riadku, na ktory sa vztahuje tato uloha</param>
		/// <param name="character">Poradove cislo znaku v riadku (<paramref name="line"/>), na ktory sa vztahuje tato uloha</param>
		public void AddTask(TaskType taskType, string description, string fullFileName, int line, int character)
		{
			this.AddTask(new Task(this.MainForm, taskType, fullFileName, description, line, character));
		}

		// -------------------------------------------------------------------------
		/// <summary>
		/// Prida dalsi TASK do TaskListu
		/// </summary>
		/// <param name="task"><see cref="Task"/>, ktory popisuje tuto ulohu</param>
		public void AddTask(Task task)
		{
			this.listView.BeginUpdate();

			int imageIndex = 0;
			switch (task.TaskType) 
			{
				case TaskType.Error:
					imageIndex = 0;
					break;
				case TaskType.Warning:
					imageIndex = 1;
					break;
				case TaskType.Information:
					imageIndex = 2;
					break;
			}
			ListViewItem item = new ListViewItem(new string[] {String.Empty, (task.Line+1).ToString(), task.Description, task.FileName});
			item.ImageIndex = item.StateImageIndex = imageIndex;
			item.Tag = task;
			this.listView.Items.Add(item);

			this.chType.Width = 24;
			this.chLine.Width = 50;
			int w = this.MainForm.Width - this.chType.Width - this.chLine.Width;
			this.chFile.Width = w * 30 / 100;
			this.chDescription.Width = w - this.chFile.Width - 5;

			this.listView.EndUpdate();
		}

		// -------------------------------------------------------------------------
		/// <summary>
		/// Bola aktivovany niektory riadok v ListView-e
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void listView_ItemActivate(object sender, System.EventArgs e)
		{
			if (this.listView.SelectedItems[0] != null) 
			{
				Task task = this.listView.SelectedItems[0].Tag as Task;
#if DEBUG
				System.Diagnostics.Debug.Assert(task != null);
#endif
				task.JumpToPosition();
			}
		}

	} // public class TaskListPanel : ...
} // namespace XML_editor.DockingPanels

⌨️ 快捷键说明

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