コード例 #1
0
 private void UnmonitorEndpoint(ObjectModel.ITransitionEndpoint endpoint)
 {
     endpoint.PropertyChanged -= MemberPropertyChangedHandler;
     endpoint.TransitionsFrom.CollectionChanged -= MemberTransitionsCollectionChangedHandler;
     endpoint.TransitionsTo.CollectionChanged   -= MemberTransitionsCollectionChangedHandler;
     foreach (ObjectModel.ITransition transition in endpoint.TransitionsFrom)
     {
         transition.PropertyChanged -= TransitionPropertyChangedHandler;
     }
 }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
 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;
             }
         }
     }
 }
コード例 #4
0
 internal MembershipChangeArgument(MembershipChangeAction action, ObjectModel.ITransition transition)
 {
     Action     = action;
     Endpoint   = null;
     Transition = transition;
 }
コード例 #5
0
 internal MembershipChangeArgument(MembershipChangeAction action, ObjectModel.ITransitionEndpoint endpoint)
 {
     Action     = action;
     Endpoint   = endpoint;
     Transition = null;
 }
コード例 #6
0
        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
        }