Exemple #1
0
        public void AddElement(GraphElement element)
        {
            if (element == null)
            {
                throw new ArgumentException("Cannot add null element");
            }
            if (element is GroupNode)
            {
                throw new ArgumentException("Nested group node is not supported yet.");
            }
            if (this.m_ContainedElements == null)
            {
                this.m_ContainedElements = new List <GraphElement>();
            }
            else if (this.m_ContainedElements.Contains(element))
            {
                throw new ArgumentException("The element is already contained in this group node.");
            }
            GroupNode containingGroupNode = element.GetContainingGroupNode();

            if (containingGroupNode != null)
            {
                containingGroupNode.RemoveElement(element);
            }
            this.m_ContainedElements.Add(element);
            element.RegisterCallback <PostLayoutEvent>(new EventCallback <PostLayoutEvent>(this.OnSubElementPostLayout), Capture.NoCapture);
            element.RegisterCallback <DetachFromPanelEvent>(new EventCallback <DetachFromPanelEvent>(this.OnSubElementDetachedFromPanel), Capture.NoCapture);
            this.UpdateGeometryFromContent();
            GraphView firstAncestorOfType = base.GetFirstAncestorOfType <GraphView>();

            if (firstAncestorOfType != null && firstAncestorOfType.elementAddedToGroupNode != null)
            {
                firstAncestorOfType.elementAddedToGroupNode(this, element);
            }
        }
Exemple #2
0
 private void OnChildAdded(GraphElement element)
 {
     element.AddToClassList("stack-child-element");
     element.ResetPositionProperties();
     element.RegisterCallback <DetachFromPanelEvent>(OnChildDetachedFromPanel);
     UpdatePlaceholderVisibility();
 }
        private void AddElementInternal(GraphElement element)
        {
            if (element == null)
            {
                throw new ArgumentException("Cannot add null element");
            }

            if (containedElements.Contains(element))
            {
                throw new ArgumentException("The specified element is already contained in this scope.");
            }

            string reasonWhyNotAccepted = "Cannot add the specified element to this scope.";

            if (!AcceptsElement(element, ref reasonWhyNotAccepted))
            {
                throw new ArgumentException(reasonWhyNotAccepted);
            }

            // Removes the element from its current scope
            Scope currentScope = element.GetContainingScope();

            if (currentScope != null)
            {
                currentScope.RemoveElement(element);
            }

            m_ContainedElements.Add(element);

            // To update the scope geometry whenever the added element's geometry changes
            element.RegisterCallback <GeometryChangedEvent>(OnSubElementGeometryChanged);
            ScheduleUpdateGeometryFromContent();
        }
        public void AddElement(GraphElement element)
        {
            if (element == null)
            {
                throw new ArgumentException("Cannot add null element");
            }

            if (element is GroupNode)
            {
                throw new ArgumentException("Nested group node is not supported yet.");
            }

            if (m_ContainedElements == null)
            {
                m_ContainedElements = new List <GraphElement>();
            }
            else if (m_ContainedElements.Contains(element))
            {
                throw new ArgumentException("The element is already contained in this group node.");
            }

            // Removes the element from its current group
            GroupNode currentGroup = element.GetContainingGroupNode();

            if (currentGroup != null)
            {
                currentGroup.RemoveElement(element);
            }

            m_ContainedElements.Add(element);

            // To update the group geometry whenever the added element's geometry changes
            element.RegisterCallback <PostLayoutEvent>(OnSubElementPostLayout);
            element.RegisterCallback <DetachFromPanelEvent>(OnSubElementDetachedFromPanel);

            UpdateGeometryFromContent();

            GraphView gv = GetFirstAncestorOfType <GraphView>();

            if (gv != null && gv.elementAddedToGroupNode != null)
            {
                gv.elementAddedToGroupNode(this, element);
            }
        }
Exemple #5
0
        private void AddToSelectionNoUndoRecord(GraphElement graphElement)
        {
            graphElement.selected = true;
            selection.Add(graphElement);
            graphElement.OnSelected();

            // To ensure that the selected GraphElement gets unselected if it is removed from the GraphView.
            graphElement.RegisterCallback <DetachFromPanelEvent>(OnSelectedElementDetachedFromPanel);

            contentViewContainer.Dirty(ChangeType.Repaint);
        }
Exemple #6
0
        internal void ChangeLayer(GraphElement element)
        {
            if (!m_ContainerLayers.ContainsKey(element.layer))
            {
                AddLayer(element.layer);
            }

            bool selected = element.selected;

            if (selected)
            {
                element.UnregisterCallback <DetachFromPanelEvent>(OnSelectedElementDetachedFromPanel);
            }

            GetLayer(element.layer).Add(element);

            if (selected)
            {
                element.RegisterCallback <DetachFromPanelEvent>(OnSelectedElementDetachedFromPanel);
            }
        }