1
// ****************************************************************
2
// Copyright 2011, Charlie Poole
3
// This is free software licensed under the NUnit license. You may
4
// obtain a copy of the license at http://nunit.org
5
// ****************************************************************
8
using System.Windows.Forms;
10
namespace NUnit.ProjectEditor
12
public class ConfigurationEditor
14
#region Instance Variables
16
private IProjectModel model;
17
private IConfigurationEditorDialog view;
23
public ConfigurationEditor(IProjectModel model, IConfigurationEditorDialog view)
30
view.AddCommand.Execute += AddConfig;
31
view.RemoveCommand.Execute += RemoveConfig;
32
view.RenameCommand.Execute += RenameConfig;
33
view.ActiveCommand.Execute += MakeActive;
35
view.ConfigList.SelectionChanged += SelectedConfigChanged;
40
#region Command Event Handlers
42
public void AddConfig()
44
IAddConfigurationDialog dlg = view.AddConfigurationDialog;
45
new AddConfigurationPresenter(model, dlg);
52
public void RenameConfig()
54
string oldName = view.ConfigList.SelectedItem;
55
if (oldName.EndsWith(" (active)"))
56
oldName = oldName.Substring(0, oldName.Length - 9);
58
IRenameConfigurationDialog dlg = view.RenameConfigurationDialog;
59
new RenameConfigurationPresenter(model, dlg, oldName);
66
public void RemoveConfig()
68
model.RemoveConfigAt(view.ConfigList.SelectedIndex);
73
public void MakeActive()
75
model.ActiveConfigName = view.ConfigList.SelectedItem;
80
public void SelectedConfigChanged()
82
int index = view.ConfigList.SelectedIndex;
84
view.AddCommand.Enabled = true;
85
view.ActiveCommand.Enabled = index >= 0 && model.Configs[index].Name != model.ActiveConfigName;
86
view.RenameCommand.Enabled = index >= 0;
87
view.RemoveCommand.Enabled = index >= 0;
92
#region Helper Methods
94
private void UpdateConfigList()
96
string selectedConfig = view.ConfigList.SelectedItem;
97
if (selectedConfig != null && selectedConfig.EndsWith(" (active)"))
98
selectedConfig = selectedConfig.Substring(0, selectedConfig.Length - 9);
99
int selectedIndex = -1;
100
int activeIndex = -1;
102
int count = model.Configs.Count;
103
string[] configList = new string[count];
105
for (int index = 0; index < count; index++)
107
string config = model.Configs[index].Name;
109
if (config == model.ActiveConfigName)
111
if (config == selectedConfig)
112
selectedIndex = index;
114
configList[index] = config;
117
if (activeIndex >= 0)
118
configList[activeIndex] += " (active)";
120
view.ConfigList.SelectionList = configList;
122
view.ConfigList.SelectedIndex = selectedIndex > 0
124
: configList.Length > 0
127
SelectedConfigChanged();