Class: RWidget
- Inherits:
-
Object
show all
- Includes:
- Parent
- Defined in:
- lib/command_handlers/models/r_widget_packages.rb,
lib/command_handlers/models/r_widget.rb
Overview
edit to add more packages and support custom widgets
Constant Summary
collapse
- @@default_styles =
{
"text" => SWT::BORDER,
"table" => SWT::BORDER,
"spinner" => SWT::BORDER,
"list" => SWT::BORDER | SWT::V_SCROLL,
"button" => SWT::PUSH,
}
- @@default_initializers =
{
"composite" => Proc.new {|composite| composite.setLayout(GridLayout.new) },
"table" => Proc.new do |table|
table.(true)
table.setLinesVisible(true)
end,
"table_column" => Proc.new { |table_column| table_column.setWidth(80) },
"group" => Proc.new {|group| group.setLayout(GridLayout.new) },
}
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(underscored_widget_name, parent, styles, &contents) ⇒ RWidget
styles is a comma separate list of symbols representing SWT styles in lower case
32
33
34
35
|
# File 'lib/command_handlers/models/r_widget.rb', line 32
def initialize(underscored_widget_name, parent, styles, &contents)
@widget = underscored_widget_name.swt_widget.new(parent, style(underscored_widget_name, styles))
@@default_initializers[underscored_widget_name].call(@widget) if @@default_initializers[underscored_widget_name]
end
|
Instance Attribute Details
Returns the value of attribute widget.
9
10
11
|
# File 'lib/command_handlers/models/r_widget.rb', line 9
def widget
@widget
end
|
Class Method Details
45
46
47
48
49
50
51
52
|
# File 'lib/command_handlers/models/r_widget.rb', line 45
def self.widget_exists?(underscored_widget_name)
begin
eval underscored_widget_name.camelcase(:upper)
true
rescue NameError
false
end
end
|
Instance Method Details
#add_listener(underscored_listener_name, &block) ⇒ Object
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# File 'lib/command_handlers/models/r_widget.rb', line 86
def add_listener(underscored_listener_name, &block)
listener_method_name = underscored_listener_name.camelcase(:lower)
@widget.getClass.getMethods.each do |widget_method|
if widget_method.getName.match(/add.*Listener/)
widget_method.getParameterTypes.each do |listener_type|
listener_type.getMethods.each do |listener_method|
if (listener_method.getName == listener_method_name)
listener_class = Class.new(Object)
listener_class.send :include, (eval listener_type.to_s.sub("interface", ""))
listener = listener_class.new
listener_type.getMethods.each do |t_method|
eval "def listener.#{t_method.getName}(event) end"
end
def listener.block=(block)
@block = block
end
listener.block=block
eval "def listener.#{listener_method.getName}(event) @block.call(event) if @block end"
@widget.send(widget_method.getName, listener)
return RWidgetListener.new(listener)
end
end
end
end
end
end
|
#async_exec(&block) ⇒ Object
117
118
119
|
# File 'lib/command_handlers/models/r_widget.rb', line 117
def async_exec(&block)
@widget.getDisplay.asyncExec(RRunnable.new(&block))
end
|
#can_add_listener?(underscored_listener_name) ⇒ Boolean
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
# File 'lib/command_handlers/models/r_widget.rb', line 70
def can_add_listener?(underscored_listener_name)
listener_method_name = underscored_listener_name.camelcase(:lower)
@widget.getClass.getMethods.each do |widget_method|
if widget_method.getName.match(/add.*Listener/)
widget_method.getParameterTypes.each do |listener_type|
listener_type.getMethods.each do |listener_method|
if (listener_method.getName == listener_method_name)
return true
end
end
end
end
end
return false
end
|
#has_attribute?(attribute_name, *args) ⇒ Boolean
37
38
39
|
# File 'lib/command_handlers/models/r_widget.rb', line 37
def has_attribute?(attribute_name, *args)
@widget.respond_to?(attribute_setter(attribute_name), args)
end
|
#has_style?(style) ⇒ Boolean
125
126
127
|
# File 'lib/command_handlers/models/r_widget.rb', line 125
def has_style?(style)
(widget.style & style.swt_constant) == style.swt_constant
end
|
#process_block(block) ⇒ Object
113
114
115
|
# File 'lib/command_handlers/models/r_widget.rb', line 113
def process_block(block)
block.call(@widget)
end
|
#set_attribute(attribute_name, *args) ⇒ Object
41
42
43
|
# File 'lib/command_handlers/models/r_widget.rb', line 41
def set_attribute(attribute_name, *args)
@widget.send(attribute_setter(attribute_name), *args)
end
|
#sync_exec(&block) ⇒ Object
121
122
123
|
# File 'lib/command_handlers/models/r_widget.rb', line 121
def sync_exec(&block)
@widget.getDisplay.syncExec(RRunnable.new(&block))
end
|
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/command_handlers/models/r_widget.rb', line 54
def widget_listener_exists?(underscored_listener_name)
listener_method_name = underscored_listener_name.listener_method_name(:lower)
@widget.getClass.getMethods.each do |widget_method|
if widget_method.getName.match(/add.*Listener/)
widget_method.getParameterTypes.each do |listener_type|
listener_type.getMethods.each do |listener_method|
if (listener_method.getName == listener_method_name)
return true
end
end
end
end
end
return false
end
|