📄 tasklistpanel.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 + -