using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace HeuristicLab.OKB.AlgorithmHost { public partial class SelectItemDialog : Form { public object Item { get; private set; } public SelectItemDialog() { InitializeComponent(); itemsListView.SmallImageList = new ImageList(); } private Dictionary groups = new Dictionary(); public void Clear() { itemsListView.Clear(); itemsListView.Groups.Clear(); groups.Clear(); itemsListView.SmallImageList = new ImageList(); } public void AddItem(string name, string description, string groupName, object o, Image icon) { ListViewGroup group = null; if (groupName != null) { groups.TryGetValue(groupName, out group); if (group == null) { group = new ListViewGroup(groupName, groupName); groups[groupName] = group; itemsListView.Groups.Add(group); } } ListViewItem item; if (group != null) item = new ListViewItem(new string[] { name, description }, group); else item = new ListViewItem(new string[] { name, description }); if (icon != null) { itemsListView.SmallImageList.Images.Add(icon); item.ImageIndex = itemsListView.SmallImageList.Images.Count - 1; } item.Tag = o; itemsListView.Items.Add(item); } private void SelectItemDialog_Shown(object sender, EventArgs e) { Item = null; DialogResult = DialogResult.None; } private void itemsListView_SelectedIndexChanged(object sender, EventArgs e) { okButton.Enabled = itemsListView.SelectedItems.Count == 1; } private void okButton_Click(object sender, EventArgs e) { if (itemsListView.SelectedItems.Count == 1) { Item = itemsListView.SelectedItems[0].Tag; DialogResult = DialogResult.OK; Close(); } } private void cancelButton_Click(object sender, EventArgs e) { DialogResult = DialogResult.Cancel; Close(); } private void itemsListView_DoubleClick(object sender, EventArgs e) { if (itemsListView.SelectedItems.Count == 1) { Item = itemsListView.SelectedItems[0].Tag; DialogResult = DialogResult.OK; Close(); } } } }