示例#1
0
        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();
 }