public override void OnNodesRemoved(ITabularObject parent, params ITabularObject[] children) { if (UpdateLocks > 0) { structureChangedItems.AddIfNotExists(parent); return; } else { NodesRemoved?.Invoke(this, new TreeModelEventArgs(GetPath(parent), children)); } }
/// <summary> /// Fires 'nodes removed' event on the main thread context /// </summary> /// <param name="nodes">Collection of removed nodes</param> internal void FireOnNodesRemoved(IReadOnlyCollection <IAstNode> nodes) { Check.InvalidOperation(() => Thread.CurrentThread.ManagedThreadId == _ownerThread, _threadCheckMessage); try { // Don't bother if list is empty if (nodes.Count > 0) { NodesRemoved?.Invoke(this, new TreeNodesRemovedEventArgs(nodes)); } } catch (Exception ex) { Debug.Assert(false, Invariant($"Exception thrown in a tree.NodesRemoved event handler: {ex.Message}")); } }
/// <summary> /// Fires 'nodes removed' event on the main thread context /// </summary> /// <param name="nodes">Collection of removed nodes</param> internal void FireOnNodesRemoved(IReadOnlyCollection <IAstNode> nodes) { if (_ownerThread != Thread.CurrentThread.ManagedThreadId) { Debug.Fail(_threadContextInvalidMessage); return; } try { // Don't bother if list is empty if (nodes.Count > 0) { NodesRemoved?.Invoke(this, new TreeNodesRemovedEventArgs(nodes)); } } catch (Exception ex) { Debug.Assert(false, Invariant($"Exception thrown in a tree.NodesRemoved event handler: {ex.Message}")); } }
public override void OnNodesRemoved(ITabularObject parent, params ITabularObject[] children) { if (UpdateLocks > 0) { structureChangedItems.AddIfNotExists(parent); return; } else { if (!string.IsNullOrEmpty(Filter) && FilterMode == FilterMode.Flat) { StructureChanged?.Invoke(this, new TreePathEventArgs()); } else { NodesRemoved?.Invoke(this, new TreeModelEventArgs(GetPath(parent), children)); } } }
public void RemoveNodes(int numNodes) { RailSegmentPositions.RemoveAt(0); nodes.RemoveRange(0, numNodes); NodesRemoved?.Invoke(this, numNodes); }
public void OnNodeRemoved(Node parent, int index, Node node) { TreeModelEventArgs args = new TreeModelEventArgs(GetPath(parent), new[] { index }, new object[] { node }); NodesRemoved?.Invoke(this, args); }
public void NotifyNodesRemoved(TreePath path, INode[] nodes, int[] indices) { NodesRemoved?.Invoke(this, new TreeModelEventArgs(path, indices, nodes)); Changed?.Invoke(this, EventArgs.Empty); }