internal DeleteLayerMemberRecord(ViewModel.ViewModelController controller, ObjectModel.LayerPosition layerPosition, ObjectModel.ITransitionEndpoint member) : base(ActionTypes.RemoveLayerMember, controller, layerPosition) { LayerId = layerPosition.LayerId; MemberId = member.Id; #if DEBUGUNDOREDO Debug.WriteLine($@">>> DeleteLayerMemberRecord.DeleteLayerMemberRecord: Created {UnitDescription} record, ID: {Id}, LayerId:{LayerId}, NewMemberId: {MemberId}"); #endif }
internal AddLayerMemberRecord(ViewModel.ViewModelController controller, ObjectModel.LayerPosition layerPosition, ObjectModel.ILayeredPositionableObject newMember) : base(ActionTypes.AddLayerMember, controller, layerPosition) { LayerId = layerPosition.LayerId; NewMemberId = newMember.Id; LeftTopPosition = layerPosition.LeftTopPosition; GroupStatus = layerPosition.GroupStatus; #if DEBUGUNDOREDO Debug.WriteLine($@">>> AddLayerMemberRecord.AddLayerMemberRecord: Created {UnitDescription} record, ID: {Id}, LayerID: {LayerId}, NewMemberId: {NewMemberId}"); #endif }
public override void Do(IOleUndoManager pUndoManager) { #if DEBUGUNDOREDO Debug.WriteLine(">>> DeleteLayerMemberRecord.Do"); #endif using (new ViewModel.ViewModelController.GuiChangeBlock(Controller)) { ViewModel.Layer layer = Controller.StateMachine.Find(LayerId) as ViewModel.Layer; ObjectModel.ITransitionEndpoint member = Controller.StateMachine.Find(MemberId) as ObjectModel.ITransitionEndpoint; ObjectModel.LayerPosition layerPosition = Controller.StateMachine.Find(Id) as ObjectModel.LayerPosition; Controller.UndoManager.Add(new AddLayerMemberRecord(Controller, layerPosition, member)); member.LayerPositions.Remove(layerPosition); layer.Members.Remove(member); } }
private void AddTransitionsForEndpoint(ObjectModel.ITransitionEndpoint endpoint) { endpoint.TransitionsFrom.CollectionChanged += MemberTransitionsCollectionChangedHandler; foreach (ObjectModel.ITransition transition in endpoint.TransitionsFrom) { if (transition.SourceState != null && transition.DestinationState != null) { ObjectModel.LayerPosition layerPosition = transition.DestinationState.LayerPositions.Where(lp => lp.Layer == Layer).FirstOrDefault(); if (Members.Contains(transition.SourceState) && this != transition.DestinationState && (layerPosition == null || layerPosition.GroupStatus != LayerPosition.GroupStatuses.Explicit)) { Transition groupTransition = TransitionsFrom.FirstOrDefault(t => t.SourceState == this && t.DestinationState == transition.DestinationState && t.TriggerEvent == transition.TriggerEvent) as Transition; if (groupTransition == null) { groupTransition = new Transition(Controller, this, transition.DestinationState, transition.TriggerEvent); MembershipChanged?.Invoke(this, new MembershipChangeArgument(MembershipChangeAction.AddTransition, groupTransition)); } groupTransition.IsValid = true; } } } endpoint.TransitionsTo.CollectionChanged += MemberTransitionsCollectionChangedHandler; foreach (ObjectModel.ITransition transition in endpoint.TransitionsTo) { if (transition.SourceState != null && transition.DestinationState != null) { ObjectModel.LayerPosition layerPosition = transition.SourceState.LayerPositions.Where(lp => lp.Layer == Layer).FirstOrDefault(); if (Members.Contains(transition.DestinationState) && this != transition.SourceState && (layerPosition == null || layerPosition.GroupStatus != LayerPosition.GroupStatuses.Explicit)) { Transition groupTransition = TransitionsTo.FirstOrDefault(t => t.SourceState == transition.SourceState && t.DestinationState == this && t.TriggerEvent == transition.TriggerEvent) as Transition; if (groupTransition == null) { groupTransition = new Transition(Controller, transition.SourceState, this, transition.TriggerEvent); MembershipChanged?.Invoke(this, new MembershipChangeArgument(MembershipChangeAction.AddTransition, groupTransition)); } groupTransition.IsValid = true; } } } }