Sha256: d3eab0d4edc631c72bc25511ba43f6266c3d2fa0f6c4abad93f06deca34ae164

Contents?: true

Size: 1.47 KB

Versions: 5

Compression:

Stored size: 1.47 KB

Contents

require_relative 'observable_array'
require_relative 'observable_model'
require_relative 'observable'
require_relative 'observer'

module Glimmer
  module SWT
    class TableItemsBinding
      include Glimmer
      include Observable
      include Observer
      include_package 'org.eclipse.swt'
      include_package 'org.eclipse.swt.widgets'

      def initialize(parent, model_binding, column_properties)
        @table = parent
        @model_binding = model_binding
        @column_properties = column_properties
        call(@model_binding.evaluate_property)
        model = model_binding.base_model
        observe(model, model_binding.property_name_expression)
        add_contents(@table) {
          on_widget_disposed { |dispose_event|
            unregister_all_observables
          }
        }
      end
      def call(model_collection=nil)
        if model_collection and model_collection.is_a?(Array)
          observe(model_collection, @column_properties)
          @model_collection = model_collection
        end
        populate_table(@model_collection, @table, @column_properties)
      end
      def populate_table(model_collection, parent, column_properties)
        parent.widget.removeAll
        model_collection.each do |model|
          table_item = TableItem.new(parent.widget, GSWT[:none])
          for index in 0..(column_properties.size-1)
            table_item.setText(index, model.send(column_properties[index]).to_s)
          end
        end
      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
glimmer-0.4.8 lib/glimmer/swt/table_items_binding.rb
glimmer-0.4.7 lib/glimmer/swt/table_items_binding.rb
glimmer-0.4.6 lib/glimmer/swt/table_items_binding.rb
glimmer-0.4.5 lib/glimmer/swt/table_items_binding.rb
glimmer-0.4.4 lib/glimmer/swt/table_items_binding.rb