class Lebowski::Foundation::Support::ApplicationContextManager

Application context manager is used to handle the switching between SproutCore applications and keeping track of what application currently posses the current context that all operations act upon

Attributes

main_app[R]

Public Class Methods

new(main_app) click to toggle source
# File lib/lebowski/foundation/application.rb, line 498
def initialize(main_app)
  @main_app = main_app
  @driver = main_app.driver
  @current_application_context = { :app => main_app, :app_name => main_app.app_name }
end

Public Instance Methods

exec_driver_in_context(app) { |driver| ... } click to toggle source
# File lib/lebowski/foundation/application.rb, line 535
def exec_driver_in_context(app, &block)
  previous_app_context = nil
  if not has_current_application_context?(app)
    previous_app_context = @current_application_context.clone
    switch_application_context_to app
  end

  yield @driver

  if not previous_app_context.nil?
    switch_application_context_to previous_app_context[:app], previous_app_context[:app_name]
  end
end
exec_in_context(app, app_name=nil) { |app| ... } click to toggle source
# File lib/lebowski/foundation/application.rb, line 528
def exec_in_context(app, app_name=nil, &block)
  previous_app_context = @current_application_context.clone
  switch_application_context_to app, app_name
  yield app
  switch_application_context_to previous_app_context[:app], previous_app_context[:app_name]
end
has_current_application_context?(app) click to toggle source
# File lib/lebowski/foundation/application.rb, line 524
def has_current_application_context?(app)
  return app.__eql?(@current_application_context[:app])
end
switch_application_context_to(app, app_name=nil) click to toggle source
# File lib/lebowski/foundation/application.rb, line 504
def switch_application_context_to(app, app_name=nil)  
  if not app.kind_of? Application
    raise ArgumentInvalidTypeError.new "app", app, "class < Application"
  end
  
  if not app.__eql? main_app 
    if main_app.path_defined? app_name
      root = main_app.defined_path app_name
      app.root_defined_path_part = root
    else
      app.root_defined_path_part = main_app.root_defined_path_part
    end
  end
  
  app.do_acquire_application_context

  @driver.update_sc_application_context(app_name) if not app_name.nil?
  @current_application_context = { :app => app, :app_name => app_name }
end