summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Lepp <jlepp@arcresources.com>2010-10-15 15:21:13 -0600
committerJason Lepp <jlepp@arcresources.com>2010-10-15 15:21:13 -0600
commit50b064f27dd3e67aa77ae9e0c7da35b9b951e463 (patch)
tree98766cba474b97a1a22859a2c46b90748fa976b5
parent6a2b2f2a767b2f75487fb37330bf5c22cffe6fc9 (diff)
Hooked up the new button
-rwxr-xr-xsrc/MVPtoMVVM.mvp/MvpWindow.xaml10
-rwxr-xr-xsrc/MVPtoMVVM.mvp/MvpWindow.xaml.cs8
-rwxr-xr-xsrc/MVPtoMVVM.mvp/TodoItemView.xaml.cs2
-rwxr-xr-xsrc/MVPtoMVVM/mappers/ITodoItemPresenterMapper.cs1
-rwxr-xr-xsrc/MVPtoMVVM/mappers/TodoItemPresenterMapper.cs2
-rwxr-xr-xsrc/MVPtoMVVM/presenters/IMvpPresenter.cs2
-rwxr-xr-xsrc/MVPtoMVVM/presenters/MvpPresenter.cs20
-rwxr-xr-xsrc/MVPtoMVVM/repositories/TodoItemRepository.cs6
-rwxr-xr-xsrc/MVPtoMVVM/views/IMvpView.cs1
-rwxr-xr-xsrc/MVPtoMVVM/views/ITodoItemView.cs2
10 files changed, 46 insertions, 8 deletions
diff --git a/src/MVPtoMVVM.mvp/MvpWindow.xaml b/src/MVPtoMVVM.mvp/MvpWindow.xaml
index ffc17f7..792337f 100755
--- a/src/MVPtoMVVM.mvp/MvpWindow.xaml
+++ b/src/MVPtoMVVM.mvp/MvpWindow.xaml
@@ -2,7 +2,11 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
- <StackPanel>
- <ListView Name="todoItemsList"></ListView>
- </StackPanel>
+ <DockPanel LastChildFill="False">
+ <ListView Name="todoItemsList" DockPanel.Dock="Top" />
+ <DockPanel DockPanel.Dock="Bottom" LastChildFill="False">
+ <Button Content="Cancel Changes" Name="cancelButton" DockPanel.Dock="Right"/>
+ <Button Content="Add New Item" Name="newItemButton" DockPanel.Dock="Right"/>
+ </DockPanel>
+ </DockPanel>
</Window>
diff --git a/src/MVPtoMVVM.mvp/MvpWindow.xaml.cs b/src/MVPtoMVVM.mvp/MvpWindow.xaml.cs
index 9396c34..e1f77eb 100755
--- a/src/MVPtoMVVM.mvp/MvpWindow.xaml.cs
+++ b/src/MVPtoMVVM.mvp/MvpWindow.xaml.cs
@@ -15,7 +15,8 @@ namespace MVPtoMVVM.mvp
InitializeComponent();
presenter = ObjectFactory.GetInstance<IMvpPresenter>();
presenter.SetView(this);
-
+ newItemButton.Click += (o, e) => presenter.AddNewItem();
+ cancelButton.Click += (o, e) => presenter.CancelAllChanges();
}
public void SetTodoItems(IEnumerable<ITodoItemPresenter> presenters)
@@ -23,5 +24,10 @@ namespace MVPtoMVVM.mvp
todoItemsList.ItemsSource = presenters.Select(x => new TodoItemView(x));
}
+ public IEnumerable<ITodoItemPresenter> GetTodoItems()
+ {
+ return todoItemsList.ItemsSource.Cast<ITodoItemView>().Select(x => x.Presenter);
+ }
+
}
}
diff --git a/src/MVPtoMVVM.mvp/TodoItemView.xaml.cs b/src/MVPtoMVVM.mvp/TodoItemView.xaml.cs
index 53586ec..8be4149 100755
--- a/src/MVPtoMVVM.mvp/TodoItemView.xaml.cs
+++ b/src/MVPtoMVVM.mvp/TodoItemView.xaml.cs
@@ -11,6 +11,7 @@ namespace MVPtoMVVM.mvp
{
public TodoItemView(ITodoItemPresenter presenter)
{
+ Presenter = presenter;
InitializeComponent();
presenter.SetView(this);
saveButton.Click += (o, e) => presenter.SaveItem();
@@ -37,5 +38,6 @@ namespace MVPtoMVVM.mvp
set { saveButton.IsEnabled = value; }
}
+ public ITodoItemPresenter Presenter { get; private set; }
}
}
diff --git a/src/MVPtoMVVM/mappers/ITodoItemPresenterMapper.cs b/src/MVPtoMVVM/mappers/ITodoItemPresenterMapper.cs
index e1d7147..904444c 100755
--- a/src/MVPtoMVVM/mappers/ITodoItemPresenterMapper.cs
+++ b/src/MVPtoMVVM/mappers/ITodoItemPresenterMapper.cs
@@ -7,6 +7,7 @@ namespace MVPtoMVVM.mappers
{
public interface ITodoItemPresenterMapper
{
+ ITodoItemPresenter MapFrom(TodoItem item);
IEnumerable<ITodoItemPresenter> MapAll(IEnumerable<TodoItem> items);
}
} \ No newline at end of file
diff --git a/src/MVPtoMVVM/mappers/TodoItemPresenterMapper.cs b/src/MVPtoMVVM/mappers/TodoItemPresenterMapper.cs
index 3c4e984..69d56c5 100755
--- a/src/MVPtoMVVM/mappers/TodoItemPresenterMapper.cs
+++ b/src/MVPtoMVVM/mappers/TodoItemPresenterMapper.cs
@@ -8,7 +8,7 @@ namespace MVPtoMVVM.mappers
{
public class TodoItemPresenterMapper : ITodoItemPresenterMapper
{
- private ITodoItemPresenter MapFrom(TodoItem item)
+ public ITodoItemPresenter MapFrom(TodoItem item)
{
var presenter = ObjectFactory.GetInstance<ITodoItemPresenter>();
presenter.Id = item.Id;
diff --git a/src/MVPtoMVVM/presenters/IMvpPresenter.cs b/src/MVPtoMVVM/presenters/IMvpPresenter.cs
index ccc2003..71e919f 100755
--- a/src/MVPtoMVVM/presenters/IMvpPresenter.cs
+++ b/src/MVPtoMVVM/presenters/IMvpPresenter.cs
@@ -5,5 +5,7 @@ namespace MVPtoMVVM.presenters
public interface IMvpPresenter
{
void SetView(IMvpView view);
+ void AddNewItem();
+ void CancelAllChanges();
}
} \ No newline at end of file
diff --git a/src/MVPtoMVVM/presenters/MvpPresenter.cs b/src/MVPtoMVVM/presenters/MvpPresenter.cs
index 13a9bb5..f867614 100755
--- a/src/MVPtoMVVM/presenters/MvpPresenter.cs
+++ b/src/MVPtoMVVM/presenters/MvpPresenter.cs
@@ -1,5 +1,7 @@
using System;
+using System.Collections.Generic;
using System.Linq;
+using MVPtoMVVM.domain;
using MVPtoMVVM.mappers;
using MVPtoMVVM.repositories;
using MVPtoMVVM.views;
@@ -24,8 +26,26 @@ namespace MVPtoMVVM.presenters
InitializeView();
}
+ public void AddNewItem()
+ {
+ var items = new List<ITodoItemPresenter>(view.GetTodoItems());
+ var newItem = presenterMapper.MapFrom(new TodoItem { DueDate = DateTime.Today});
+ items.Add(newItem);
+ view.SetTodoItems(items);
+ }
+
+ public void CancelAllChanges()
+ {
+ RefreshItems();
+ }
+
private void InitializeView()
{
+ RefreshItems();
+ }
+
+ private void RefreshItems()
+ {
view.SetTodoItems(presenterMapper.MapAll(itemRepository.GetAll()));
}
}
diff --git a/src/MVPtoMVVM/repositories/TodoItemRepository.cs b/src/MVPtoMVVM/repositories/TodoItemRepository.cs
index 298794c..01fcf01 100755
--- a/src/MVPtoMVVM/repositories/TodoItemRepository.cs
+++ b/src/MVPtoMVVM/repositories/TodoItemRepository.cs
@@ -7,13 +7,13 @@ namespace MVPtoMVVM.repositories
{
public class TodoItemRepository : ITodoItemRepository
{
- private List<TodoItem> items;
+ private static readonly List<TodoItem> items = new List<TodoItem>();
private int totalItems = 0;
public TodoItemRepository()
{
- items = new List<TodoItem>();
- Save(new TodoItem {Description = "First One", DueDate = DateTime.Today});
+ if (!items.Any())
+ Save(new TodoItem {Description = "First One", DueDate = DateTime.Today});
}
public void Save(TodoItem item)
diff --git a/src/MVPtoMVVM/views/IMvpView.cs b/src/MVPtoMVVM/views/IMvpView.cs
index 321df66..e3f3d4e 100755
--- a/src/MVPtoMVVM/views/IMvpView.cs
+++ b/src/MVPtoMVVM/views/IMvpView.cs
@@ -6,5 +6,6 @@ namespace MVPtoMVVM.views
public interface IMvpView
{
void SetTodoItems(IEnumerable<ITodoItemPresenter> presenters);
+ IEnumerable<ITodoItemPresenter> GetTodoItems();
}
} \ No newline at end of file
diff --git a/src/MVPtoMVVM/views/ITodoItemView.cs b/src/MVPtoMVVM/views/ITodoItemView.cs
index 79d2174..eae05fe 100755
--- a/src/MVPtoMVVM/views/ITodoItemView.cs
+++ b/src/MVPtoMVVM/views/ITodoItemView.cs
@@ -1,4 +1,5 @@
using System;
+using MVPtoMVVM.presenters;
namespace MVPtoMVVM.views
{
@@ -7,5 +8,6 @@ namespace MVPtoMVVM.views
string Description { get; set; }
DateTime DueDate { get; set; }
bool SaveButtonEnabled { get; set; }
+ ITodoItemPresenter Presenter { get; }
}
} \ No newline at end of file