Sha256: ed5584c792f524f8f66b039116740760fffbb825f76a2c5fccc47f540faf270c

Contents?: true

Size: 1.78 KB

Versions: 4

Compression:

Stored size: 1.78 KB

Contents

require File.dirname(__FILE__) + "/../command_handler"
require File.dirname(__FILE__) + "/models/g_widget"
require File.dirname(__FILE__) + "/models/model_binding"

module Glimmer
  # Responsible for setting up the return value of the bind keyword (command symbol)
  # as a ModelBinding. It is then used by another command handler like
  # DataBindingCommandHandler for text and selection properties on Text and Spinner
  # or TableItemsDataBindingCommandHandler for items in a Table
  class BindCommandHandler
    include CommandHandler

    include_package 'org.eclipse.swt.widgets'

    def can_handle?(parent, command_symbol, *args, &block)
      (
        parent.is_a?(GWidget) and
        command_symbol.to_s == "bind" and
        (
          (
            (args.size == 2) and
            (
              args[1].is_a?(Symbol) or
              args[1].is_a?(String)
            )
            ) or
            (
              (args.size == 3) and
              (args[1].is_a?(Symbol) or args[1].is_a?(String)) and
              (args[2].is_a?(Symbol) or args[2].is_a?(String) or args[2].is_a?(Hash))
              ) or
              (
                (args.size == 4) and
                (args[1].is_a?(Symbol) or args[1].is_a?(String)) and
                (args[2].is_a?(Symbol) or args[2].is_a?(String)) and
                (args[3].is_a?(Hash))
              )
              ) and
              block == nil
            )
          end

          def do_handle(parent, command_symbol, *args, &block)
            property_type = args[2] if (args.size == 3) && !args[2].is_a?(Hash)
            binding_options = args[2] if args[2].is_a?(Hash)
            binding_options = args[3] if args[3].is_a?(Hash)
            ModelBinding.new(args[0], args[1].to_s, property_type, binding_options)
          end

        end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
glimmer-0.4.3 lib/glimmer/command_handlers/bind_command_handler.rb
glimmer-0.4.2 lib/glimmer/command_handlers/bind_command_handler.rb
glimmer-0.4.1 lib/glimmer/command_handlers/bind_command_handler.rb
glimmer-0.4.0 lib/glimmer/command_handlers/bind_command_handler.rb