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
101
102
103
104
105
106
107
108 |
using System;
using System.IO;
using System.Windows.Forms;
using Ayende.NHibernateQueryAnalyzer.UserInterface.Interfaces;
namespace Ayende.NHibernateQueryAnalyzer.UserInterface
{
public partial class ProjectView : NQADocument, IProjectView
{
private readonly IProjectPresenter presenter;
public bool isEditable = true;
protected ProjectView()
{
InitializeComponent();
}
public ProjectView(IProjectPresenter presenter, IMainView parentView)
: base(parentView)
{
this.presenter = presenter;
InitializeComponent();
BindProject();
}
private void BindProject()
{
Title = presenter.Project.Name;
BindProjectFileList();
}
private void BindProjectFileList()
{
ux_FileList.BeginUpdate();
ux_FileList.Items.Clear();
foreach (string fileName in presenter.Project.Files)
{
ListViewItem lvi = new ListViewItem(new[] { Path.GetFileName(fileName), fileName });
ux_FileList.Items.Add(lvi);
}
ux_FileList.EndUpdate();
}
private void ux_FileList_SelectedIndexChanged(object sender, EventArgs e)
{
ux_RemoveFile.Enabled = isEditable && ux_FileList.SelectedIndices.Count > 0;
}
private void ux_RemoveFile_Click(object sender, EventArgs e)
{
if (ux_FileList.SelectedItems.Count == 0)
return;
string fileName = ux_FileList.SelectedItems[0].SubItems[1].Text;
presenter.Project.RemoveFile(fileName);
HasChanges = true;
ux_RemoveFile.Enabled = false;//disable the button as there is nothing now selected.
BindProjectFileList();
}
private void ux_AddFile_Click(object sender, EventArgs e)
{
if (ux_AddFilesDialog.ShowDialog(this) == DialogResult.OK)
{
foreach (string file in ux_AddFilesDialog.FileNames)
{
presenter.Project.AddFile(file);
}
HasChanges = true;
BindProjectFileList();
}
}
private void ux_BuildProject_Click(object sender, EventArgs e)
{
presenter.BuildProject();
}
public void DisplayProjectState(bool isEditable, bool allowUserEdit)
{
this.isEditable = isEditable;
ux_RemoveFile.Enabled = isEditable;
ux_AddFile.Enabled = isEditable;
ux_EditProject.Visible = allowUserEdit;
ux_BuildProject.Enabled = isEditable;
}
public IProjectPresenter ProjectPresenter
{
get { return presenter; }
}
public override bool Save()
{
return presenter.SaveProject();
}
private void ux_EditProject_Click(object sender, EventArgs e)
{
presenter.EditProject();
}
public override bool SaveAs()
{
return presenter.SaveProjectAs();
}
}
} |