master
  1using System;
  2using System.Windows;
  3using System.Windows.Media;
  4using MVPtoMVVM.mvp.presenters;
  5using MVPtoMVVM.mvp.views;
  6
  7namespace MVPtoMVVM.mvp
  8{
  9    public partial class TodoItemView : ITodoItemView
 10    {
 11        private readonly IMvpPresenter parent;
 12        private Brush defaultBorderBrush;
 13        private Thickness defaultBorderThickness;
 14
 15        public TodoItemView(ITodoItemPresenter presenter, IMvpPresenter parent)
 16        {
 17            this.parent = parent;
 18            Presenter = presenter;
 19            InitializeComponent();
 20            saveButton.Click += (o, e) => presenter.SaveItem();
 21            deleteButton.Click += (o, e) => presenter.DeleteItem();
 22            description.TextChanged += (o, e) => presenter.Description = description.Text;
 23            dueDate.SelectedDateChanged += (o, e) => presenter.DueDate = dueDate.SelectedDate.Value;
 24            defaultBorderBrush = description.BorderBrush;
 25            defaultBorderThickness = description.BorderThickness;
 26            presenter.SetView(this);
 27        }
 28
 29        public int Id{ get; set; }
 30
 31        public string Description
 32        {
 33            get { return description.Text; }
 34            set { description.Text = value; }
 35        }
 36
 37        public DateTime DueDate
 38        {
 39            get { return dueDate.SelectedDate.Value; }
 40            set { dueDate.SelectedDate = value; }
 41        }
 42
 43        public bool SaveButtonEnabled
 44        {
 45            get { return saveButton.IsEnabled; }
 46            set { saveButton.IsEnabled = value; }
 47        }
 48
 49        public ITodoItemPresenter Presenter { get; private set; }
 50
 51        public bool DescriptionHasValidationErrors
 52        {
 53            set
 54            {
 55                if (value)
 56                {
 57                    description.BorderBrush = Brushes.Red;
 58                    description.BorderThickness = new Thickness(2);
 59                }
 60                else
 61                {
 62                    description.BorderBrush = defaultBorderBrush;
 63                    description.BorderThickness = defaultBorderThickness;
 64                }
 65            }
 66        }
 67
 68        public bool DueDateHasValidationErrors
 69        {
 70            set
 71            {
 72                if (value)
 73                {
 74                    dueDate.BorderBrush = Brushes.Red;
 75                    dueDate.BorderThickness = new Thickness(2);
 76                }
 77                else
 78                {
 79                    dueDate.BorderBrush = defaultBorderBrush;
 80                    dueDate.BorderThickness = defaultBorderThickness;
 81                }
 82            }
 83        }
 84
 85        public bool IsDueSoon
 86        {
 87            set { dueSoonAlert.Visibility = value ? Visibility.Visible : Visibility.Hidden; }
 88        }
 89
 90        public string DescriptionValidationMessage
 91        {
 92            set { description.ToolTip = value; }
 93        }
 94
 95        public string DueDateValidationMessage
 96        {
 97            set { dueDate.ToolTip = value; }
 98        }
 99
100        public void Remove(int itemId)
101        {
102            parent.Remove(itemId);
103        }
104    }
105}