void BuildGui()
{
this.Title = "Select Projects";
this.Resizable = false;
var vBox = new VBox();
var hbox = new HBox();
collectionsList.DataSource = collectionStore;
collectionsList.Views.Add(new TextCellView(collectionName));
collectionsList.MinWidth = 200;
collectionsList.MinHeight = 300;
hbox.PackStart(collectionsList);
projectsList.DataSource = projectsStore;
projectsList.MinWidth = 200;
projectsList.MinHeight = 300;
var checkView = new CheckBoxCellView(isProjectSelected) { Editable = true };
checkView.Toggled += (sender, e) =>
{
var row = projectsList.CurrentEventRow;
var node = projectsStore.GetNavigatorAt(row);
var isSelected = !node.GetValue(isProjectSelected); //Xwt gives previous value
var project = node.GetValue(projectItem);
if (isSelected && !SelectedProjects.Any(p => string.Equals(p.Uri, project.Uri)))
{
SelectedProjects.Add(project);
}
if (!isSelected && SelectedProjects.Any(p => string.Equals(p.Uri, project.Uri)))
{
SelectedProjects.RemoveAll(p => string.Equals(p.Uri, project.Uri));
}
};
projectsList.Columns.Add(new ListViewColumn("", checkView));
projectsList.Columns.Add(new ListViewColumn("Name", new TextCellView(projectName)));
hbox.PackEnd(projectsList);
vBox.PackStart(hbox);
Button ok = new Button(GettextCatalog.GetString("OK"));
ok.Clicked += (sender, e) => Respond(Command.Ok);
Button cancel = new Button(GettextCatalog.GetString("Cancel"));
cancel.Clicked += (sender, e) => Respond(Command.Cancel);
ok.MinWidth = cancel.MinWidth = Constants.ButtonWidth;
var buttonBox = new HBox();
buttonBox.PackEnd(ok);
buttonBox.PackEnd(cancel);
vBox.PackStart(buttonBox);
this.Content = vBox;
}