Exemplo n.º 1
0
        public override RoleGroupTreeNode CreateRoleGroupTreeNode(DomainRoleInfo targetRoleInfo)
        {
            if (targetRoleInfo == null)
            {
                throw new ArgumentNullException(nameof(targetRoleInfo));
            }

            Type representedType = targetRoleInfo.LinkPropertyInfo.PropertyType;

            if (!nodeEventHandlersAdded.Contains(representedType))
            {
                DomainClassInfo domainClassInfo = ModelingDocData.Store.DomainDataDirectory.FindDomainClass(representedType);
                ModelingDocData.Store.EventManagerDirectory.ElementAdded.Add(domainClassInfo, new EventHandler <ElementAddedEventArgs>(AddedHandler));
                ModelingDocData.Store.EventManagerDirectory.ElementDeleted.Add(domainClassInfo, new EventHandler <ElementDeletedEventArgs>(DeletedHandler));
                ModelingDocData.Store.EventManagerDirectory.ElementPropertyChanged.Add(domainClassInfo, new EventHandler <ElementPropertyChangedEventArgs>(ChangedHandler));
                nodeEventHandlersAdded.Add(representedType);
            }

            RoleGroupTreeNode roleGroupTreeNode = new EFModelRoleGroupTreeNode(targetRoleInfo);

            if (ObjectModelBrowser.ImageList != null)
            {
                roleGroupTreeNode.DefaultImageIndex = 1;
            }

            return(roleGroupTreeNode);
        }
Exemplo n.º 2
0
            /// <summary>
            ///    Called to remove an ExplorerTreeNode from the explorer. Also removes empty parent group nodes.
            /// </summary>
            /// <param name="node">Node to remove</param>
            private void Remove(TreeNode node)
            {
                if (node is ExplorerTreeNode elementNode)
                {
                    EFModelRoleGroupTreeNode groupNode = node.Parent as EFModelRoleGroupTreeNode;
                    elementNode.Remove();

                    if (groupNode.Nodes.Count == 0 && (elementNode.RepresentedElement is ModelAttribute ||
                                                       elementNode.RepresentedElement is ModelEnumValue))
                    {
                        groupNode.Remove();
                    }
                }
            }
Exemplo n.º 3
0
        /// <summary>
        ///    Method to insert the incoming node into the TreeNodeCollection. This allows the derived class to change the sorting behavior.
        ///    N.B. This should really be protected, and is only intended as an override point. Do not call it directly, but rather call
        ///    InsertNode()
        /// </summary>
        /// <param name="siblingNodes"></param>
        /// <param name="node"></param>
        public override void InsertTreeNode(TreeNodeCollection siblingNodes, ExplorerTreeNode node)
        {
            base.InsertTreeNode(siblingNodes, node);

            // sorting Diagrams first. Normally would be alpha ordering
            EFModelRoleGroupTreeNode diagramNode = siblingNodes.OfType <EFModelRoleGroupTreeNode>().FirstOrDefault(n => n.Text.StartsWith("Diagrams"));

            if (diagramNode != null && siblingNodes.IndexOf(diagramNode) != 0)
            {
                diagramNode.Remove();
                siblingNodes.Insert(0, diagramNode);
            }

            if (node.Parent is EFModelRoleGroupTreeNode roleNode)
            {
                roleNode.Text = roleNode.GetNodeText(); // not roleNode.UpdateNodeText() - too expensive
            }
        }