IfcDoc.FormEdit.toolStripMenuItemEditMoveIn_Click C# (CSharp) Method

toolStripMenuItemEditMoveIn_Click() private method

private toolStripMenuItemEditMoveIn_Click ( object sender, EventArgs e ) : void
sender object
e EventArgs
return void
        private void toolStripMenuItemEditMoveIn_Click(object sender, EventArgs e)
        {
            TreeNode tn = this.treeView.SelectedNode;
            TreeNode tnTarget = this.treeView.SelectedNode.Parent.Nodes[this.treeView.SelectedNode.Index - 1];

            if (tn.Tag is DocTemplateDefinition)
            {
                DocTemplateDefinition docSource = (DocTemplateDefinition)tn.Tag;
                DocTemplateDefinition docTarget = (DocTemplateDefinition)tn.Parent.Nodes[tn.Index - 1].Tag;

                // sub-template
                if (docSource.Rules != null && docSource.Rules.Count != 0 && docTarget.Rules != null && docTarget.Rules.Count > 0)
                {
            #if false
                    DialogResult res = MessageBox.Show(this, "Moving this template will reset any rules to match those of the new parent template. Are you sure you want to proceed?", "Move Template", MessageBoxButtons.OKCancel);
                    if (res != System.Windows.Forms.DialogResult.OK)
                        return;

                    docSource.Type = docTarget.Type;

                    // propagate rules
                    if (docSource.Rules == null)
                    {
                        docSource.Rules = new List<DocModelRule>();
                    }

                    docSource.Rules.Clear();
                    if (docTarget.Rules != null)
                    {
                        foreach (DocModelRule docRule in docTarget.Rules)
                        {
                            docSource.Rules.Add((DocModelRule)docRule.Clone());
                        }
                    }
            #endif
                }

                if (tn.Parent.Tag is DocTemplateDefinition)
                {
                    // move from mid-level
                    DocTemplateDefinition docParent = (DocTemplateDefinition)tn.Parent.Tag;
                    docParent.Templates.Remove(docSource);
                    docTarget.Templates.Add(docSource);
                }
                else
                {
                    // move from top-level
                    this.m_project.Templates.Remove(docSource);
                    docTarget.Templates.Add(docSource);
                }
            }
            else if (tn.Tag is DocTemplateUsage)
            {
                DocTemplateUsage docSource = (DocTemplateUsage)tn.Tag;
                DocTemplateUsage docTarget = (DocTemplateUsage)tn.Parent.Nodes[tn.Index - 1].Tag;

                if (tn.Parent.Tag is DocTemplateUsage)
                {
                    // move from mid-level
                    DocTemplateUsage docParent = (DocTemplateUsage)tn.Parent.Tag;
                    docParent.Concepts.Remove(docSource);
                    docTarget.Concepts.Add(docSource);
                }
                else
                {
                    // move from top-level
                    DocConceptRoot docParent = (DocConceptRoot)tn.Parent.Tag;
                    docParent.Concepts.Remove(docSource);
                    docTarget.Concepts.Add(docSource);
                }
            }
            else if (tn.Tag is DocExample)
            {
                DocExample docSource = (DocExample)tn.Tag;
                DocExample docTarget = (DocExample)tn.Parent.Nodes[tn.Index - 1].Tag;

                if (tn.Parent.Tag is DocExample)
                {
                    // move from mid-level
                    DocExample docParent = (DocExample)tn.Parent.Tag;
                    docParent.Examples.Remove(docSource);
                    docTarget.Examples.Add(docSource);
                }
                else
                {
                    // move from top-level
                    this.m_project.Examples.Remove(docSource);
                    docTarget.Examples.Add(docSource);
                }
            }
            else if (tn.Tag is DocTerm)
            {
                DocTerm docSource = (DocTerm)tn.Tag;
                DocTerm docTarget = (DocTerm)tn.Parent.Nodes[tn.Index - 1].Tag;

                if (tn.Parent.Tag is DocTerm)
                {
                    // move from mid-level
                    DocTerm docParent = (DocTerm)tn.Parent.Tag;
                    docParent.Terms.Remove(docSource);
                    docTarget.Terms.Add(docSource);
                }
                else
                {
                    // move from top-level
                    this.m_project.Terms.Remove(docSource);
                    docTarget.Terms.Add(docSource);
                }
            }

            tn.Remove();
            tnTarget.Nodes.Add(tn);

            this.treeView.SelectedNode = tn;
            this.m_modified = true;
        }
FormEdit