Class: Daigaku::Views::MainMenu

Inherits:
Object
  • Object
show all
Includes:
Daigaku::Views
Defined in:
lib/daigaku/views/main_menu.rb

Instance Method Summary collapse

Constructor Details

#initializeMainMenu

Returns a new instance of MainMenu.



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
# File 'lib/daigaku/views/main_menu.rb', line 7

def initialize
  courses_menu = Views::CoursesMenu.new
  chapters_menu = Views::ChaptersMenu.new
  units_menu = Views::UnitsMenu.new
  task_view = Views::TaskView.new

  # Subscription: `first.subscribe(second)` means
  # first subscribes second on the first's broadcast.
  # second has to have method that is broadcasted.

  # top down navigation
  courses_menu.subscribe(chapters_menu, on: :enter)
  chapters_menu.subscribe(units_menu, on: :enter)
  units_menu.subscribe(task_view, on: :enter)

  # bottom up navigation
  chapters_menu.subscribe(courses_menu, on: :reenter)
  units_menu.subscribe(chapters_menu, on: :reenter)
  task_view.subscribe(units_menu, on: :reenter)

  # position reset
  courses_menu.subscribe(chapters_menu, on: :reset_menu_position)
  courses_menu.subscribe(units_menu, on: :reset_menu_position)
  chapters_menu.subscribe(units_menu, on: :reset_menu_position)

  courses_menu.enter
end