IfcDoc.FormEdit.TreeView_AfterSelect C# (CSharp) Method

TreeView_AfterSelect() private method

private TreeView_AfterSelect ( object sender, TreeViewEventArgs e ) : void
sender object
e TreeViewEventArgs
return void
        private void TreeView_AfterSelect(object sender, TreeViewEventArgs e)
        {
            this.toolStripMenuItemEditDelete.Enabled = false;
            this.toolStripMenuItemEditRename.Enabled = false;
            this.toolStripMenuItemEditMoveDown.Enabled = false;
            this.toolStripMenuItemEditMoveUp.Enabled = false;
            this.toolStripMenuItemEditMoveOut.Enabled = false;
            this.toolStripMenuItemEditMoveIn.Enabled = false;

            this.toolStripMenuItemInsertTemplate.Enabled = true;
            this.toolStripMenuItemInsertViewDefinition.Enabled = true;
            this.toolStripMenuItemInsertExchange.Enabled = false;
            this.toolStripMenuItemInsertConceptRoot.Enabled = false;
            this.toolStripMenuItemInsertConceptLeaf.Enabled = false;

            this.toolStripMenuItemInsertNormative.Enabled = true;

            this.ToolStripMenuItemInsertTerm.Enabled = true;
            this.ToolStripMenuItemInsertAbbreviatedTerm.Enabled = true;

            this.toolStripMenuItemInsertSchema.Enabled = false;
            this.toolStripMenuItemInsertEntity.Enabled = false;
            this.toolStripMenuItemInsertAttribute.Enabled = false;
            this.toolStripMenuItemInsertSelect.Enabled = false;
            this.toolStripMenuItemInsertDefined.Enabled = false;
            this.toolStripMenuItemInsertEnumeration.Enabled = false;
            this.toolStripMenuItemInsertEnumerationConstant.Enabled = false;
            this.toolStripMenuItemInsertWhere.Enabled = false;
            this.toolStripMenuItemInsertUnique.Enabled = false;
            this.toolStripMenuItemInsertGlobalRule.Enabled = false;
            this.toolStripMenuItemInsertFunction.Enabled = false;
            this.toolStripMenuItemInsertPrimitive.Enabled = false;
            this.toolStripMenuItemInsertReference.Enabled = false;
            this.toolStripMenuItemInsertComment.Enabled = false;

            this.toolStripMenuItemInsertPropertyset.Enabled = false;
            this.toolStripMenuItemInsertProperty.Enabled = false;
            this.toolStripMenuItemInsertQuantityset.Enabled = false;
            this.toolStripMenuItemInsertQuantity.Enabled = false;
            this.toolStripMenuItemInsertPropertyEnumeration.Enabled = false;
            this.toolStripMenuItemInsertPropertyConstant.Enabled = false;

            this.toolStripMenuItemInsertBibliography.Enabled = true;

            this.ToolStripMenuItemEditCut.Enabled = false;
            this.toolStripMenuItemEditCopy.Enabled = false;
            this.toolStripMenuItemEditPaste.Enabled = false;

            this.toolStripMenuItemEditBuildConcepts.Enabled = false;
            this.buildFromSubschemaToolStripMenuItem.Enabled = false;

            this.toolStripMenuItemContextInsertModelView.Visible = false;
            this.toolStripMenuItemContextInsertExchange.Visible = false;
            this.toolStripMenuItemEnableDisable.Visible = false;
            this.toolStripMenuItemContextInsertTemplate.Visible = false;
            this.toolStripMenuItemContextInsertRoot.Visible = false;
            this.toolStripMenuItemContextInsertLeaf.Visible = false;
            this.toolStripMenuItemContextInsertNormative.Visible = false;
            this.toolStripMenuItemContextInsertTerm.Visible = false;
            this.toolStripMenuItemContextInsertAbbreviatedTerm.Visible = false;
            this.toolStripMenuItemContextInsertPset.Visible = false;
            this.toolStripMenuItemContextInsertProperty.Visible = false;
            this.toolStripMenuItemContextInsertPropertyEnum.Visible = false;
            this.toolStripMenuItemContextInsertPropertyConstant.Visible = false;
            this.toolStripMenuItemContextInsertQset.Visible = false;
            this.toolStripMenuItemContextInsertQuantity.Visible = false;
            this.toolStripMenuItemContextInsertExample.Visible = false;
            this.toolStripMenuItemContextInsertBibliography.Visible = false;
            this.toolStripMenuItemContextInsert.Visible = false;

            this.toolStripMenuItemDiagramFormatPageRef.Enabled = (e.Node.Tag is DocDefinition);
            this.toolStripMenuItemDiagramFormatPageRef.Checked = false;
            if (e.Node.Tag is DocDefinition)
            {
                TreeNode tnSchema = e.Node;
                while (!(tnSchema.Tag is DocSchema) && tnSchema.Parent != null)
                {
                    tnSchema = tnSchema.Parent;
                }
                if (tnSchema.Tag is DocSchema)
                {
                    DocSchema docSchema = (DocSchema)tnSchema.Tag;
                    foreach(DocPageTarget docPageTarget in docSchema.PageTargets)
                    {
                        if (docPageTarget.Definition == e.Node.Tag)
                        {
                            this.toolStripMenuItemDiagramFormatPageRef.Checked = true;
                            break;
                        }
                    }
                }

            }

            this.toolStripMenuItemDiagramFormatTree.Enabled = (e.Node.Tag is IDocTreeHost && ((IDocTreeHost)e.Node.Tag).Tree.Count > 0);
            this.toolStripMenuItemDiagramFormatTree.Checked = (e.Node.Tag is IDocTreeHost && ((IDocTreeHost)e.Node.Tag).Tree.Count > 0 && ((IDocTreeHost)e.Node.Tag).Tree[0].Definition == null);

            if (e.Node.Tag is DocTerm)
            {
                DocTerm term = (DocTerm)e.Node.Tag;
                this.toolStripMenuItemEditDelete.Enabled = true;
                this.toolStripMenuItemEditRename.Enabled = true;

                if (e.Node.Parent.Tag is DocTerm)
                {
                    DocTerm ent = (DocTerm)e.Node.Parent.Tag;
                    if (ent.Terms.IndexOf(term) > 0)
                    {
                        this.toolStripMenuItemEditMoveUp.Enabled = true;
                        this.toolStripMenuItemEditMoveIn.Enabled = true;
                    }

                    if (ent.Terms.IndexOf(term) < ent.Terms.Count - 1)
                    {
                        this.toolStripMenuItemEditMoveDown.Enabled = true;
                    }

                    this.toolStripMenuItemEditMoveOut.Enabled = true;
                }
                else
                {
                    if (this.m_project.Terms.IndexOf(term) > 0)
                    {
                        this.toolStripMenuItemEditMoveUp.Enabled = true;
                        this.toolStripMenuItemEditMoveIn.Enabled = true;
                    }

                    if (this.m_project.Terms.IndexOf(term) < this.m_project.Terms.Count - 1)
                    {
                        this.toolStripMenuItemEditMoveDown.Enabled = true;
                    }
                }

            }
            if (e.Node.Tag is DocAbbreviation)
            {
                DocAbbreviation obj = (DocAbbreviation)e.Node.Tag;
                this.SetContent(obj, obj.Documentation);
                this.toolStripMenuItemEditDelete.Enabled = true;
                this.toolStripMenuItemEditRename.Enabled = true;
            }
            else if(e.Node.Tag is DocReference)
            {
                DocReference obj = (DocReference)e.Node.Tag;
                this.SetContent(obj, obj.Documentation);
                this.toolStripMenuItemEditDelete.Enabled = true;
                this.toolStripMenuItemEditRename.Enabled = true;
            }
            else if (e.Node.Tag is DocTemplateDefinition)
            {
                this.toolStripMenuItemEditDelete.Enabled = true;
                this.toolStripMenuItemEditRename.Enabled = true;

                this.toolStripMenuItemEnableDisable.Visible = true;
                this.toolStripMenuItemContextInsertTemplate.Visible = true;
                this.toolStripMenuItemContextInsert.Visible = true;

                DocTemplateDefinition obj = (DocTemplateDefinition)e.Node.Tag;

                this.toolStripMenuItemEnableDisable.Checked = obj.IsDisabled;

                this.SetContent(obj, obj.Documentation);

                if (e.Node.Parent.Tag is DocTemplateDefinition)
                {
                    DocTemplateDefinition ent = (DocTemplateDefinition)e.Node.Parent.Tag;
                    if (ent.Templates.IndexOf(obj) > 0)
                    {
                        this.toolStripMenuItemEditMoveUp.Enabled = true;
                        this.toolStripMenuItemEditMoveIn.Enabled = true;
                    }

                    if (ent.Templates.IndexOf(obj) < ent.Templates.Count - 1)
                    {
                        this.toolStripMenuItemEditMoveDown.Enabled = true;
                    }

                    this.toolStripMenuItemEditMoveOut.Enabled = true;
                }
                else
                {
                    if (this.m_project.Templates.IndexOf(obj) > 0)
                    {
                        this.toolStripMenuItemEditMoveUp.Enabled = true;
                        this.toolStripMenuItemEditMoveIn.Enabled = true;
                    }

                    if (this.m_project.Templates.IndexOf(obj) < this.m_project.Templates.Count - 1)
                    {
                        this.toolStripMenuItemEditMoveDown.Enabled = true;
                    }
                }
            }
            else if (e.Node.Tag is DocTemplateUsage)
            {
                DocTemplateUsage obj = (DocTemplateUsage)e.Node.Tag;

                this.SetContent(obj, obj.Documentation);

                this.toolStripMenuItemEditCopy.Enabled = true;
                this.toolStripMenuItemEditDelete.Enabled = true;
                this.toolStripMenuItemEditRename.Enabled = true;
                this.toolStripMenuItemInsertConceptLeaf.Enabled = true; // subleafs now supported

                if (e.Node.Parent.Tag is DocConceptRoot)
                {
                    DocConceptRoot docRoot = (DocConceptRoot)e.Node.Parent.Tag;
                    if (docRoot.Concepts.IndexOf(obj) > 0)
                    {
                        this.toolStripMenuItemEditMoveIn.Enabled = true;
                        this.toolStripMenuItemEditMoveUp.Enabled = true;
                    }

                    if (docRoot.Concepts.IndexOf(obj) < docRoot.Concepts.Count - 1)
                    {
                        this.toolStripMenuItemEditMoveDown.Enabled = true;
                    }
                    this.toolStripMenuItemEditBuildConcepts.Enabled = true;
                }
                else if(e.Node.Parent.Tag is DocTemplateUsage)
                {
                    this.toolStripMenuItemEditMoveOut.Enabled = true;

                    DocTemplateUsage docRoot = (DocTemplateUsage)e.Node.Parent.Tag;
                    if (docRoot.Concepts.IndexOf(obj) > 0)
                    {
                        this.toolStripMenuItemEditMoveIn.Enabled = true;
                        this.toolStripMenuItemEditMoveUp.Enabled = true;
                    }

                    if (docRoot.Concepts.IndexOf(obj) < docRoot.Concepts.Count - 1)
                    {
                        this.toolStripMenuItemEditMoveDown.Enabled = true;
                    }
                }
            }
            else if (e.Node.Tag is DocTemplateItem)
            {
                DocTemplateItem obj = (DocTemplateItem)e.Node.Tag;
                this.SetContent(null, null);

                this.toolStripMenuItemEditDelete.Enabled = true;
            }
            else if (e.Node.Tag is DocModelView)
            {
                DocModelView obj = (DocModelView)e.Node.Tag;
                this.SetContent(obj, obj.Documentation);

                this.toolStripMenuItemInsertExchange.Enabled = true;
                this.toolStripMenuItemEditDelete.Enabled = true;
                this.toolStripMenuItemEditRename.Enabled = true;
                this.toolStripMenuItemEditPaste.Enabled = (this.m_clipboard is DocExchangeDefinition);

                this.toolStripMenuItemEditBuildConcepts.Enabled = true;
                this.buildFromSubschemaToolStripMenuItem.Enabled = true;

                this.toolStripMenuItemContextInsertExchange.Visible = true;
                this.toolStripMenuItemContextInsert.Visible = true;

                if (this.m_project.ModelViews.IndexOf(obj) > 0)
                {
                    this.toolStripMenuItemEditMoveUp.Enabled = true;
                }

                if (this.m_project.ModelViews.IndexOf(obj) < this.m_project.ModelViews.Count - 1)
                {
                    this.toolStripMenuItemEditMoveDown.Enabled = true;
                }
            }
            else if (e.Node.Tag is DocExchangeDefinition)
            {
                DocExchangeDefinition obj = (DocExchangeDefinition)e.Node.Tag;
                this.SetContent(obj, obj.Documentation);

                this.toolStripMenuItemEditCopy.Enabled = true;
                this.toolStripMenuItemEditDelete.Enabled = true;
                this.toolStripMenuItemEditRename.Enabled = true;

                if (e.Node.Parent.Tag is DocModelView)
                {
                    DocModelView ent = (DocModelView)e.Node.Parent.Tag;
                    if (ent.Exchanges.IndexOf(obj) > 0)
                    {
                        this.toolStripMenuItemEditMoveUp.Enabled = true;
                    }

                    if (ent.Exchanges.IndexOf(obj) < ent.Exchanges.Count - 1)
                    {
                        this.toolStripMenuItemEditMoveDown.Enabled = true;
                    }
                }
            }
            else if (e.Node.Tag is DocChangeSet)
            {
                DocChangeSet obj = (DocChangeSet)e.Node.Tag;
                this.SetContent(obj, obj.Documentation);
                this.toolStripMenuItemEditDelete.Enabled = true;
                this.toolStripMenuItemEditRename.Enabled = true;
            }
            else if (e.Node.Tag == typeof(DocPropertySet))
            {
                this.toolStripMenuItemInsertPropertyset.Enabled = true;
                this.toolStripMenuItemContextInsertPset.Visible = true;
                this.toolStripMenuItemContextInsert.Visible = true;
            }
            else if (e.Node.Tag == typeof(DocPropertyEnumeration))
            {
                this.toolStripMenuItemInsertPropertyEnumeration.Enabled = true;
                this.toolStripMenuItemContextInsertPropertyEnum.Visible = true;
                this.toolStripMenuItemContextInsert.Visible = true;
            }
            else if (e.Node.Tag == typeof(DocQuantitySet))
            {
                this.toolStripMenuItemInsertQuantityset.Enabled = true;
                this.toolStripMenuItemContextInsertQset.Visible = true;
                this.toolStripMenuItemContextInsert.Visible = true;
            }
            else if (e.Node.Tag is DocObject)
            {
                DocObject obj = (DocObject)e.Node.Tag;
                this.SetContent(obj, obj.Documentation);

                this.toolStripMenuItemEditRename.Enabled = true;

                if (obj is DocSchema)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;
                    this.ToolStripMenuItemEditCut.Enabled = true;
                    this.toolStripMenuItemEditPaste.Enabled = (this.m_clipboard is DocPropertySet);

                    this.toolStripMenuItemInsertPropertyset.Enabled = true;
                    this.toolStripMenuItemInsertQuantityset.Enabled = true;
                    this.toolStripMenuItemInsertPropertyEnumeration.Enabled = true;

                    this.toolStripMenuItemContextInsertPset.Visible = true;
                    this.toolStripMenuItemContextInsertPropertyEnum.Visible = true;
                    this.toolStripMenuItemContextInsertQset.Visible = true;
                    this.toolStripMenuItemContextInsert.Visible = true;

                    this.toolStripMenuItemInsertEntity.Enabled = true;
                    this.toolStripMenuItemInsertEnumeration.Enabled = true;
                    this.toolStripMenuItemInsertSelect.Enabled = true;
                    this.toolStripMenuItemInsertDefined.Enabled = true;
                    this.toolStripMenuItemInsertGlobalRule.Enabled = true;
                    this.toolStripMenuItemInsertFunction.Enabled = true;
                    this.toolStripMenuItemInsertPrimitive.Enabled = true;
                    this.toolStripMenuItemInsertReference.Enabled = true;
                    this.toolStripMenuItemInsertComment.Enabled = true;
                }
                else if (obj is DocType)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;

                    if (obj is DocEnumeration)
                    {
                        toolStripMenuItemInsertEnumerationConstant.Enabled = true;
                    }
                    else if(obj is DocSelect)
                    {
                        DocSelect docSel = (DocSelect)obj;
                    }
                    else if (obj is DocDefined)
                    {
                        this.toolStripMenuItemInsertWhere.Enabled = true;
                    }
                    this.toolStripMenuItemDiagramFormatPageRef.Enabled = true;
                }
                else if (obj is DocConstant)
                {
                    DocConstant docConst = (DocConstant)obj;
                    this.toolStripMenuItemEditDelete.Enabled = true;
                    DocEnumeration docEnum = (DocEnumeration)treeView.SelectedNode.Parent.Tag;
                    this.toolStripMenuItemEditMoveUp.Enabled = (docEnum.Constants.IndexOf(docConst) > 0);
                    this.toolStripMenuItemEditMoveDown.Enabled = (docEnum.Constants.IndexOf(docConst) < docEnum.Constants.Count - 1);
                }
                else if (obj is DocEntity)
                {
                    DocEntity entity = (DocEntity)obj;

                    this.toolStripMenuItemEditDelete.Enabled = true;
                    this.toolStripMenuItemEditPaste.Enabled = false;

                    //this.ToolStripMenuItemEditCut.Enabled = true;

                    this.toolStripMenuItemInsertAttribute.Enabled = true;
                    this.toolStripMenuItemInsertUnique.Enabled = true;
                    this.toolStripMenuItemInsertWhere.Enabled = true;
                    this.toolStripMenuItemInsertConceptRoot.Enabled = true;

                    this.toolStripMenuItemContextInsertRoot.Visible = true;
                    this.toolStripMenuItemContextInsert.Visible = true;

                    if (entity.Subtypes.Count > 0)
                    {
                        this.toolStripMenuItemDiagramFormatTree.Enabled = true;
                    }
                    this.toolStripMenuItemDiagramFormatPageRef.Enabled = true;
                }
                else if (obj is DocAttribute)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;

                    DocAttribute docAttr = (DocAttribute)obj;
                    DocEntity docEnt = (DocEntity)e.Node.Parent.Tag;
                    if (docEnt.Attributes.IndexOf(docAttr) > 0)
                    {
                        this.toolStripMenuItemEditMoveUp.Enabled = true;
                    }

                    if (docEnt.Attributes.IndexOf(docAttr) < docEnt.Attributes.Count - 1)
                    {
                        this.toolStripMenuItemEditMoveDown.Enabled = true;
                    }
                }
                else if (obj is DocWhereRule)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;

                    DocWhereRule docAttr = (DocWhereRule)obj;
                    DocEntity docEnt = (DocEntity)e.Node.Parent.Tag;
                    if (docEnt.WhereRules.IndexOf(docAttr) > 0)
                    {
                        this.toolStripMenuItemEditMoveUp.Enabled = true;
                    }

                    if (docEnt.WhereRules.IndexOf(docAttr) < docEnt.WhereRules.Count - 1)
                    {
                        this.toolStripMenuItemEditMoveDown.Enabled = true;
                    }
                }
                else if (obj is DocUniqueRule)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;
                }
                else if (obj is DocSchema)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;

                    //this.toolStripMenuItemEditPaste.Enabled = (this.m_clipboard is DocEntity);
                }
                else if (obj is DocFunction)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;
                }
                else if (obj is DocConceptRoot)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;
                    this.toolStripMenuItemEditPaste.Enabled = (this.m_clipboard is DocTemplateUsage);
                    this.toolStripMenuItemInsertConceptLeaf.Enabled = true;

                    this.toolStripMenuItemContextInsertLeaf.Visible = true;
                    this.toolStripMenuItemContextInsert.Visible = true;

                    if(e.Node.Parent.Tag is DocModelView)
                    {
                        DocConceptRoot dcr = (DocConceptRoot)obj;
                        DocModelView dmv = (DocModelView)e.Node.Parent.Tag;
                        int indexof = dmv.ConceptRoots.IndexOf(dcr);
                        this.toolStripMenuItemEditMoveUp.Enabled = (indexof > 0);
                        this.toolStripMenuItemEditMoveDown.Enabled = (indexof < dmv.ConceptRoots.Count - 1);
                    }

                    this.toolStripMenuItemEditBuildConcepts.Enabled = true;
                }
                else if(obj is DocPropertyConstant)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;
                    DocPropertyConstant constant = (DocPropertyConstant)obj;
                    DocPropertyEnumeration ent = (DocPropertyEnumeration)e.Node.Parent.Tag;
                    if (ent.Constants.IndexOf(constant) > 0)
                    {
                        this.toolStripMenuItemEditMoveUp.Enabled = true;
                    }

                    if (ent.Constants.IndexOf(constant) < ent.Constants.Count - 1)
                    {
                        this.toolStripMenuItemEditMoveDown.Enabled = true;
                    }

                }
                else if (obj is DocPropertySet)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;
                    this.toolStripMenuItemInsertProperty.Enabled = true;

                    this.toolStripMenuItemContextInsertProperty.Visible = true;
                    this.toolStripMenuItemContextInsert.Visible = true;

                    this.ToolStripMenuItemEditCut.Enabled = true;
                    this.toolStripMenuItemEditPaste.Enabled = (this.m_clipboard is DocProperty);
                }
                else if (obj is DocProperty)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;
                    this.toolStripMenuItemEditCopy.Enabled = true;
                    this.ToolStripMenuItemEditCut.Enabled = true;

                    DocPropertySet ent = (DocPropertySet)e.Node.Parent.Tag;
                    if (ent.Properties.IndexOf((DocProperty)obj) > 0)
                    {
                        this.toolStripMenuItemEditMoveUp.Enabled = true;
                    }

                    if (ent.Properties.IndexOf((DocProperty)obj) < ent.Properties.Count - 1)
                    {
                        this.toolStripMenuItemEditMoveDown.Enabled = true;
                    }
                }
                else if (obj is DocPropertyEnumeration)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;
                    this.toolStripMenuItemInsertPropertyConstant.Enabled = true;
                    this.toolStripMenuItemContextInsertPropertyConstant.Visible = true;
                    this.toolStripMenuItemContextInsert.Visible = true;
                }
                else if (obj is DocQuantitySet)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;
                    this.toolStripMenuItemInsertQuantity.Enabled = true;

                    this.toolStripMenuItemContextInsertQuantity.Visible = true;
                    this.toolStripMenuItemContextInsert.Visible = true;
                }
                else if (obj is DocQuantity)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;

                    DocQuantitySet ent = (DocQuantitySet)e.Node.Parent.Tag;
                    if (ent.Quantities.IndexOf((DocQuantity)obj) > 0)
                    {
                        this.toolStripMenuItemEditMoveUp.Enabled = true;
                    }

                    if (ent.Quantities.IndexOf((DocQuantity)obj) < ent.Quantities.Count - 1)
                    {
                        this.toolStripMenuItemEditMoveDown.Enabled = true;
                    }
                }
                else if (obj is DocExample)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;

                    this.toolStripMenuItemContextInsertExample.Visible = true;
                    this.toolStripMenuItemContextInsert.Visible = true;

                    if (e.Node.Parent.Tag is DocExample)
                    {
                        DocExample ent = (DocExample)e.Node.Parent.Tag;
                        if (ent.Examples.IndexOf((DocExample)obj) > 0)
                        {
                            this.toolStripMenuItemEditMoveUp.Enabled = true;
                            this.toolStripMenuItemEditMoveIn.Enabled = true;
                        }

                        if (ent.Examples.IndexOf((DocExample)obj) < ent.Examples.Count - 1)
                        {
                            this.toolStripMenuItemEditMoveDown.Enabled = true;
                        }

                        this.toolStripMenuItemEditMoveOut.Enabled = true;
                    }
                    else
                    {
                        if (this.m_project.Examples.IndexOf((DocExample)obj) > 0)
                        {
                            this.toolStripMenuItemEditMoveUp.Enabled = true;
                            this.toolStripMenuItemEditMoveIn.Enabled = true;
                        }

                        if (this.m_project.Examples.IndexOf((DocExample)obj) < this.m_project.Examples.Count - 1)
                        {
                            this.toolStripMenuItemEditMoveDown.Enabled = true;
                        }
                    }
                }
                else if (obj is DocComment)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;
                }
                else if (obj is DocPrimitive)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;
                    this.toolStripMenuItemEditRename.Enabled = false;
                }
                else if (obj is DocDefinitionRef)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;
                }
                else if (obj is DocPageSource)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;
                }
                else if (obj is DocPageTarget)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;
                }
                else if (obj is DocSection)
                {
                    this.toolStripMenuItemEditRename.Enabled = false;

                    if (e.Node.Index >= 4 && e.Node.Index < 8)
                    {
                        this.toolStripMenuItemEditRename.Enabled = true;
                        this.toolStripMenuItemInsertSchema.Enabled = true;
                        this.toolStripMenuItemEditPaste.Enabled = (this.m_clipboard is DocSchema);
                    }

                    // special cases
                    switch (e.Node.Index)
                    {
                        case 0: // scope
                            this.toolStripMenuItemContextInsertModelView.Visible = true;
                            this.toolStripMenuItemContextInsert.Visible = true;
                            break;

                        case 1: // normative references
                            this.toolStripMenuItemContextInsertNormative.Visible = true;
                            this.toolStripMenuItemContextInsert.Visible = true;
                            break;

                        case 2: // terms
                            this.toolStripMenuItemContextInsertTerm.Visible = true;
                            this.toolStripMenuItemContextInsertAbbreviatedTerm.Visible = true;
                            this.toolStripMenuItemContextInsert.Visible = true;
                            break;

                        case 3: // templates
                            this.toolStripMenuItemContextInsertTemplate.Visible = true;
                            this.toolStripMenuItemContextInsert.Visible = true;
                            break;
                    }
                }
                else if (obj is DocAnnex)
                {
                    this.toolStripMenuItemEditRename.Enabled = false;
                    if (e.Node.Index == 12)
                    {
                        this.toolStripMenuItemContextInsertExample.Visible = true;
                        this.toolStripMenuItemContextInsert.Visible = true;
                    }
                }
                else if (obj is DocPublication)
                {
                    this.toolStripMenuItemEditDelete.Enabled = true;
                    this.toolStripMenuItemEditRename.Enabled = true;
                }
                else if (obj is DocAnnotation)
                {
                    this.toolStripMenuItemEditRename.Enabled = false;
                }
            }
            else
            {
                this.SetContent(null, null);
            }

            // copy state to context menu
            this.toolStripMenuItemContextSeparator.Visible = this.toolStripMenuItemContextInsert.Visible;
            this.deleteToolStripMenuItem.Enabled = this.toolStripMenuItemEditDelete.Enabled;
            this.toolStripMenuItemContextInsertConstant.Visible = toolStripMenuItemInsertEnumerationConstant.Enabled;

            // copy state to toolbar
            this.ToolStripButtonEditCut.Enabled = this.ToolStripMenuItemEditCut.Enabled;
            this.ToolStripButtonEditCopy.Enabled = this.toolStripMenuItemEditCopy.Enabled;
            this.ToolStripButtonEditPaste.Enabled = this.toolStripMenuItemEditPaste.Enabled;
            this.toolStripButtonEditDelete.Enabled = this.toolStripMenuItemEditDelete.Enabled;
            this.toolStripButtonEditRename.Enabled = this.toolStripMenuItemEditRename.Enabled;

            this.toolStripButtonMoveUp.Enabled = this.toolStripMenuItemEditMoveUp.Enabled;
            this.toolStripButtonMoveDown.Enabled = this.toolStripMenuItemEditMoveDown.Enabled;
            this.toolStripButtonMoveOut.Enabled = this.toolStripMenuItemEditMoveOut.Enabled;
            this.toolStripButtonMoveIn.Enabled = this.toolStripMenuItemEditMoveIn.Enabled;

            DocObject docObject = this.treeView.SelectedNode.Tag as DocObject;
            if (docObject != null)
            {
                // build path
                List<DocObject> path = new List<DocObject>();
                TreeNode tn = this.treeView.SelectedNode;
                while (tn != null)
                {
                    if (tn.Tag is DocObject)
                    {
                        path.Insert(0, (DocObject)tn.Tag);
                    }
                    tn = tn.Parent;
                }

                this.ctlProperties.Init(path.ToArray(), this.m_project);
            }
            else
            {
                this.ctlProperties.Init(null, this.m_project);
            }

            InitInstanceList();

            // restore focus
            this.treeView.Focus();
        }
FormEdit