Class: Glimmer::DataBinding::WidgetBinding

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Glimmer

included

Constructor Details

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

Returns a new instance of WidgetBinding.



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/glimmer/data_binding/widget_binding.rb', line 35

def initialize(widget, property, translator = nil)
  @widget = widget
  @property = property
  @translator = translator || proc {|value| value} #TODO check on this it doesn't seem used

  if @widget.respond_to?(:on_widget_disposed)
    @widget.on_widget_disposed do |dispose_event|
      unregister_all_observables
    end
  end
end

Instance Attribute Details

#propertyObject (readonly)

Returns the value of attribute property.



34
35
36
# File 'lib/glimmer/data_binding/widget_binding.rb', line 34

def property
  @property
end

#widgetObject (readonly)

Returns the value of attribute widget.



34
35
36
# File 'lib/glimmer/data_binding/widget_binding.rb', line 34

def widget
  @widget
end

Instance Method Details

#call(value) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/glimmer/data_binding/widget_binding.rb', line 47

def call(value)
  converted_value = translated_value = @translator.call(value)

  update_operation = lambda do
    if @widget.respond_to?(:disposed?) && @widget.disposed?
      unregister_all_observables
      return
    end
    @widget.set_attribute(@property, converted_value) unless evaluate_property == converted_value
  end
  if Config.auto_sync_exec? && Config.require_sync_exec?
    SWT::DisplayProxy.instance.sync_exec(&update_operation)
  else
    update_operation.call
  end
end

#evaluate_propertyObject



64
65
66
67
68
69
70
# File 'lib/glimmer/data_binding/widget_binding.rb', line 64

def evaluate_property
  if @widget.respond_to?(:disposed?) && @widget.disposed?
    unregister_all_observables
    return
  end
  @widget.get_attribute(@property)
end