Skip to content

Commit

Permalink
Simplify event handlers declaration and initialization
Browse files Browse the repository at this point in the history
  • Loading branch information
moncho committed May 5, 2017
1 parent e2a18a2 commit 1082728
Showing 1 changed file with 16 additions and 36 deletions.
52 changes: 16 additions & 36 deletions app/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,18 @@ import (
"github.com/nsf/termbox-go"
)

var viewsToHandlers = map[viewMode]eventHandler{
Images: &imagesScreenEventHandler{},
Networks: &networksScreenEventHandler{},
DiskUsage: &diskUsageScreenEventHandler{},
Main: &containersScreenEventHandler{},
Monitor: &monitorScreenEventHandler{},
Nodes: &nodesScreenEventHandler{},
Tasks: &taskScreenEventHandler{},
Services: &servicesScreenEventHandler{},
ServiceTasks: &serviceTaskScreenEventHandler{},
}

var defaultHandler eventHandler

//eventHandler interface to handle termbox events
Expand Down Expand Up @@ -131,42 +143,10 @@ func (eh *eventHandlerFactory) handlerFor(view viewMode) eventHandler {
eh.once.Do(func() {
defaultHandler = &baseEventHandler{}
defaultHandler.initialize(eh.dry, eh.screen, eh.keyboardQueueForView, eh.viewClosed, eh.renderChan)

eh.handlers = make(map[viewMode]eventHandler)
handler := &imagesScreenEventHandler{}
handler.initialize(eh.dry, eh.screen, eh.keyboardQueueForView, eh.viewClosed, eh.renderChan)
eh.handlers[Images] = handler

iHandler := &networksScreenEventHandler{}
iHandler.initialize(eh.dry, eh.screen, eh.keyboardQueueForView, eh.viewClosed, eh.renderChan)

eh.handlers[Networks] = iHandler

duHandler := &diskUsageScreenEventHandler{}
duHandler.initialize(eh.dry, eh.screen, eh.keyboardQueueForView, eh.viewClosed, eh.renderChan)

eh.handlers[DiskUsage] = duHandler

cHandler := &containersScreenEventHandler{}
cHandler.initialize(eh.dry, eh.screen, eh.keyboardQueueForView, eh.viewClosed, eh.renderChan)
eh.handlers[Main] = cHandler

mHandler := &monitorScreenEventHandler{}
mHandler.initialize(eh.dry, eh.screen, eh.keyboardQueueForView, eh.viewClosed, eh.renderChan)
eh.handlers[Monitor] = mHandler

nHandler := &nodesScreenEventHandler{}
nHandler.initialize(eh.dry, eh.screen, eh.keyboardQueueForView, eh.viewClosed, eh.renderChan)
eh.handlers[Nodes] = nHandler

tHandler := &taskScreenEventHandler{}
tHandler.initialize(eh.dry, eh.screen, eh.keyboardQueueForView, eh.viewClosed, eh.renderChan)
eh.handlers[Tasks] = tHandler

sHandler := &servicesScreenEventHandler{}
sHandler.initialize(eh.dry, eh.screen, eh.keyboardQueueForView, eh.viewClosed, eh.renderChan)
eh.handlers[Services] = sHandler

eh.handlers = viewsToHandlers
for _, handler := range eh.handlers {
handler.initialize(eh.dry, eh.screen, eh.keyboardQueueForView, eh.viewClosed, eh.renderChan)
}
})
if handler, ok := eh.handlers[view]; ok {
return handler
Expand Down

0 comments on commit 1082728

Please sign in to comment.