1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 |
using System;
using System.Collections;
using System.Windows.Forms;
using Ayende.NHibernateQueryAnalyzer.Core.Model;
using Ayende.NHibernateQueryAnalyzer.UserInterface.Interfaces;
namespace Ayende.NHibernateQueryAnalyzer.UserInterface.Controls
{
public partial class OpenProjectForm : Form
{
private readonly IMainPresenter presenter;
private readonly IProjectsRepository repository;
protected OpenProjectForm()
{
InitializeComponent();
}
public OpenProjectForm(IMainPresenter presenter)
{
this.presenter = presenter;
repository = presenter.Repository;
InitializeComponent();
BindProjectList();
}
private void BindProjectList()
{
ux_ProjectList.Items.Clear();
IList list = repository.GetAllProejcts();
foreach (Project project in list)
{
ListViewItem lvi = new ListViewItem(project.Name);
lvi.SubItems.Add(project.Id.ToString());
lvi.Tag = project;
ux_ProjectList.Items.Add(lvi);
}
}
private void ux_ProjectList_ItemActivate(object sender, EventArgs e)
{
DialogResult = DialogResult.OK;
Close();
}
private void ux_ProjectList_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape || e.KeyCode == Keys.Delete)
OpenProjectForm_KeyDown(sender, e);
}
private void OpenProjectForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
DialogResult = DialogResult.Cancel;
Close();
}
else if (e.KeyCode == Keys.Delete && ux_ProjectList.SelectedItems.Count > 0)
{
DeleteSelectedProject();
}
}
private void OpenProjectForm_Load(object sender, EventArgs e)
{
if (ux_ProjectList.Items.Count > 0)
ux_ProjectList.Items[0].Selected = true;
}
private void ux_ContextMenu_Popup(object sender, EventArgs e)
{
ux_ContextMenu.MenuItems.Clear();
if (ux_ProjectList.SelectedItems.Count > 0)
ux_ContextMenu.MenuItems.Add(ux_ContextMenuDeleteProject);
}
private void ux_ContextMenuDeleteProject_Click(object sender, EventArgs e)
{
DeleteSelectedProject();
}
private void DeleteSelectedProject()
{
Project prj = (Project)ux_ProjectList.SelectedItems[0].Tag;
if (presenter.DeleteProject(prj))
BindProjectList();
}
public Project SelectedProject
{
get
{
if (ux_ProjectList.SelectedItems.Count == 0)
return null;
return (Project)ux_ProjectList.SelectedItems[0].Tag;
}
}
}
} |