/// <summary> /// Handles when the error check dialogue is closed /// </summary> void errorCheckDialog_FormClosed(object sender, FormClosedEventArgs e) { // store its previous position _previousCheckDialogPosition= _errorCheckDialog.Location; _hasOldCheckDialogPosition= true; // we have to create a new dialogue the next time so we clear it _errorCheckDialog= null; }
/// <summary> /// Handles when the check for errors button is pressed. /// </summary> private void checkButton_Click(object sender, EventArgs e) { // store the old position of the check dialogue and close it if(_errorCheckDialog !=null) _errorCheckDialog.Close(); // prepare the new dialogue _errorCheckDialog= new ErrorCheckDialog(); _errorCheckDialog.BehaviorTreeList= _behaviorTreeList; _errorCheckDialog.BehaviorTreeView= this; _errorCheckDialog.Text= _rootNode.RootBehavior.GetPathLabel(_behaviorTreeList.BehaviorFolder) +" Error Check Results"; _errorCheckDialog.FormClosed+= new FormClosedEventHandler(errorCheckDialog_FormClosed); // check the current behaviour for errors List<Node.ErrorCheck> result= new List<Node.ErrorCheck>(); _rootNode.Node.CheckForErrors(_rootNode.RootBehavior, result); // add the errors to the check dialogue foreach(Node.ErrorCheck check in result) { BehaviorNode behavior= check.Node.Behavior; // group the errors by the behaviour their occured in // get the group for the error's behaviour ListViewGroup group= null; foreach(ListViewGroup grp in _errorCheckDialog.listView.Groups) { if(grp.Tag ==behavior) { group= grp; break; } } // if there is no group, create it if(group ==null) { group= new ListViewGroup(behavior.GetPathLabel(_behaviorTreeList.BehaviorFolder)); group.Tag= behavior; _errorCheckDialog.listView.Groups.Add(group); } // create an item for the error in the group ListViewItem item= new ListViewItem(check.Description); item.Group= group; item.Tag= check.Node; switch(check.Level) { case(ErrorCheckLevel.Message): item.ImageIndex= 0; break; case(ErrorCheckLevel.Warning): item.ImageIndex= 1; break; case(ErrorCheckLevel.Error): item.ImageIndex= 2; break; } _errorCheckDialog.listView.Items.Add(item); } // if no errors were found, tell the user so if(result.Count <1) _errorCheckDialog.listView.Items.Add( new ListViewItem("No Errors Found.", 0) ); // show the dialogue _errorCheckDialog.Show(); // set its position to the position of the previous dialogue if(_hasOldCheckDialogPosition) _errorCheckDialog.Location= _previousCheckDialogPosition; }