summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJason Lepp <jlepp@arcresources.com>2010-10-15 14:56:02 -0600
committerJason Lepp <jlepp@arcresources.com>2010-10-15 14:56:02 -0600
commit6a2b2f2a767b2f75487fb37330bf5c22cffe6fc9 (patch)
tree358e0f29ce7e66821b2a17dd6652b71c50865448 /src
parentf833eee20142c06c4c96a37879e356f45cef8ccb (diff)
Wire up events for changing text and buttons.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/MVPtoMVVM.mvp/MvpWindow.xaml.cs1
-rwxr-xr-xsrc/MVPtoMVVM.mvp/TodoItemView.xaml.cs5
-rwxr-xr-xsrc/MVPtoMVVM/MVPtoMVVM.csproj2
-rwxr-xr-xsrc/MVPtoMVVM/mappers/ITodoItemMapper.cs10
-rwxr-xr-xsrc/MVPtoMVVM/mappers/TodoItemMapper.cs14
-rwxr-xr-xsrc/MVPtoMVVM/mappers/TodoItemPresenterMapper.cs8
-rwxr-xr-xsrc/MVPtoMVVM/presenters/ITodoItemPresenter.cs7
-rwxr-xr-xsrc/MVPtoMVVM/presenters/TodoItemPresenter.cs62
-rwxr-xr-xsrc/MVPtoMVVM/repositories/ITodoItemRepository.cs3
-rwxr-xr-xsrc/MVPtoMVVM/repositories/TodoItemRepository.cs10
10 files changed, 110 insertions, 12 deletions
diff --git a/src/MVPtoMVVM.mvp/MvpWindow.xaml.cs b/src/MVPtoMVVM.mvp/MvpWindow.xaml.cs
index 364488f..9396c34 100755
--- a/src/MVPtoMVVM.mvp/MvpWindow.xaml.cs
+++ b/src/MVPtoMVVM.mvp/MvpWindow.xaml.cs
@@ -15,6 +15,7 @@ namespace MVPtoMVVM.mvp
InitializeComponent();
presenter = ObjectFactory.GetInstance<IMvpPresenter>();
presenter.SetView(this);
+
}
public void SetTodoItems(IEnumerable<ITodoItemPresenter> presenters)
diff --git a/src/MVPtoMVVM.mvp/TodoItemView.xaml.cs b/src/MVPtoMVVM.mvp/TodoItemView.xaml.cs
index 258f26c..53586ec 100755
--- a/src/MVPtoMVVM.mvp/TodoItemView.xaml.cs
+++ b/src/MVPtoMVVM.mvp/TodoItemView.xaml.cs
@@ -13,6 +13,10 @@ namespace MVPtoMVVM.mvp
{
InitializeComponent();
presenter.SetView(this);
+ saveButton.Click += (o, e) => presenter.SaveItem();
+ deleteButton.Click += (o, e) => presenter.DeleteItem();
+ description.TextChanged += (o, e) => presenter.Description = description.Text;
+ dueDate.SelectedDateChanged += (o, e) => presenter.DueDate = dueDate.SelectedDate.Value;
}
public string Description
@@ -32,5 +36,6 @@ namespace MVPtoMVVM.mvp
get { return saveButton.IsEnabled; }
set { saveButton.IsEnabled = value; }
}
+
}
}
diff --git a/src/MVPtoMVVM/MVPtoMVVM.csproj b/src/MVPtoMVVM/MVPtoMVVM.csproj
index 88cf63e..30ad51d 100755
--- a/src/MVPtoMVVM/MVPtoMVVM.csproj
+++ b/src/MVPtoMVVM/MVPtoMVVM.csproj
@@ -46,7 +46,9 @@
</ItemGroup>
<ItemGroup>
<Compile Include="domain\TodoItem.cs" />
+ <Compile Include="mappers\ITodoItemMapper.cs" />
<Compile Include="mappers\ITodoItemPresenterMapper.cs" />
+ <Compile Include="mappers\TodoItemMapper.cs" />
<Compile Include="mappers\TodoItemPresenterMapper.cs" />
<Compile Include="presenters\ITodoItemPresenter.cs" />
<Compile Include="presenters\TodoItemPresenter.cs" />
diff --git a/src/MVPtoMVVM/mappers/ITodoItemMapper.cs b/src/MVPtoMVVM/mappers/ITodoItemMapper.cs
new file mode 100755
index 0000000..dc6d15f
--- /dev/null
+++ b/src/MVPtoMVVM/mappers/ITodoItemMapper.cs
@@ -0,0 +1,10 @@
+using MVPtoMVVM.domain;
+using MVPtoMVVM.presenters;
+
+namespace MVPtoMVVM.mappers
+{
+ public interface ITodoItemMapper
+ {
+ TodoItem MapFrom(ITodoItemPresenter presenter);
+ }
+} \ No newline at end of file
diff --git a/src/MVPtoMVVM/mappers/TodoItemMapper.cs b/src/MVPtoMVVM/mappers/TodoItemMapper.cs
new file mode 100755
index 0000000..98b3cc1
--- /dev/null
+++ b/src/MVPtoMVVM/mappers/TodoItemMapper.cs
@@ -0,0 +1,14 @@
+using System;
+using MVPtoMVVM.domain;
+using MVPtoMVVM.presenters;
+
+namespace MVPtoMVVM.mappers
+{
+ public class TodoItemMapper : ITodoItemMapper
+ {
+ public TodoItem MapFrom(ITodoItemPresenter presenter)
+ {
+ return new TodoItem {Description = presenter.Description, DueDate = presenter.DueDate, Id = presenter.Id};
+ }
+ }
+} \ No newline at end of file
diff --git a/src/MVPtoMVVM/mappers/TodoItemPresenterMapper.cs b/src/MVPtoMVVM/mappers/TodoItemPresenterMapper.cs
index 5b650fc..3c4e984 100755
--- a/src/MVPtoMVVM/mappers/TodoItemPresenterMapper.cs
+++ b/src/MVPtoMVVM/mappers/TodoItemPresenterMapper.cs
@@ -1,9 +1,7 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Linq;
using MVPtoMVVM.domain;
using MVPtoMVVM.presenters;
-using MVPtoMVVM.views;
using StructureMap;
namespace MVPtoMVVM.mappers
@@ -13,7 +11,9 @@ namespace MVPtoMVVM.mappers
private ITodoItemPresenter MapFrom(TodoItem item)
{
var presenter = ObjectFactory.GetInstance<ITodoItemPresenter>();
- presenter.SetItem(item);
+ presenter.Id = item.Id;
+ presenter.Description = item.Description;
+ presenter.DueDate = item.DueDate;
return presenter;
}
diff --git a/src/MVPtoMVVM/presenters/ITodoItemPresenter.cs b/src/MVPtoMVVM/presenters/ITodoItemPresenter.cs
index f4f127b..5866786 100755
--- a/src/MVPtoMVVM/presenters/ITodoItemPresenter.cs
+++ b/src/MVPtoMVVM/presenters/ITodoItemPresenter.cs
@@ -1,3 +1,4 @@
+using System;
using MVPtoMVVM.domain;
using MVPtoMVVM.views;
@@ -6,6 +7,10 @@ namespace MVPtoMVVM.presenters
public interface ITodoItemPresenter
{
void SetView(ITodoItemView view);
- void SetItem(TodoItem item);
+ void SaveItem();
+ void DeleteItem();
+ int Id { get; set; }
+ string Description { get; set; }
+ DateTime DueDate { get; set; }
}
} \ No newline at end of file
diff --git a/src/MVPtoMVVM/presenters/TodoItemPresenter.cs b/src/MVPtoMVVM/presenters/TodoItemPresenter.cs
index b08c0d1..8cb1c7b 100755
--- a/src/MVPtoMVVM/presenters/TodoItemPresenter.cs
+++ b/src/MVPtoMVVM/presenters/TodoItemPresenter.cs
@@ -1,13 +1,23 @@
using System;
using MVPtoMVVM.domain;
+using MVPtoMVVM.mappers;
+using MVPtoMVVM.repositories;
using MVPtoMVVM.views;
namespace MVPtoMVVM.presenters
{
public class TodoItemPresenter : ITodoItemPresenter
{
+ private ITodoItemRepository itemRepository;
+ private ITodoItemMapper itemMapper;
private ITodoItemView view;
- private TodoItem item;
+ public int Id { get; set; }
+
+ public TodoItemPresenter(ITodoItemRepository itemRepository, ITodoItemMapper itemMapper)
+ {
+ this.itemRepository = itemRepository;
+ this.itemMapper = itemMapper;
+ }
public void SetView(ITodoItemView view)
{
@@ -17,15 +27,59 @@ namespace MVPtoMVVM.presenters
public void SetItem(TodoItem item)
{
- this.item = item;
+ Id = item.Id;
+ Description = item.Description;
+ DueDate = item.DueDate;
+ IsDirty = false;
}
private void InitializeView()
{
- view.Description = item.Description;
- view.DueDate = item.DueDate;
+ view.Description = Description;
+ view.DueDate = DueDate;
view.SaveButtonEnabled = false;
}
+ public void SaveItem()
+ {
+ var item = itemMapper.MapFrom(this);
+ itemRepository.Save(item);
+ Id = item.Id;
+ IsDirty = false;
+ }
+
+ public void DeleteItem()
+ {
+ var item = itemMapper.MapFrom(this);
+ itemRepository.Delete(item);
+ }
+
+ private string description;
+ public string Description
+ {
+ get { return description; }
+ set { description = value;
+ IsDirty = true;
+ }
+ }
+
+ private DateTime dueDate;
+ public DateTime DueDate
+ {
+ get { return dueDate; }
+ set { dueDate = value;
+ IsDirty = true;
+ }
+ }
+
+ private bool isDirty;
+ public bool IsDirty
+ {
+ get { return isDirty; }
+ private set { isDirty = value;
+ if (view != null)
+ view.SaveButtonEnabled = isDirty;
+ }
+ }
}
} \ No newline at end of file
diff --git a/src/MVPtoMVVM/repositories/ITodoItemRepository.cs b/src/MVPtoMVVM/repositories/ITodoItemRepository.cs
index 367799b..cfe9ab1 100755
--- a/src/MVPtoMVVM/repositories/ITodoItemRepository.cs
+++ b/src/MVPtoMVVM/repositories/ITodoItemRepository.cs
@@ -5,8 +5,9 @@ namespace MVPtoMVVM.repositories
{
public interface ITodoItemRepository
{
- void Add(TodoItem item);
+ void Save(TodoItem item);
TodoItem Get(int id);
IEnumerable<TodoItem> GetAll();
+ void Delete(TodoItem item);
}
} \ No newline at end of file
diff --git a/src/MVPtoMVVM/repositories/TodoItemRepository.cs b/src/MVPtoMVVM/repositories/TodoItemRepository.cs
index 3b44556..298794c 100755
--- a/src/MVPtoMVVM/repositories/TodoItemRepository.cs
+++ b/src/MVPtoMVVM/repositories/TodoItemRepository.cs
@@ -13,10 +13,10 @@ namespace MVPtoMVVM.repositories
public TodoItemRepository()
{
items = new List<TodoItem>();
- Add(new TodoItem {Description = "First One", DueDate = DateTime.Today});
+ Save(new TodoItem {Description = "First One", DueDate = DateTime.Today});
}
- public void Add(TodoItem item)
+ public void Save(TodoItem item)
{
if (item.Id == 0)
AddItem(item);
@@ -35,6 +35,12 @@ namespace MVPtoMVVM.repositories
{
return items.AsEnumerable();
}
+
+ public void Delete(TodoItem item)
+ {
+ items.Remove(item);
+ }
+
private void UpdateItem(TodoItem item)
{
items.Remove(items.Single(x => x.Id == item.Id));