Commit e8f772f
Changed files (6)
lib
presentation
service
lib/boot/container_configuration.rb
@@ -20,6 +20,7 @@ class ContainerConfiguration
container.register(:application_controller) { |x| x.build(ApplicationController) }.as_singleton
container.register(:presenter_factory) { |x| x.build(PresenterFactory) }.as_singleton
container.register(:stock_service) { |x| StockService.new }.as_singleton
+ container.register(:stock_query) { |x| x.build(StockQuery) }
Spank::IOC.bind_to(container)
end
end
lib/boot/events_registration.rb
@@ -2,10 +2,8 @@ class EventsRegistration
extend Nasty::Command
def self.run(container)
- register_items_with(container.resolve(:event_aggregator))
- end
-
- def self.register_items_with(event_aggregator)
+ event_aggregator = container.resolve(:event_aggregator)
event_aggregator.subscribe(:halt, ShutdownCommand.new)
+ event_aggregator.subscribe(:clicked, container.resolve(:stock_query))
end
end
lib/presentation/presenters/shell_presenter.rb
@@ -3,20 +3,10 @@ require 'presenter'
class ShellPresenter < Presenter
def initialize(shell_view, stock_service)
@view = shell_view
- @stock_service = stock_service
end
def present
@view.set_title("Hello World")
@view.show_all
end
-
- def clicked
- stock = @stock_service.fetch(@view.textbox.text)
- @view.display(stock.to_s)
- end
-
- def shutdown
- Publish.event(:halt)
- end
end
lib/presentation/windows/shell_view.rb
@@ -21,9 +21,6 @@ class ShellView
end
def bind_to(presenter)
- @builder.connect_signals do |signal|
- proc { presenter.public_send(signal) }
- end
end
def display(text)
lib/presentation/event_aggregator.rb
@@ -18,6 +18,6 @@ class EventAggregator
private
def subscribers_for(event)
- @subscribers[event]
+ @subscribers[event.to_sym]
end
end
lib/service/stock_query.rb
@@ -0,0 +1,12 @@
+class StockQuery
+ def initialize(symbol_textbox, shell_view, stock_service)
+ @symbol_textbox = symbol_textbox
+ @stock_service = stock_service
+ @shell_view = shell_view
+ end
+
+ def clicked(payload)
+ stock = @stock_service.fetch(@symbol_textbox.text)
+ @shell_view.display(stock.to_s)
+ end
+end