using System;
using System.Drawing;
using System.Windows.Forms;
using NaGet.Packages;
using NaGet.Packages.Install;
using System.IO;
using System.Collections.Generic;
namespace AppliStation.Util
{
///
/// ListViewのソートをカプセル化するためのクラス
///
class ListViewItemSortComparer : System.Collections.IComparer
{
SortOrder order = SortOrder.Ascending;
ColumnHeader column = null;
///
/// コンストラクタ
///
public ListViewItemSortComparer()
{
}
///
/// ソートの方向。昇順か?降順か?
///
public SortOrder Order {
get { return order; }
set { order = value; }
}
///
/// 選択しているコラムを取得・設定する。
/// nullを設定するとソートが解除される。
///
public ColumnHeader Column {
get { return column; }
set {
column = value;
if (value == null || value.Index < 0) {
order = SortOrder.None;
}
}
}
///
/// 選択しているコラムのインデックスを返す。選択されていないときは-1を返す。
///
public int ColumnIndex {
get {
return (column != null)? column.Index : -1;
}
}
public int Compare(object x, object y)
{
int columnIndex = this.ColumnIndex;
int result = 0;
if (columnIndex >= 0 && order != SortOrder.None) {
ListViewItem itemx = (ListViewItem) x;
ListViewItem itemy = (ListViewItem) y;
result = string.Compare(itemx.SubItems[columnIndex].Text,
itemy.SubItems[columnIndex].Text);
if (order == SortOrder.Descending) {
result = -result;
}
}
return result;
}
}
}