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