main
1using gorilla.commons.utility;
2using MoMoney.Presentation.Views;
3
4namespace MoMoney.Presentation.Core
5{
6 public interface IApplicationController
7 {
8 void run<Presenter>() where Presenter : IPresenter;
9 }
10
11 public class ApplicationController : IApplicationController, ParameterizedCommand<IPresenter>
12 {
13 readonly IPresenterRegistry registered_presenters;
14 readonly IShell shell;
15
16 public ApplicationController(IPresenterRegistry registered_presenters, IShell shell)
17 {
18 this.registered_presenters = registered_presenters;
19 this.shell = shell;
20 }
21
22 public void run<Presenter>() where Presenter : IPresenter
23 {
24 run(registered_presenters.find_an_implementation_of<IPresenter, Presenter>());
25 }
26
27 public void run(IPresenter presenter)
28 {
29 presenter.run();
30 if (presenter.is_an_implementation_of<IContentPresenter>())
31 {
32 var content_presenter = presenter.downcast_to<IContentPresenter>();
33 var view = content_presenter.View;
34
35 //view.on_activated = x => content_presenter.activate();
36 //view.deactivated = x => content_presenter.deactivate();
37 //view.on_closing = x => x.Cancel = !content_presenter.can_close();
38 //view.closed = x => remove(presenter);
39
40 shell.add(view);
41 }
42 }
43 }
44}