class RuGUI::PropertyChangedSupport::PropertyChangedBlock

Attributes

block[RW]
observer[RW]
options[RW]
property[RW]

Public Instance Methods

call_property_changed_block_if_exists(observer, observable, property, new_value, old_value) click to toggle source

Call the block configurated for the property changed if a block exists for the one.

# File lib/rugui/property_changed_support.rb, line 61
def call_property_changed_block_if_exists(observer, observable, property, new_value, old_value)
  self.observer = observer
  call_property_changed_block(observable, new_value, old_value) if block_exists?(observable, property, new_value, old_value)
end
set_options(method_or_options) click to toggle source

Set the options given the args.

# File lib/rugui/property_changed_support.rb, line 67
def set_options(method_or_options)
  case method_or_options
  when String, Symbol
    self.options = { :call => prepared(method_or_options) }
  when Hash
    self.options = method_or_options
  end
end

Protected Instance Methods

block_exists?(observable, property, new_value, old_value) click to toggle source

Check if a block exists for the property changed

# File lib/rugui/property_changed_support.rb, line 78
def block_exists?(observable, property, new_value, old_value)
  if self.options.has_key?(:observable)
    return same_observable_and_property?(observable, property)
  else
    return same_property?(property)
  end
end
call_property_changed_block(observable, new_value, old_value) click to toggle source

Call the block configurated for the property changed.

# File lib/rugui/property_changed_support.rb, line 87
def call_property_changed_block(observable, new_value, old_value)
  return if not self.options.has_key?(:call) and self.block.blank?
  if self.options.has_key?(:call)
    method = self.options[:call]
    self.observer.send(method, observable, new_value, old_value) if self.observer.respond_to?(method)
  else
    self.block.call(observable, new_value, old_value) unless self.block.blank?
  end
end

Private Instance Methods

logger() click to toggle source
# File lib/rugui/property_changed_support.rb, line 114
def logger
  @logger ||= RuGUILogger.logger
end
prepared(param) click to toggle source
# File lib/rugui/property_changed_support.rb, line 110
def prepared(param)
  param.to_s.downcase.underscore
end
same_observable?(observable) click to toggle source
# File lib/rugui/property_changed_support.rb, line 102
def same_observable?(observable)
  prepared(self.options[:observable]) == prepared(observable.class.name)
end
same_observable_and_property?(observable, property) click to toggle source
# File lib/rugui/property_changed_support.rb, line 106
def same_observable_and_property?(observable, property)
  same_observable?(observable) and same_property?(property)
end
same_property?(property) click to toggle source
# File lib/rugui/property_changed_support.rb, line 98
def same_property?(property)
  prepared(self.property) == prepared(property)
end