private TreeNode MakeNode( XmlNode xNode ) { TreeNode tNode = new TreeNode(); if ( xNode.Name == "child" ) { // This is a simple child node Loc loc = new Loc( xNode ); tNode.Text = loc.Name; // Put location as tag tNode.Tag = loc; } else { // This is a parent node tNode.Text = xNode.Attributes["name"].Value; foreach ( XmlNode xChild in xNode.ChildNodes ) tNode.Nodes.Add( MakeNode( xChild ) ); } return tNode; }
private void ButtonAdd_Click(object sender, System.EventArgs e) { string name = Input.Text; if ( name.Length == 0 ) { Status.Text = "The name for the new item cannot be empty"; return; } TreeNode pNode = TreeCat.SelectedNode; if ( pNode == null ) { if ( TreeCat.Nodes.Count == 0 ) { // Empty tree, add the first item Loc nLoc = new Loc( name ); TreeNode nNode = new TreeNode( name ); Facet = name; nNode.Tag = nLoc; TreeCat.Nodes.Add( nNode ); TreeCat.SelectedNode = nNode; IsModified = true; return; } Status.Text = "Please select a category first"; return; } if ( pNode.Tag is Loc ) { if ( ((Loc)pNode.Tag).IsDefined ) { Status.Text = "You can't add sub-items to a location. Please choose a category instead."; return; } } // Check for duplicates if ( IsDuplicate( pNode, name, true ) ) { Status.Text = "An item named " + name + " already exists in the category " + pNode.Text; return; } // Ok we're adding a child. First set parent tag to null pNode.Tag = null; Loc NewLoc = new Loc( name ); TreeNode NewNode = new TreeNode( name ); NewNode.Tag = NewLoc; pNode.Nodes.Add( NewNode ); TreeCat.SelectedNode = NewNode; if ( ( pNode.Nodes.Count > 1 ) && ( pNode.Parent != null ) ) TreeCat.SelectedNode = pNode; IsModified = true; }