/// <summary> /// Raises the <see cref="CollectionItemRemoved"/> event. /// </summary> /// <param name="key">The key of the item that was removed from the list.</param> /// <param name="value">The item that was added to the list.</param> protected virtual void OnCollectionItemRemoved(TKey key, TValue value) { CollectionItemRemoved?.Invoke(this, key, value); if (suppressUntypedNotifications) { return; } untypedCollectionItemRemoved?.Invoke(this, null, value); }
/// <summary> /// Raises the <see cref="CollectionItemRemoved"/> event. /// </summary> /// <param name="index">The index at which the item was removed from the list.</param> /// <param name="value">The item that was added to the list.</param> protected virtual void OnCollectionItemRemoved(Int32 index, TValue value) { CollectionItemRemoved?.Invoke(this, index, value); if (suppressUntypedNotifications) { return; } untypedCollectionItemRemoved?.Invoke(this, index, value); }
private void collectionChanged(object sender_, NotifyCollectionChangedEventArgs e) { if (!(sender_ is INotifyCollectionChanged)) { throw new ArgumentException(); } INotifyCollectionChanged sender = (INotifyCollectionChanged)sender_; int senderId = 0; Change change; switch (e.Action) { case NotifyCollectionChangedAction.Add: if (e.NewItems.Count != 0) { throw new NotImplementedException(); } Contract.Requires(e.NewStartingIndex >= 0, "The index of the added item(s) must be specified"); change = CollectionItemAdded.Create(senderId, e.NewItems[0], e.NewStartingIndex == -1 ? default(int?) : e.NewStartingIndex); if (IncludeDeep(sender, item: e.NewItems[0])) { registerViewmodelAndAddCompleteStateAsChanges(e.NewItems[0]); } break; case NotifyCollectionChangedAction.Move: throw new NotImplementedException(); case NotifyCollectionChangedAction.Remove: Contract.Requires(e.OldStartingIndex >= 0, "The index of the removed item must be specified"); change = CollectionItemRemoved.Create(senderId, e.OldStartingIndex); break; case NotifyCollectionChangedAction.Replace: throw new NotImplementedException(); case NotifyCollectionChangedAction.Reset: throw new NotImplementedException(); default: throw new ArgumentException("Invalid action", nameof(e)); } this.AddChange(change); }
public override void Initialize(Invert.IOC.UFrameContainer container) { container.AddItem <RequireReference>(); container.AddTypeItem <OutputsChildItem>(); container.AddTypeItem <InputsChildItem>(); container.AddTypeItem <VariablesChildItem>(); container.AddTypeItem <PropertiesChildItem>(); container.AddTypeItem <CollectionsChildItem>(); container.AddItem <BranchesChildItem>(); CustomAction = container.AddNode <CustomActionNode, CustomActionNodeViewModel, CustomActionNodeDrawer>("CustomAction"); CustomAction.Color(NodeColor.Gray); Data = container.AddGraph <DataGraph, DataNode>("DataGraph"); Data.Color(NodeColor.Yellow); Data.HasSubNode <GroupNode>(); Data.HasSubNode <EventNode>(); Data.HasSubNode <ComponentNode>(); Library = container.AddGraph <LibraryGraph, LibraryNode>("LibraryGraph"); Library.Color(NodeColor.Yellow); Library.HasSubNode <GroupNode>(); Library.HasSubNode <EventNode>(); Library.HasSubNode <CustomActionNode>(); Library.HasSubNode <ComponentNode>(); Null = container.AddNode <NullNode, NullNodeViewModel, NullNodeDrawer>("Null"); Null.Color(NodeColor.Purple); StringLiteral = container.AddNode <StringLiteralNode, StringLiteralNodeViewModel, StringLiteralNodeDrawer>("StringLiteral"); StringLiteral.Color(NodeColor.Gray); Property = container.AddNode <PropertyNode, PropertyNodeViewModel, PropertyNodeDrawer>("Property"); Property.Color(NodeColor.Blue); String = container.AddNode <StringNode, StringNodeViewModel, StringNodeDrawer>("String"); String.Color(NodeColor.Purple); ActionGroup = container.AddNode <ActionGroupNode, ActionGroupNodeViewModel, ActionGroupNodeDrawer>("ActionGroup"); ActionGroup.Color(NodeColor.Red); Function = container.AddNode <FunctionNode, FunctionNodeViewModel, FunctionNodeDrawer>("Function"); Function.Color(NodeColor.Lightgoldenrod4); Bool = container.AddNode <BoolNode, BoolNodeViewModel, BoolNodeDrawer>("Bool"); Bool.Color(NodeColor.Purple); Module = container.AddGraph <ModuleGraph, ModuleNode>("ModuleGraph"); Module.Color(NodeColor.Black); Module.HasSubNode <EventNode>(); Module.HasSubNode <ComponentNode>(); Module.HasSubNode <CustomActionNode>(); Module.HasSubNode <SystemNode>(); Module.HasSubNode <GroupNode>(); StopTimer = container.AddNode <StopTimerNode, StopTimerNodeViewModel, StopTimerNodeDrawer>("StopTimer"); StopTimer.Color(NodeColor.Gray); AllFalse = container.AddNode <AllFalseNode, AllFalseNodeViewModel, AllFalseNodeDrawer>("AllFalse"); AllFalse.Color(NodeColor.Orange); CodeAction = container.AddNode <CodeActionNode, CodeActionNodeViewModel, CodeActionNodeDrawer>("CodeAction"); CodeAction.Color(NodeColor.Green); BoolExpression = container.AddNode <BoolExpressionNode, BoolExpressionNodeViewModel, BoolExpressionNodeDrawer>("BoolExpression"); BoolExpression.Color(NodeColor.Gray); Float = container.AddNode <FloatNode, FloatNodeViewModel, FloatNodeDrawer>("Float"); Float.Color(NodeColor.Purple); UserMethod = container.AddNode <UserMethodNode, UserMethodNodeViewModel, UserMethodNodeDrawer>("UserMethod"); UserMethod.Color(NodeColor.Blue); LoopCollection = container.AddNode <LoopCollectionNode, LoopCollectionNodeViewModel, LoopCollectionNodeDrawer>("LoopCollection"); LoopCollection.Color(NodeColor.LightGray); AnyFalse = container.AddNode <AnyFalseNode, AnyFalseNodeViewModel, AnyFalseNodeDrawer>("AnyFalse"); AnyFalse.Color(NodeColor.Orange); ComponentCreated = container.AddNode <ComponentCreatedNode, ComponentCreatedNodeViewModel, ComponentCreatedNodeDrawer>("ComponentCreated"); ComponentCreated.Color(NodeColor.Indianred4); SetVariable = container.AddNode <SetVariableNode, SetVariableNodeViewModel, SetVariableNodeDrawer>("SetVariable"); SetVariable.Color(NodeColor.Gray); CollectionItemRemoved = container.AddNode <CollectionItemRemovedNode, CollectionItemRemovedNodeViewModel, CollectionItemRemovedNodeDrawer>("CollectionItemRemoved"); CollectionItemRemoved.Color(NodeColor.Indianred4); CollectionModifiedHandler = container.AddNode <CollectionModifiedHandlerNode, CollectionModifiedHandlerNodeViewModel, CollectionModifiedHandlerNodeDrawer>("CollectionModifiedHandler"); CollectionModifiedHandler.Color(NodeColor.Red); Object = container.AddNode <ObjectNode, ObjectNodeViewModel, ObjectNodeDrawer>("Object"); Object.Color(NodeColor.Purple); PropertyChanged = container.AddNode <PropertyChangedNode, PropertyChangedNodeViewModel, PropertyChangedNodeDrawer>("PropertyChanged"); PropertyChanged.Color(NodeColor.Indianred4); Variable = container.AddNode <VariableNode, VariableNodeViewModel, VariableNodeDrawer>("Variable"); Variable.Color(NodeColor.Gray); Group = container.AddNode <GroupNode, GroupNodeViewModel, GroupNodeDrawer>("Group"); Group.Color(NodeColor.SgiLightBlue); Group.HasSubNode <Vector3Node>(); Group.HasSubNode <Vector2Node>(); Group.HasSubNode <ConditionNode>(); Group.HasSubNode <AnyFalseNode>(); Group.HasSubNode <AnyTrueNode>(); Group.HasSubNode <BoolExpressionNode>(); Group.HasSubNode <PropertyNode>(); Group.HasSubNode <AllTrueNode>(); Group.HasSubNode <AllFalseNode>(); Group.HasSubNode <FloatNode>(); Group.HasSubNode <StringNode>(); Group.HasSubNode <IntNode>(); Group.HasSubNode <BoolNode>(); Descriptor = container.AddNode <DescriptorNode, DescriptorNodeViewModel, DescriptorNodeDrawer>("Descriptor"); Descriptor.Color(NodeColor.Indianred2); Vector3 = container.AddNode <Vector3Node, Vector3NodeViewModel, Vector3NodeDrawer>("Vector3"); Vector3.Color(NodeColor.Purple); Event = container.AddNode <EventNode, EventNodeViewModel, EventNodeDrawer>("Event"); Event.Inheritable(); Event.Color(NodeColor.Gold3); Literal = container.AddNode <LiteralNode, LiteralNodeViewModel, LiteralNodeDrawer>("Literal"); Literal.Color(NodeColor.Purple); Component = container.AddNode <ComponentNode, ComponentNodeViewModel, ComponentNodeDrawer>("Component"); Component.Inheritable(); Component.Color(NodeColor.Darkolivegreen4); Int = container.AddNode <IntNode, IntNodeViewModel, IntNodeDrawer>("Int"); Int.Color(NodeColor.Purple); CollectionItemAdded = container.AddNode <CollectionItemAddedNode, CollectionItemAddedNodeViewModel, CollectionItemAddedNodeDrawer>("CollectionItemAdded"); CollectionItemAdded.Color(NodeColor.Indianred4); ComponentDestroyed = container.AddNode <ComponentDestroyedNode, ComponentDestroyedNodeViewModel, ComponentDestroyedNodeDrawer>("ComponentDestroyed"); ComponentDestroyed.Color(NodeColor.Indianred4); Vector2 = container.AddNode <Vector2Node, Vector2NodeViewModel, Vector2NodeDrawer>("Vector2"); Vector2.Color(NodeColor.Purple); SequenceContainer = container.AddNode <SequenceContainerNode, SequenceContainerNodeViewModel, SequenceContainerNodeDrawer>("SequenceContainer"); SequenceContainer.Color(NodeColor.Red); AllTrue = container.AddNode <AllTrueNode, AllTrueNodeViewModel, AllTrueNodeDrawer>("AllTrue"); AllTrue.Color(NodeColor.Orange); StartTimer = container.AddNode <StartTimerNode, StartTimerNodeViewModel, StartTimerNodeDrawer>("StartTimer"); StartTimer.Color(NodeColor.Gray); Condition = container.AddNode <ConditionNode, ConditionNodeViewModel, ConditionNodeDrawer>("Condition"); Condition.Color(NodeColor.Orange); Action = container.AddNode <ActionNode, ActionNodeViewModel, ActionNodeDrawer>("Action"); Action.Color(NodeColor.Green); Handler = container.AddGraph <HandlerGraph, HandlerNode>("HandlerGraph"); Handler.Color(NodeColor.Indianred4); Handler.HasSubNode <SetVariableNode>(); Handler.HasSubNode <ActionGroupNode>(); Handler.HasSubNode <ActionNode>(); Handler.HasSubNode <ComponentNode>(); Handler.HasSubNode <ObjectNode>(); Handler.HasSubNode <LoopCollectionNode>(); Handler.HasSubNode <IntNode>(); Handler.HasSubNode <PropertyNode>(); Handler.HasSubNode <EnumValueNode>(); Handler.HasSubNode <Vector2Node>(); Handler.HasSubNode <FloatNode>(); Handler.HasSubNode <NullNode>(); Handler.HasSubNode <BoolNode>(); Handler.HasSubNode <SequenceItemNode>(); Handler.HasSubNode <Vector3Node>(); Handler.HasSubNode <StringNode>(); System = container.AddGraph <SystemGraph, SystemNode>("SystemGraph"); System.Color(NodeColor.Blue); System.HasSubNode <CollectionItemAddedNode>(); System.HasSubNode <ComponentNode>(); System.HasSubNode <PropertyChangedNode>(); System.HasSubNode <ComponentCreatedNode>(); System.HasSubNode <CustomActionNode>(); System.HasSubNode <HandlerNode>(); System.HasSubNode <DescriptorNode>(); System.HasSubNode <EventNode>(); System.HasSubNode <GroupNode>(); System.HasSubNode <ComponentDestroyedNode>(); System.HasSubNode <CollectionItemRemovedNode>(); Entity = container.AddNode <EntityNode, EntityNodeViewModel, EntityNodeDrawer>("Entity"); Entity.Color(NodeColor.Gray); Color = container.AddNode <ColorNode, ColorNodeViewModel, ColorNodeDrawer>("Color"); Color.Color(NodeColor.Purple); EnumValue = container.AddNode <EnumValueNode, EnumValueNodeViewModel, EnumValueNodeDrawer>("EnumValue"); EnumValue.Color(NodeColor.Purple); AnyTrue = container.AddNode <AnyTrueNode, AnyTrueNodeViewModel, AnyTrueNodeDrawer>("AnyTrue"); AnyTrue.Color(NodeColor.Orange); SequenceItem = container.AddNode <SequenceItemNode, SequenceItemNodeViewModel, SequenceItemNodeDrawer>("SequenceItem"); SequenceItem.Color(NodeColor.Green); container.Connectable <BoolExpressionNode, Expressions>(); container.Connectable <BoolExpressionNode, GroupNode>(); container.Connectable <ComponentNode, RequireReference>(); container.Connectable <ActionNode, ActionNode>(); container.Connectable <HandlerNode, SequenceItemNode>(); container.Connectable <SequenceItemNode, SequenceItemNode>(); }
/// <summary> /// Raises the <see cref="CollectionItemRemoved"/> event. /// </summary> /// <param name="index">The index at which the item was removed from the collection.</param> /// <param name="item">The item that was removed.</param> private void OnCollectionItemRemoved(Int32 index, Object item) => CollectionItemRemoved?.Invoke(this, index, item);
/// <summary> /// Allows a derived object to notify a parent or sibling that an item has been removed to the collection /// </summary> /// <param name="collectionName"></param> protected void RaiseCollectionItemRemovedEvent(string collectionName) { CollectionItemRemoved?.Invoke(this, new CollectionChangeEventArgs(CollectionChangeAction.Remove, collectionName)); }