Class: WidgetBinding

Inherits:
Object
  • Object
show all
Includes:
Glimmer, Observable, Observer
Defined in:
lib/command_handlers/models/widget_binding.rb

Constant Summary collapse

@@property_type_converters =
{
  :text => Proc.new { |value| value.to_s },
  :items => Proc.new { |value| value.to_java :string},
  :visible => Proc.new { |value| !!value},
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Observer

#add_dependent, #dependents, #dependents_for, #register, #registrations, #registrations_for, #remove_dependent, #unregister, #unregister_all_observables, #unregister_dependents_with_observable

Methods included from Observable

#add_observer, #remove_observer

Methods included from Glimmer

#add_contents, add_contents, dsl, #dsl, extended, included, logger, #method_missing, method_missing

Methods included from SwtPackages

included

Constructor Details

#initialize(model, property, translator = nil) ⇒ WidgetBinding

Returns a new instance of WidgetBinding.



15
16
17
18
19
20
21
22
23
24
# File 'lib/command_handlers/models/widget_binding.rb', line 15

def initialize(model, property, translator = nil)
  @widget = model
  @property = property
  @translator = translator || proc {|value| value}
  add_contents(@widget) {
    on_widget_disposed { |dispose_event|
      unregister_all_observables
    }
  }
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Glimmer

Instance Attribute Details

#propertyObject (readonly)

Returns the value of attribute property.



9
10
11
# File 'lib/command_handlers/models/widget_binding.rb', line 9

def property
  @property
end

#widgetObject (readonly)

Returns the value of attribute widget.



9
10
11
# File 'lib/command_handlers/models/widget_binding.rb', line 9

def widget
  @widget
end

Instance Method Details

#evaluate_propertyObject



31
32
33
# File 'lib/command_handlers/models/widget_binding.rb', line 31

def evaluate_property
  @widget.widget.send(@property)
end

#update(value) ⇒ Object



25
26
27
28
29
30
# File 'lib/command_handlers/models/widget_binding.rb', line 25

def update(value)
  converted_value = translated_value = @translator.call(value)
  converter = @@property_type_converters[@property.to_sym]
  converted_value = converter.call(translated_value) if converter
  @widget.widget.send("set#{@property.camelcase(:upper)}", converted_value) unless evaluate_property == converted_value
end