Sha256: 052e4b311f7459c7866d2d6ca843de389e5c773cf767ba618819285dbac4ca90

Contents?: true

Size: 864 Bytes

Versions: 3

Compression:

Stored size: 864 Bytes

Contents

require_relative 'observable'
require_relative 'observer'

module Glimmer
  module SWT
    class WidgetBinding
      include Glimmer
      include Observable
      include Observer

      attr_reader :widget, :property
      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
      def call(value)
        converted_value = translated_value = @translator.call(value)
        @widget.set_attribute(@property, converted_value) unless evaluate_property == converted_value
      end
      def evaluate_property
        @widget.widget.send(@property)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
glimmer-0.4.6 lib/glimmer/swt/widget_binding.rb
glimmer-0.4.5 lib/glimmer/swt/widget_binding.rb
glimmer-0.4.4 lib/glimmer/swt/widget_binding.rb