public void DeleteCriteria()
{
// Make sure we have a node selected
if (ConditionNode == null)
{
MessageBox.Show("Please select a criteria to remove.");
return;
}
// Dont update tree till we are finished adding/removing
AwardConditionsTree.BeginUpdate();
if (ConditionNode.Parent == null)
{
AwardConditionsTree.Nodes.Remove(ConditionNode);
ValidateConditions(SelectedAwardNode, SelectedAward.GetCondition());
}
// Dont delete on Plus / Div Trees
else if (!(ConditionNode.Tag is ConditionList))
{
TreeNode Parent = ConditionNode.Parent;
ConditionList C = (ConditionList)Parent.Tag;
// Remove Not Conditions, as they only hold 1 criteria anyways
if (C.Type == ConditionType.Not)
{
AwardConditionsTree.Nodes.Remove(Parent);
}
// Dont remove Plus or Div elements as they need 2 or 3 to work!
else if (C.Type == ConditionType.Plus || C.Type == ConditionType.Div)
{
ConditionNode = Parent;
AwardConditionsTree.SelectedNode = Parent;
EditCriteria();
}
else
{
// Remove Node
AwardConditionsTree.Nodes.Remove(ConditionNode);
// remove empty parent nodes
if (Parent.Nodes.Count == 0)
AwardConditionsTree.Nodes.Remove(Parent);
}
}
else
AwardConditionsTree.Nodes.Remove(ConditionNode);
// Get our selected medal condition
Condition Cond = null;
// Set awards new conditions
if (AwardConditionsTree.Nodes.Count > 0)
{
Cond = MedalDataParser.ParseNodeConditions(AwardConditionsTree.Nodes[0]);
SelectedAward.SetCondition(Cond);
}
else
SelectedAward.SetCondition(null);
// Reparse conditions
AwardConditionsTree.Nodes.Clear();
TreeNode NN = SelectedAward.ToTree();
if (NN != null)
AwardConditionsTree.Nodes.Add(NN);
ValidateConditions(SelectedAwardNode, Cond);
AwardConditionsTree.EndUpdate();
AwardConditionsTree.ExpandAll();
}