private void toolStripMenuItemEditPaste_Click(object sender, EventArgs e)
{
if (this.treeView.Focused)
{
DocObject docSelect = this.treeView.SelectedNode.Tag as DocObject;
if (docSelect is DocSection && this.m_clipboard is DocSchema && this.m_clipboardNode.Parent.Tag is DocSection)
{
DocSchema docSchema = (DocSchema)this.m_clipboard;
DocSection docSectionNew = (DocSection)docSelect;
DocSection docSectionOld = (DocSection)this.m_clipboardNode.Parent.Tag;
docSectionOld.Schemas.Remove(docSchema);
docSectionNew.Schemas.Add(docSchema);
this.m_clipboardNode.Remove();
TreeNode tnSchema = this.LoadNode(this.treeView.SelectedNode, docSchema, docSchema.Name, true);
this.treeView.SelectedNode = tnSchema;
LoadNodeSchema(tnSchema, docSchema);
}
else if (docSelect is DocSchema && this.m_clipboard is DocPropertySet)
{
DocSchema schemaNew = (DocSchema)docSelect;
DocPropertySet psetOld = (DocPropertySet)this.m_clipboard;
if (this.m_clipboardCut)
{
if (this.m_clipboardNode.Parent.Parent.Tag is DocSchema)
{
DocSchema schemaOld = (DocSchema)this.m_clipboardNode.Parent.Parent.Tag;
schemaOld.PropertySets.Remove(psetOld);
schemaNew.PropertySets.Add(psetOld);
this.m_clipboardNode.Remove();
this.m_clipboardNode = null;
this.m_clipboard = null;
this.m_clipboardCut = false;
this.treeView.SelectedNode = this.LoadNode(this.treeView.SelectedNode.Nodes[4], psetOld, psetOld.Name, false);
}
}
else
{
// TODO...
}
}
else if (docSelect is DocPropertySet && this.m_clipboard is DocProperty)
{
DocPropertySet psetNew = (DocPropertySet)docSelect;
DocProperty propOld = (DocProperty)this.m_clipboard;
if (this.m_clipboardCut)
{
if (this.m_clipboardNode.Parent.Tag is DocPropertySet)
{
DocPropertySet psetOld = (DocPropertySet)this.m_clipboardNode.Parent.Tag;
psetOld.Properties.Remove(propOld);
psetNew.Properties.Add(propOld);
this.m_clipboardNode.Remove();
this.m_clipboardNode = null;
this.m_clipboard = null;
this.m_clipboardCut = false;
this.treeView.SelectedNode = this.LoadNode(this.treeView.SelectedNode, propOld, propOld.Name, false);
}
}
else
{
DocProperty propNew = new DocProperty();
propNew.Name = propOld.Name;
propNew.Documentation = propOld.Documentation;
propNew.PropertyType = propOld.PropertyType;
propNew.PrimaryDataType = propOld.PrimaryDataType;
propNew.SecondaryDataType = propOld.SecondaryDataType;
foreach(DocLocalization localOld in propOld.Localization)
{
DocLocalization localNew = new DocLocalization();
localNew.Name = localOld.Name;
localNew.Documentation = localOld.Documentation;
localNew.Category = localOld.Category;
localNew.Locale = localOld.Locale;
localNew.URL = localOld.URL;
propNew.Localization.Add(localNew);
}
this.treeView.SelectedNode = this.LoadNode(this.treeView.SelectedNode, propNew, propNew.Name, false);
}
}
else if (docSelect is DocConceptRoot && this.m_clipboard is DocTemplateUsage)
{
DocConceptRoot docRoot = (DocConceptRoot)docSelect;
DocTemplateUsage docSource = (DocTemplateUsage)this.m_clipboard;
DocTemplateUsage docTarget = new DocTemplateUsage();
docRoot.Concepts.Add(docTarget);
CopyTemplateUsage(docSource, docTarget);
this.treeView.SelectedNode = LoadNode(this.treeView.SelectedNode, docTarget, docTarget.Name, false);
}
else if (docSelect is DocModelView && this.m_clipboard is DocExchangeDefinition)
{
DocModelView docView = (DocModelView)docSelect;
DocExchangeDefinition docSource = (DocExchangeDefinition)this.m_clipboard;
DocExchangeDefinition docTarget = new DocExchangeDefinition();
docView.Exchanges.Add(docTarget);
docTarget.Name = docSource.Name;
docTarget.Documentation = docSource.Documentation;
docTarget.Author = docSource.Author;
docTarget.Copyright = docSource.Copyright;
docTarget.Owner = docSource.Owner;
docTarget.Icon = docSource.Icon;
// copy entity requirements if in same view
if (docView.Exchanges.Contains(docSource))
{
foreach (DocConceptRoot docRoot in docView.ConceptRoots)
{
foreach (DocTemplateUsage docConcept in docRoot.Concepts)
{
List<DocExchangeItem> listNew = new List<DocExchangeItem>();
foreach (DocExchangeItem docSourceER in docConcept.Exchanges)
{
if (docSourceER.Exchange == docSource)
{
DocExchangeItem docTargetER = new DocExchangeItem();
docTargetER.Exchange = docTarget;
docTargetER.Applicability = docSourceER.Applicability;
docTargetER.Requirement = docSourceER.Requirement;
listNew.Add(docTargetER);
}
}
foreach (DocExchangeItem docTargetER in listNew)
{
docConcept.Exchanges.Add(docTargetER);
}
}
}
}
this.treeView.SelectedNode = LoadNode(this.treeView.SelectedNode, docTarget, docTarget.Name, false);
}
}
else
{
this.textBoxHTML.Paste();
}
}