using System.Collections.Generic;
using TaskIt.Infrastructure;
using Telerik.Windows.Controls.DragDrop;

namespace TaskIt.Modules.Tasks.ViewModels
{
    public class DragDropViewModel : ViewModelBase
    {
        private IList<object> _draggedItems;
        private DragStatus _dragStatus;
        private string _message;

        /// <summary>
        /// Gets or sets the items that are being dragged.
        /// </summary>
        public IList<object> DraggedItems
        {
            get { return _draggedItems; }
            set
            {
                if (_draggedItems == value)
                {
                    return;
                }
                _draggedItems = value;
                this.OnPropertyChanged(p => p.DraggedItems);
            }
        }

        /// <summary>
        /// Gets or sets the message that will be displayed.
        /// </summary>
        public string Message
        {
            get { return _message; }
            set
            {
                if (_message == value)
                {
                    return;
                }
                _message = value;
                this.OnPropertyChanged(p => p.Message);
            }
        }

        /// <summary>
        /// Gets or sets the status of the current drag/drop. We may use it to change 
        /// the looks of the drag cue.
        /// </summary>
        /// <remarks>
        ///     Currently this property is not in use.
        /// </remarks>
        public DragStatus DragStatus
        {
            get { return _dragStatus; }
            set
            {
                if (_dragStatus == value)
                {
                    return;
                }
                _dragStatus = value;
                this.OnPropertyChanged(p => p.DragStatus);
            }
        }
    }
}
