Opc.Ua.Configuration.HttpAccessRulelListCtrl.DeleteMI_Click C# (CSharp) Method

DeleteMI_Click() private method

private DeleteMI_Click ( object sender, EventArgs e ) : void
sender object
e System.EventArgs
return void
        private void DeleteMI_Click(object sender, EventArgs e)
        {
            try
			{            
                if (ItemsLV.SelectedItems.Count < 1)
                {
                    return;
                }    

                DialogResult result = MessageBox.Show(
                    "Are you sure you wish to delete the rules from the list?", 
                    "Delete Certificate",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Exclamation);

                if (result != DialogResult.Yes)
                {
                    return;
                }

                // remove the items.
                Dictionary<string, List<HttpAccessRule>> rulesToDelete = new Dictionary<string, List<HttpAccessRule>>();

                while (ItemsLV.SelectedItems.Count > 0)
                {
                    HttpAccessRule rule = ItemsLV.SelectedItems[0].Tag as HttpAccessRule;

                    List<HttpAccessRule> rules = null;

                    if (!rulesToDelete.TryGetValue(rule.UrlPrefix, out rules))
                    {
                        rulesToDelete[rule.UrlPrefix] = rules = new List<HttpAccessRule>();
                    }

                    rules.Add(rule);
                    ItemsLV.SelectedItems[0].Remove();
                }

                // delete rules.
                foreach (KeyValuePair<string, List<HttpAccessRule>> pair in rulesToDelete)
                {
                    IList<HttpAccessRule> existingRules = HttpAccessRule.GetAccessRules(pair.Key);
                    
                    List<HttpAccessRule> remainingRules = new List<HttpAccessRule>();

                    for (int ii = 0; ii < existingRules.Count; ii++)
                    {
                        HttpAccessRule existingRule = existingRules[ii];

                        bool found = false;

                        for (int jj = 0; jj < pair.Value.Count; jj++)
                        {
                            HttpAccessRule ruleToDelete = pair.Value[jj];

                            if (ruleToDelete.IdentityName == existingRule.IdentityName)
                            {
                                continue;
                            }

                            if (ruleToDelete.Right == existingRule.Right)
                            {
                                continue;
                            }

                            found = true;
                            break;
                        }

                        if (!found)
                        {
                            remainingRules.Add(existingRule);
                        }
                    }

                    HttpAccessRule.SetAccessRules(pair.Key, remainingRules, true);
                }
            }
            catch (Exception exception)
            {
				GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
            }
        }
        #endregion