-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathViewFactory.cs
127 lines (111 loc) · 3.18 KB
/
ViewFactory.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
namespace DonPavlik.Desktop.Contacts
{
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Caliburn.Micro;
using DonPavlik.Desktop.Contacts.Interfaces;
/// <summary>
/// View factory class definition
/// </summary>
[Export(typeof(IViewFactory))]
public class ViewFactory : IViewFactory
{
private readonly Dictionary<string, object> _cachedViews =
new Dictionary<string, object>();
public IAddOrganizationViewModel GetAddOrganizationView()
{
this.InitializeAddOrganizationView(ViewNames.ADD_ORGANIZATION);
return this._cachedViews[ViewNames.ADD_ORGANIZATION] as IAddOrganizationViewModel;
}
public IAddOrganizationViewModel GetEditOrganizationView()
{
this.InitializeAddOrganizationView(ViewNames.EDIT_ORGANIZATION);
return this._cachedViews[ViewNames.EDIT_ORGANIZATION] as IAddOrganizationViewModel;
}
public IGroupViewModel GetGroupView()
{
this.InitializeGroupView();
return this._cachedViews[ViewNames.GROUPS] as IGroupViewModel;
}
public IAddPersonViewModel GetAddPersonView()
{
this.InitializeAddPersonView(ViewNames.ADD_PERSON);
return this._cachedViews[ViewNames.ADD_PERSON] as IAddPersonViewModel;
}
public IAddPersonViewModel GetEditPersonView()
{
this.InitializeAddPersonView(ViewNames.EDIT_PERSON);
return this._cachedViews[ViewNames.EDIT_PERSON] as IAddPersonViewModel;
}
public IPeopleViewModel GetPeopleView()
{
this.InitializePeopleView();
return this._cachedViews[ViewNames.PEOPLE] as IPeopleViewModel;
}
public IOrganizationsViewModel GetOrganizationView()
{
this.InitializeOrganizationView();
return this._cachedViews[ViewNames.ORGANIZATION] as IOrganizationsViewModel;
}
public void ClearView(string viewName)
{
if (this._cachedViews.ContainsKey(viewName))
{
this._cachedViews.Remove(viewName);
}
}
private void InitializeOrganizationView()
{
if (!this._cachedViews.ContainsKey(ViewNames.ORGANIZATION))
{
this._cachedViews.Add(
ViewNames.ORGANIZATION,
IoC.Get<IOrganizationsViewModel>());
}
}
private void InitializePeopleView()
{
if (!this._cachedViews.ContainsKey(ViewNames.PEOPLE))
{
this._cachedViews.Add(
ViewNames.PEOPLE,
IoC.Get<IPeopleViewModel>());
}
}
private void InitializeGroupView()
{
if (!this._cachedViews.ContainsKey(ViewNames.GROUPS))
{
this._cachedViews.Add(
ViewNames.GROUPS,
IoC.Get<IGroupViewModel>());
}
}
private void InitializeAddOrganizationView(string viewName)
{
if (!this._cachedViews.ContainsKey(viewName))
{
IAddOrganizationViewModel addOrganization =
IoC.Get<IAddOrganizationViewModel>();
this._cachedViews.Add(
viewName,
addOrganization);
}
}
private void InitializeAddPersonView(string viewName)
{
if (!this._cachedViews.ContainsKey(viewName))
{
IAddPersonViewModel addPerson = IoC.Get<IAddPersonViewModel>();
this._cachedViews.Add(
viewName,
addPerson);
}
}
}
}