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;
}