public void InsertItemForMoveOrResizeUndoRedo(IDescribableInterval item, double originalStartInVideo, double originalEndInVideo,
     double newStartInVideo, double newEndInVideo)
 {
     var cmd = new MoveOrResizeHistoryItem(item, originalStartInVideo, originalEndInVideo,
         newStartInVideo, newEndInVideo);
     Push(_undoStack, cmd); _redoStack.Clear();
 }
        public CanvasMouseSelection(IntervalMouseAction action, IDescribableInterval item,
            double mouseClickTimeDifference)
            : this(action)
        {
            Item = item;
            MouseClickTimeDifference = mouseClickTimeDifference;

            OriginalStartInVideo = item.StartInVideo;
            OriginalEndInVideo = item.EndInVideo;
        }
        public MoveOrResizeHistoryItem(IDescribableInterval itemInterval, double originalStartInVideo, double originalEndInVideo, 
            double newStartInVideo, double newEndInVideo)
        {
            _itemInterval = itemInterval;

            _originalStartInVideo = originalStartInVideo;
            _originalEndInVideo = originalEndInVideo;

            _newStartInVideo = newStartInVideo;
            _newEndInVideo = newEndInVideo;
        }
        public IntervalInfoListViewModel(ProjectManager projectManager, DescriptionRecordingViewModel descriptionRecordingViewModel)
        {
            _projectManager = projectManager;
            DescriptionRecordingViewModel = descriptionRecordingViewModel;
            InitCommands();

            SelectedRegularDescription = null;
            SelectedExtendedDescription = null;
            SelectedSpace = null;
            _selectedItem = null;
        }
        public DescriptionInfoTabViewModel(ProjectManager projectManager, DescriptionRecordingControlViewModel descriptionRecordingControlViewModel)
        {
            _projectManager = projectManager;
            DescriptionRecordingControlViewModel = descriptionRecordingControlViewModel;
            InitCommands();

            SelectedRegularDescription = null;
            SelectedExtendedDescription = null;
            SelectedSpace = null;
            _selectedItem = null;
        }
 /// <summary>
 /// Tests whether the interval would be visible on the current canvas or not. It will be
 /// visible IFF the interval either starts or ends in the visible area, or covers the
 /// entire visible area.
 /// </summary>
 /// <param name="interval">The interval to test.</param>
 /// <param name="visibleBeginMsec">The beginning of the window in milliseconds.</param>
 /// <param name="visibleEndMsec">The end of the window in milliseconds.</param>
 /// <returns>Whether the interval is visible or not.</returns>
 protected bool IsIntervalVisible(IDescribableInterval interval, double visibleBeginMsec, double visibleEndMsec)
 {
     return (visibleBeginMsec <= interval.StartInVideo && interval.StartInVideo <= visibleEndMsec)
         || (visibleBeginMsec <= interval.EndInVideo && interval.EndInVideo <= visibleEndMsec)
         || (interval.StartInVideo <= visibleBeginMsec && visibleEndMsec <= interval.EndInVideo);
 }
        private void SetSelected(IDescribableInterval value)
        {
            UnselectAll();

            if (value != null)
            {
                if (value is Description)
                {
                    var d = (Description)value;
                    Select(ref d);
                }
                else if (value is Space)
                {
                    var space = (Space)value;
                    Select(ref space);
                }
                else
                    throw new NotImplementedException("Value type not implemented");
            }

            UpdateProperties();
        }
 private void DrawDescribableInterval(IDescribableInterval interval)
 {
     interval.X = (_audioCanvas.Width / _videoDuration) * interval.StartInVideo;
     interval.Y = 0;
     interval.Height = _audioCanvas.ActualHeight;
     interval.Width = (_audioCanvas.Width / _videoDuration) * (interval.EndInVideo - interval.StartInVideo);
 }
 private void SetIntervalLocation(IDescribableInterval interval, Canvas containingCanvas)
 {
     interval.X = (containingCanvas.Width / _videoDurationMsec) * interval.StartInVideo;
     interval.Y = 0;
     interval.Height = containingCanvas.ActualHeight;
     /* Set interval to a minimum width so that all descriptions, even those with 0 duration
      * (ie extended descriptions) are still visible.
      */
     interval.Width = Math.Max(MinIntervalWidth,
         (containingCanvas.Width / _videoDurationMsec) * (interval.EndInVideo - interval.StartInVideo));
 }