public HostEntrySelectionOptions GetOptions(IEnumerable <HostEntryViewModel> selectedModels) { var options = new HostEntrySelectionOptions(); IEnumerable <string> alternateAddresses = null; HashSet <string> uniqueAddresses = new HashSet <string>(); HashSet <string> uniqueHostnames = new HashSet <string>(); HashSet <string> uniqueComments = new HashSet <string>(); foreach (var model in selectedModels) { uniqueAddresses.Add(model.HostEntry.Address); uniqueComments.Add(model.HostEntry.Comment); if (uniqueHostnames.Add(model.HostEntry.Hostname)) { alternateAddresses = (alternateAddresses == null) ? GetAlternateAddresses(model.HostEntry) : alternateAddresses.Union(GetAlternateAddresses(model.HostEntry)); } if (model.HostEntry.Enabled) { options.CanDisable = true; } else { options.CanEnable = true; } options.CanEdit = true; options.CanDelete = true; options.CanSwitchAddress = true; } options.AlternateAddresses = (alternateAddresses ?? new string[0]).ToList(); if (uniqueAddresses.Count == 1) { options.EditableFields |= HostEntryField.Address; } if (uniqueHostnames.Count == 1) { options.EditableFields |= HostEntryField.Hostname; } if (uniqueComments.Count == 1) { options.EditableFields |= HostEntryField.Comment; } if (options.CanEnable ^ options.CanDisable) { options.EditableFields |= HostEntryField.Enabled; } return(options); }
private void UpdateData() { Trace.WriteLine("ManageHostsModulePagePresenter.UpdateData"); hostEntryModels = new GlobalHostEntryViewModelStrategy() .GetEntryModels(module.ServiceProxy.GetEntries()); this.selectionOptionsStrategy = new HostEntrySelectionOptionsStrategy(hostEntryModels); this.addresses = module.ServiceProxy.GetServerAddresses(); this.options = selectionOptionsStrategy.GetOptions(this.SelectedEntries); DisplayEntries(); }
void view_SelectionChanged(object sender, EventArgs e) { this.options = selectionOptionsStrategy.GetOptions(this.SelectedEntries); uiService.Update(); }