コード例 #1
0
            /// ------------------------------------------------------------------------------------
            public bool TryUpdate(SegmentChange newChange)
            {
                if (NewRange == newChange.OriginalRange && newChange.Type == SegmentChangeType.EndBoundaryMoved)
                {
                    NewRange = newChange.NewRange;
                    return(true);
                }
                if (newChange.Type == SegmentChangeType.Addition && Type == SegmentChangeType.AnnotationAdded &&
                    newChange.NewRange == OriginalRange)
                {
                    _type = SegmentChangeType.Addition;
                    Action <SegmentChange> originalUndoAction = UndoAction;
                    UndoAction = c => { originalUndoAction(c); newChange.UndoAction(c); };
                    return(true);
                }
                if (newChange.Type == SegmentChangeType.AnnotationDeleted && Type == SegmentChangeType.AnnotationDeleted &&
                    newChange.NewRange == OriginalRange)
                {
                    Action <SegmentChange> originalUndoAction = UndoAction;
                    UndoAction = c => { originalUndoAction(c); newChange.UndoAction(c); };
                    return(true);
                }
                if (newChange.Type == SegmentChangeType.Addition && Type == SegmentChangeType.AnnotationDeleted &&
                    newChange.NewRange.Start == OriginalRange.Start)
                {
                    Action <SegmentChange> originalUndoAction = UndoAction;
                    UndoAction = c => { originalUndoAction(c); newChange.UndoAction(c); };
                    return(true);
                }

                return(false);
            }
コード例 #2
0
 /// ------------------------------------------------------------------------------------
 public SegmentChange(SegmentChangeType type, TimeRange originalRange,
                      TimeRange newRange, Action <SegmentChange> undoAction)
 {
     _type          = type;
     _originalRange = originalRange;
     NewRange       = newRange;
     UndoAction     = undoAction;
 }