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