Class: Glimmer::SWT::CommandHandlers::BindCommandHandler

Inherits:
Object
  • Object
show all
Includes:
CommandHandler
Defined in:
lib/glimmer/swt/command_handlers/bind_command_handler.rb

Overview

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

Instance Method Summary collapse

Instance Method Details

#can_handle?(parent, command_symbol, *args, &block) ⇒ Boolean

Returns:

  • (Boolean)


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/glimmer/swt/command_handlers/bind_command_handler.rb', line 17

def can_handle?(parent, command_symbol, *args, &block)
  # TODO refactor this long condition below
  (
    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

#do_handle(parent, command_symbol, *args, &block) ⇒ Object



46
47
48
49
50
51
# File 'lib/glimmer/swt/command_handlers/bind_command_handler.rb', line 46

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