require 'rubygems' require 'bundler/setup' require 'ruby-event' module RubyApp module Elements module Mobile require 'ruby_app/element' class Page < RubyApp::Element class LoadedEvent < RubyApp::Element::Event def initialize(data) super(data) end end 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 class SwipedEvent < RubyApp::Element::Event def initialize(data) super(data) end end class SwipedLeftEvent < RubyApp::Elements::Mobile::Page::SwipedEvent def initialize(data) super(data) end def left? return true end def right? return false end end class SwipedRightEvent < RubyApp::Elements::Mobile::Page::SwipedEvent def initialize(data) super(data) end def left? return false end def right? return true end end template_path(:all, File.dirname(__FILE__)) event :loaded event :shown event :before_hidden event :hidden event :swiped 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_loaded(event) if event.is_a?(RubyApp::Elements::Mobile::Page::LoadedEvent) 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) on_swiped(event) if event.is_a?(RubyApp::Elements::Mobile::Page::SwipedEvent) super(event) end def on_loaded(event) loaded(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 def on_swiped(event) swiped(event) end end end end end