Sha256: c9ee0083fa7b03d0a0ff38c12a5e0f75c8785a4becfb407201b9d48a980cafd0

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

module RubyApp

  module Elements

    module Navigation
      require 'ruby_app/element'

      class PageMenu < RubyApp::Element

        class ClickedEvent < RubyApp::Element::Event

          attr_reader :page

          def initialize(data)
            super(data)
            @page = eval(data['page'])
          end

          def to_hash
            super.merge('page' => @page)
          end

        end

        template_path(:all, File.dirname(__FILE__))

        attr_reader :pages

        def initialize
          super
          @pages = []
        end

        def current_page
          RubyApp::Session.pages.last.class
        end

        protected

          def on_event(event)
            on_clicked(event) if event.is_a?(RubyApp::Elements::Navigation::PageMenu::ClickedEvent)
            super(event)
          end

          def on_clicked(event)
            RubyApp::Session.pages.pop
            RubyApp::Session.pages.push(event.page.new)
            event.refresh
          end

      end

    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
RubyApp-0.0.10 lib/ruby_app/elements/navigation/page_menu.rb
RubyApp-0.0.9 lib/ruby_app/elements/navigation/page_menu.rb