Sha256: 457a2157f485a155c413be60555c6c5bc1bd08a75608679a0cbdbcab2e6dc795

Contents?: true

Size: 1.83 KB

Versions: 7

Compression:

Stored size: 1.83 KB

Contents

require 'rubygems'
require 'bundler/setup'

require 'ruby-event'

module RubyApp

  module Elements

    module Mobile
      require 'ruby_app/element'

      class Page < RubyApp::Element

        class ShownEvent < RubyApp::Element::Event

          def initialize(data)
            super(data)
          end

        end

        class BeforeHiddenEvent < RubyApp::Element::Event

          def initialize(data)
            super(data)
          end

        end

        class HiddenEvent < RubyApp::Element::Event

          def initialize(data)
            super(data)
          end

        end

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

        event :shown
        event :before_hidden
        event :hidden

        def initialize
          super
          self.attributes.merge!('data-role' => 'page')
        end

        def show(event, options = {})
          RubyApp::Session.document.pages.push(self)
          event.show_page(self, options)
        end

        def hide(event, options = {})
          event.remove_page(self)
          event.show_page(RubyApp::Session.document.pages.second_last, options)
        end

        protected

          def on_event(event)
            on_shown(event) if event.is_a?(RubyApp::Elements::Mobile::Page::ShownEvent)
            on_before_hidden(event) if event.is_a?(RubyApp::Elements::Mobile::Page::BeforeHiddenEvent)
            on_hidden(event) if event.is_a?(RubyApp::Elements::Mobile::Page::HiddenEvent)
            super(event)
          end

          def on_shown(event)
            shown(event)
          end

          def on_before_hidden(event)
            before_hidden(event)
          end

          def on_hidden(event)
            RubyApp::Session.document.pages.pop if RubyApp::Session.document.pages.last == self
            hidden(event)
          end

      end

    end

  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
RubyApp-0.5.13 lib/ruby_app/elements/mobile/page.rb
RubyApp-0.5.12 lib/ruby_app/elements/mobile/page.rb
RubyApp-0.5.11 lib/ruby_app/elements/mobile/page.rb
RubyApp-0.5.10 lib/ruby_app/elements/mobile/page.rb
RubyApp-0.5.9 lib/ruby_app/elements/mobile/page.rb
RubyApp-0.5.0 lib/ruby_app/elements/mobile/page.rb
RubyApp-0.2.8 lib/ruby_app/elements/mobile/page.rb