Commit 064bad1

mo khan <mo@mokhan.ca>
2013-12-11 04:41:15
register components into container.
1 parent e977c59
Changed files (2)
lib/presentation/presenters/application_shell_presenter.rb
@@ -1,6 +1,6 @@
 class ApplicationShellPresenter
-  def initialize(view, event_aggregator)
-    @view = view
+  def initialize(shell, event_aggregator)
+    @view = shell
     @event_aggregator = event_aggregator
   end
 
lib/application.rb
@@ -10,10 +10,24 @@ end
 class Application
   def run(arguments)
     Gtk.init
-    event_aggregator = EventAggregator.new
-    event_aggregator.subscribe(:halt, ShutdownCommand.new)
-    presenter = ApplicationShellPresenter.new(ApplicationShell.new, event_aggregator)
-    presenter.present
+    container = bootstrap_container
+    bootstrap_events_with(container.resolve(:event_aggregator))
+    Spank::IOC.resolve(:shell_presenter).present
     Gtk.main
   end
+
+  private
+
+  def bootstrap_container
+    container = Spank::Container.new
+    container.register(:event_aggregator) { EventAggregator.new }.as_singleton
+    container.register(:shell) { ApplicationShell.new }.as_singleton
+    container.register(:shell_presenter) { |x| x.build(ApplicationShellPresenter) }
+    Spank::IOC.bind_to(container)
+    container
+  end
+
+  def bootstrap_events_with(event_aggregator)
+    event_aggregator.subscribe(:halt, ShutdownCommand.new)
+  end
 end