Sha256: dca2b186663e0ffe49905762332ea81c611b2c032c5983fab8f17f8517e560fb

Contents?: true

Size: 972 Bytes

Versions: 2

Compression:

Stored size: 972 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) { # TODO consider having custom widgets support on_widget_disposed event and any event on their body_root
          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.get_attribute(@property)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
glimmer-0.4.8 lib/glimmer/swt/widget_binding.rb
glimmer-0.4.7 lib/glimmer/swt/widget_binding.rb