glimmer-dsl-swt 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE.txt +20 -0
- data/README.md +47 -0
- data/RUBY_VERSION +1 -0
- data/VERSION +1 -0
- data/bin/girb +10 -0
- data/bin/girb_runner.rb +13 -0
- data/bin/glimmer +5 -0
- data/icons/scaffold_app.icns +0 -0
- data/lib/ext/glimmer.rb +13 -0
- data/lib/ext/glimmer/config.rb +18 -0
- data/lib/glimmer-dsl-swt.rb +12 -0
- data/lib/glimmer/data_binding/list_selection_binding.rb +52 -0
- data/lib/glimmer/data_binding/model_binding.rb +248 -0
- data/lib/glimmer/data_binding/observable.rb +21 -0
- data/lib/glimmer/data_binding/observable_array.rb +107 -0
- data/lib/glimmer/data_binding/observable_model.rb +108 -0
- data/lib/glimmer/data_binding/observable_widget.rb +17 -0
- data/lib/glimmer/data_binding/observer.rb +124 -0
- data/lib/glimmer/data_binding/shine.rb +23 -0
- data/lib/glimmer/data_binding/table_items_binding.rb +56 -0
- data/lib/glimmer/data_binding/tree_items_binding.rb +71 -0
- data/lib/glimmer/data_binding/widget_binding.rb +33 -0
- data/lib/glimmer/dsl/swt/async_exec_expression.rb +14 -0
- data/lib/glimmer/dsl/swt/bind_expression.rb +37 -0
- data/lib/glimmer/dsl/swt/color_expression.rb +19 -0
- data/lib/glimmer/dsl/swt/column_properties_expression.rb +24 -0
- data/lib/glimmer/dsl/swt/combo_selection_data_binding_expression.rb +42 -0
- data/lib/glimmer/dsl/swt/custom_widget_expression.rb +39 -0
- data/lib/glimmer/dsl/swt/data_binding_expression.rb +34 -0
- data/lib/glimmer/dsl/swt/dialog_expression.rb +26 -0
- data/lib/glimmer/dsl/swt/display_expression.rb +19 -0
- data/lib/glimmer/dsl/swt/dsl.rb +34 -0
- data/lib/glimmer/dsl/swt/exec_expression.rb +28 -0
- data/lib/glimmer/dsl/swt/layout_data_expression.rb +25 -0
- data/lib/glimmer/dsl/swt/layout_expression.rb +27 -0
- data/lib/glimmer/dsl/swt/list_selection_data_binding_expression.rb +44 -0
- data/lib/glimmer/dsl/swt/menu_bar_expression.rb +33 -0
- data/lib/glimmer/dsl/swt/menu_expression.rb +32 -0
- data/lib/glimmer/dsl/swt/message_box_expression.rb +29 -0
- data/lib/glimmer/dsl/swt/observe_expression.rb +32 -0
- data/lib/glimmer/dsl/swt/property_expression.rb +22 -0
- data/lib/glimmer/dsl/swt/rgb_expression.rb +12 -0
- data/lib/glimmer/dsl/swt/rgba_expression.rb +12 -0
- data/lib/glimmer/dsl/swt/shell_expression.rb +25 -0
- data/lib/glimmer/dsl/swt/swt_expression.rb +25 -0
- data/lib/glimmer/dsl/swt/sync_exec_expression.rb +15 -0
- data/lib/glimmer/dsl/swt/tab_item_expression.rb +33 -0
- data/lib/glimmer/dsl/swt/table_items_data_binding_expression.rb +31 -0
- data/lib/glimmer/dsl/swt/tree_items_data_binding_expression.rb +31 -0
- data/lib/glimmer/dsl/swt/tree_properties_expression.rb +26 -0
- data/lib/glimmer/dsl/swt/widget_expression.rb +35 -0
- data/lib/glimmer/dsl/swt/widget_listener_expression.rb +32 -0
- data/lib/glimmer/launcher.rb +196 -0
- data/lib/glimmer/package.rb +57 -0
- data/lib/glimmer/rake_task.rb +62 -0
- data/lib/glimmer/scaffold.rb +582 -0
- data/lib/glimmer/swt/color_proxy.rb +53 -0
- data/lib/glimmer/swt/display_proxy.rb +88 -0
- data/lib/glimmer/swt/font_proxy.rb +72 -0
- data/lib/glimmer/swt/layout_data_proxy.rb +84 -0
- data/lib/glimmer/swt/layout_proxy.rb +82 -0
- data/lib/glimmer/swt/menu_proxy.rb +101 -0
- data/lib/glimmer/swt/message_box_proxy.rb +48 -0
- data/lib/glimmer/swt/packages.rb +13 -0
- data/lib/glimmer/swt/shell_proxy.rb +152 -0
- data/lib/glimmer/swt/swt_proxy.rb +106 -0
- data/lib/glimmer/swt/tab_item_proxy.rb +65 -0
- data/lib/glimmer/swt/table_proxy.rb +150 -0
- data/lib/glimmer/swt/tree_proxy.rb +120 -0
- data/lib/glimmer/swt/widget_listener_proxy.rb +34 -0
- data/lib/glimmer/swt/widget_proxy.rb +489 -0
- data/lib/glimmer/ui/custom_shell.rb +45 -0
- data/lib/glimmer/ui/custom_widget.rb +244 -0
- data/lib/glimmer/util/proc_tracker.rb +16 -0
- data/vendor/swt/linux/swt.jar +0 -0
- data/vendor/swt/mac/swt.jar +0 -0
- data/vendor/swt/windows/swt.jar +0 -0
- metadata +307 -0
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'glimmer'
|
2
|
+
require 'glimmer/dsl/expression'
|
3
|
+
require 'glimmer/dsl/parent_expression'
|
4
|
+
require 'glimmer/swt/layout_proxy'
|
5
|
+
|
6
|
+
module Glimmer
|
7
|
+
module DSL
|
8
|
+
module SWT
|
9
|
+
class LayoutExpression < Expression
|
10
|
+
include ParentExpression
|
11
|
+
|
12
|
+
include_package 'org.eclipse.swt.widgets'
|
13
|
+
|
14
|
+
def can_interpret?(parent, keyword, *args, &block)
|
15
|
+
keyword.to_s.end_with?('_layout') and
|
16
|
+
parent.respond_to?(:swt_widget) and
|
17
|
+
parent.swt_widget.is_a?(Composite) and
|
18
|
+
Glimmer::SWT::LayoutProxy.layout_exists?(keyword.to_s)
|
19
|
+
end
|
20
|
+
|
21
|
+
def interpret(parent, keyword, *args, &block)
|
22
|
+
Glimmer::SWT::LayoutProxy.new(keyword, parent, args)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'glimmer/dsl/expression'
|
2
|
+
require 'glimmer/data_binding/model_binding'
|
3
|
+
require 'glimmer/data_binding/widget_binding'
|
4
|
+
require 'glimmer/data_binding/list_selection_binding'
|
5
|
+
|
6
|
+
module Glimmer
|
7
|
+
module DSL
|
8
|
+
module SWT
|
9
|
+
class ListSelectionDataBindingExpression < Expression
|
10
|
+
include_package 'org.eclipse.swt.widgets'
|
11
|
+
|
12
|
+
def can_interpret?(parent, keyword, *args, &block)
|
13
|
+
keyword == 'selection' and
|
14
|
+
block.nil? and
|
15
|
+
parent.respond_to?(:swt_widget) and
|
16
|
+
parent.swt_widget.is_a?(List) and
|
17
|
+
args.size == 1 and
|
18
|
+
args[0].is_a?(DataBinding::ModelBinding) and
|
19
|
+
args[0].evaluate_options_property.is_a?(Array)
|
20
|
+
end
|
21
|
+
|
22
|
+
def interpret(parent, keyword, *args, &block)
|
23
|
+
model_binding = args[0]
|
24
|
+
widget_binding = DataBinding::WidgetBinding.new(parent, 'items')
|
25
|
+
widget_binding.call(model_binding.evaluate_options_property)
|
26
|
+
model = model_binding.base_model
|
27
|
+
#TODO make this options observer dependent and all similar observers in widget specific data binding interpretrs
|
28
|
+
widget_binding.observe(model, model_binding.options_property_name)
|
29
|
+
|
30
|
+
property_type = :string
|
31
|
+
property_type = :array if parent.has_style?(:multi)
|
32
|
+
list_selection_binding = DataBinding::ListSelectionBinding.new(parent, property_type)
|
33
|
+
list_selection_binding.call(model_binding.evaluate_property)
|
34
|
+
#TODO check if nested data binding works for list widget and other widgets that need custom data binding
|
35
|
+
list_selection_binding.observe(model, model_binding.property_name_expression)
|
36
|
+
|
37
|
+
parent.on_widget_selected do
|
38
|
+
model_binding.call(list_selection_binding.evaluate_property)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'glimmer'
|
2
|
+
require 'glimmer/dsl/static_expression'
|
3
|
+
require 'glimmer/dsl/parent_expression'
|
4
|
+
require 'glimmer/swt/menu_proxy'
|
5
|
+
|
6
|
+
module Glimmer
|
7
|
+
module DSL
|
8
|
+
module SWT
|
9
|
+
class MenuBarExpression < StaticExpression
|
10
|
+
include ParentExpression
|
11
|
+
|
12
|
+
include_package 'org.eclipse.swt.widgets'
|
13
|
+
|
14
|
+
def can_interpret?(parent, keyword, *args, &block)
|
15
|
+
initial_condition = (keyword == 'menu_bar')
|
16
|
+
if initial_condition
|
17
|
+
if parent.swt_widget.is_a?(Shell)
|
18
|
+
return true
|
19
|
+
else
|
20
|
+
raise Glimmer::Error, "menu_bar may only be nested under a shell!"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
false
|
24
|
+
end
|
25
|
+
|
26
|
+
def interpret(parent, keyword, *args, &block)
|
27
|
+
args = args.unshift(:bar)
|
28
|
+
Glimmer::SWT::MenuProxy.new(parent, args)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'glimmer'
|
2
|
+
require 'glimmer/dsl/static_expression'
|
3
|
+
require 'glimmer/dsl/parent_expression'
|
4
|
+
require 'glimmer/swt/menu_proxy'
|
5
|
+
|
6
|
+
module Glimmer
|
7
|
+
module DSL
|
8
|
+
module SWT
|
9
|
+
class MenuExpression < StaticExpression
|
10
|
+
include ParentExpression
|
11
|
+
|
12
|
+
include_package 'org.eclipse.swt.widgets'
|
13
|
+
|
14
|
+
def can_interpret?(parent, keyword, *args, &block)
|
15
|
+
initial_condition = (keyword == 'menu')
|
16
|
+
if initial_condition
|
17
|
+
if parent.respond_to?(:swt_widget)
|
18
|
+
return true
|
19
|
+
else
|
20
|
+
raise Glimmer::Error, "menu may only be nested under a widget (like shell or another menu)!"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
false
|
24
|
+
end
|
25
|
+
|
26
|
+
def interpret(parent, keyword, *args, &block)
|
27
|
+
Glimmer::SWT::MenuProxy.new(parent, args)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'glimmer/dsl/static_expression'
|
2
|
+
require 'glimmer/dsl/parent_expression'
|
3
|
+
require 'glimmer/dsl/top_level_expression'
|
4
|
+
require 'glimmer/swt/shell_proxy'
|
5
|
+
require 'glimmer/swt/message_box_proxy'
|
6
|
+
require 'glimmer/swt/swt_proxy'
|
7
|
+
|
8
|
+
module Glimmer
|
9
|
+
module DSL
|
10
|
+
module SWT
|
11
|
+
class MessageBoxExpression < StaticExpression
|
12
|
+
include TopLevelExpression
|
13
|
+
include ParentExpression
|
14
|
+
|
15
|
+
include_package 'org.eclipse.swt.widgets'
|
16
|
+
|
17
|
+
def can_interpret?(parent, keyword, *args, &block)
|
18
|
+
keyword == 'message_box'
|
19
|
+
end
|
20
|
+
|
21
|
+
def interpret(parent, keyword, *args, &block)
|
22
|
+
potential_parent = args.first
|
23
|
+
parent = args.shift if potential_parent.is_a?(Shell) || (potential_parent.respond_to?(:swt_widget) && potential_parent.swt_widget.is_a?(Shell))
|
24
|
+
Glimmer::SWT::MessageBoxProxy.new(parent, Glimmer::SWT::SWTProxy[args])
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'glimmer/dsl/static_expression'
|
2
|
+
require 'glimmer/dsl/top_level_expression'
|
3
|
+
require 'glimmer/data_binding/observer'
|
4
|
+
require 'glimmer/data_binding/model_binding'
|
5
|
+
|
6
|
+
module Glimmer
|
7
|
+
module DSL
|
8
|
+
module SWT
|
9
|
+
class ObserveExpression < StaticExpression
|
10
|
+
include TopLevelExpression
|
11
|
+
|
12
|
+
REGEX_NESTED_OR_INDEXED_PROPERTY = /([^\[]+)(\[[^\]]+\])?/
|
13
|
+
|
14
|
+
def can_interpret?(parent, keyword, *args, &block)
|
15
|
+
keyword == 'observe' and
|
16
|
+
block_given? and
|
17
|
+
(args.size == 2) and
|
18
|
+
textual?(args[1])
|
19
|
+
end
|
20
|
+
|
21
|
+
def interpret(parent, keyword, *args, &block)
|
22
|
+
observer = DataBinding::Observer.proc(&block)
|
23
|
+
if args[1].to_s.match(REGEX_NESTED_OR_INDEXED_PROPERTY)
|
24
|
+
observer.observe(DataBinding::ModelBinding.new(args[0], args[1]))
|
25
|
+
else
|
26
|
+
observer.observe(args[0], args[1])
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'glimmer/dsl/expression'
|
2
|
+
|
3
|
+
module Glimmer
|
4
|
+
module DSL
|
5
|
+
module SWT
|
6
|
+
class PropertyExpression < Expression
|
7
|
+
def can_interpret?(parent, keyword, *args, &block)
|
8
|
+
block.nil? and
|
9
|
+
args.size > 0 and
|
10
|
+
parent.respond_to?(:set_attribute) and
|
11
|
+
parent.respond_to?(:has_attribute?) and
|
12
|
+
parent.has_attribute?(keyword, *args)
|
13
|
+
end
|
14
|
+
|
15
|
+
def interpret(parent, keyword, *args, &block)
|
16
|
+
parent.set_attribute(keyword, *args)
|
17
|
+
nil
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'glimmer/dsl/static_expression'
|
2
|
+
require 'glimmer/dsl/parent_expression'
|
3
|
+
require 'glimmer/dsl/top_level_expression'
|
4
|
+
require 'glimmer/swt/shell_proxy'
|
5
|
+
|
6
|
+
module Glimmer
|
7
|
+
module DSL
|
8
|
+
module SWT
|
9
|
+
class ShellExpression < StaticExpression
|
10
|
+
include TopLevelExpression
|
11
|
+
include ParentExpression
|
12
|
+
|
13
|
+
def can_interpret?(parent, keyword, *args, &block)
|
14
|
+
keyword == 'shell' and
|
15
|
+
(parent.nil? or parent.is_a?(Glimmer::SWT::ShellProxy))
|
16
|
+
end
|
17
|
+
|
18
|
+
def interpret(parent, keyword, *args, &block)
|
19
|
+
args = [parent] + args unless parent.nil?
|
20
|
+
Glimmer::SWT::ShellProxy.send(:new, *args)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'glimmer/dsl/static_expression'
|
2
|
+
require 'glimmer/swt/swt_proxy'
|
3
|
+
|
4
|
+
# TODO consider turning static keywords like bind into methods
|
5
|
+
|
6
|
+
module Glimmer
|
7
|
+
module DSL
|
8
|
+
module SWT
|
9
|
+
# Responsible for returning SWT constant values
|
10
|
+
#
|
11
|
+
# Named SwtExpression (not SWTExpression) so that the DSL engine
|
12
|
+
# discovers quickly by convention
|
13
|
+
class SwtExpression < StaticExpression
|
14
|
+
def can_interpret?(parent, keyword, *args, &block)
|
15
|
+
block.nil? &&
|
16
|
+
args.size > 0
|
17
|
+
end
|
18
|
+
|
19
|
+
def interpret(parent, keyword, *args, &block)
|
20
|
+
Glimmer::SWT::SWTProxy[*args]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'glimmer/dsl/static_expression'
|
2
|
+
require 'glimmer/dsl/swt/exec_expression'
|
3
|
+
|
4
|
+
module Glimmer
|
5
|
+
module DSL
|
6
|
+
module SWT
|
7
|
+
# Synchronously executes code block against the SWT Event Loop
|
8
|
+
# to manipulate SWT UI objects on the UI thread safely with
|
9
|
+
# immediate priority when needed.
|
10
|
+
class SyncExecExpression < StaticExpression
|
11
|
+
include ExecExpression
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'glimmer'
|
2
|
+
require 'glimmer/dsl/static_expression'
|
3
|
+
require 'glimmer/dsl/parent_expression'
|
4
|
+
require 'glimmer/swt/widget_proxy'
|
5
|
+
require 'glimmer/swt/tab_item_proxy'
|
6
|
+
|
7
|
+
module Glimmer
|
8
|
+
module DSL
|
9
|
+
module SWT
|
10
|
+
class TabItemExpression < StaticExpression
|
11
|
+
include ParentExpression
|
12
|
+
|
13
|
+
include_package 'org.eclipse.swt.widgets'
|
14
|
+
|
15
|
+
def can_interpret?(parent, keyword, *args, &block)
|
16
|
+
initial_condition = (keyword == 'tab_item') and parent.respond_to?(:swt_widget)
|
17
|
+
if initial_condition
|
18
|
+
if parent.swt_widget.is_a?(TabFolder)
|
19
|
+
return true
|
20
|
+
else
|
21
|
+
Glimmer::Config.logger&.error "tab_item widget may only be used directly under a tab_folder widget!"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
false
|
25
|
+
end
|
26
|
+
|
27
|
+
def interpret(parent, keyword, *args, &block)
|
28
|
+
Glimmer::SWT::TabItemProxy.new(parent, args)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'glimmer/dsl/expression'
|
2
|
+
require 'glimmer/data_binding/model_binding'
|
3
|
+
require 'glimmer/data_binding/table_items_binding'
|
4
|
+
|
5
|
+
module Glimmer
|
6
|
+
module DSL
|
7
|
+
module SWT
|
8
|
+
#Depends on BindCommandHandler and TableColumnPropertiesDataBindingCommandHandler
|
9
|
+
class TableItemsDataBindingExpression < Expression
|
10
|
+
include_package 'org.eclipse.swt.widgets'
|
11
|
+
|
12
|
+
def can_interpret?(parent, keyword, *args, &block)
|
13
|
+
keyword == "items" and
|
14
|
+
block.nil? and
|
15
|
+
parent.respond_to?(:swt_widget) and
|
16
|
+
parent.swt_widget.is_a?(Table) and
|
17
|
+
args.size == 2 and
|
18
|
+
args[0].is_a?(DataBinding::ModelBinding) and
|
19
|
+
args[0].evaluate_property.is_a?(Array) and
|
20
|
+
args[1].is_a?(Array)
|
21
|
+
end
|
22
|
+
|
23
|
+
def interpret(parent, keyword, *args, &block)
|
24
|
+
model_binding = args[0]
|
25
|
+
column_properties = args[1]
|
26
|
+
DataBinding::TableItemsBinding.new(parent, model_binding, column_properties)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'glimmer/dsl/expression'
|
2
|
+
require 'glimmer/data_binding/model_binding'
|
3
|
+
require 'glimmer/data_binding/tree_items_binding'
|
4
|
+
|
5
|
+
module Glimmer
|
6
|
+
module DSL
|
7
|
+
module SWT
|
8
|
+
class TreeItemsDataBindingExpression < Expression
|
9
|
+
include_package 'org.eclipse.swt.widgets'
|
10
|
+
|
11
|
+
def can_interpret?(parent, keyword, *args, &block)
|
12
|
+
initial_condition = ((keyword == "items") and block.nil? and parent.respond_to?(:swt_widget) and parent.swt_widget.is_a?(Tree))
|
13
|
+
return false unless initial_condition
|
14
|
+
raise Glimmer::Error, 'Tree items args must be 2' unless args.size == 2
|
15
|
+
raise Glimmer::Error, 'Tree items first arg must be a bind expression' unless args[0].is_a?(DataBinding::ModelBinding)
|
16
|
+
raise Glimmer::Error, 'Tree items data-binding initial value must not be an array yet a single item representing tree root' unless !args[0].evaluate_property.is_a?(Array)
|
17
|
+
raise Glimmer::Error, 'Tree items second arg must be an array' unless args[1].is_a?(Array)
|
18
|
+
raise Glimmer::Error, 'Tree items second arg must not be empty' unless !args[1].empty?
|
19
|
+
raise Glimmer::Error, 'Tree items second arg array elements must be of type hash' unless args[1].first.is_a?(Hash)
|
20
|
+
true
|
21
|
+
end
|
22
|
+
|
23
|
+
def interpret(parent, keyword, *args, &block)
|
24
|
+
model_binding = args[0]
|
25
|
+
tree_properties = args[1]
|
26
|
+
DataBinding::TreeItemsBinding.new(parent, model_binding, tree_properties)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'glimmer/dsl/static_expression'
|
2
|
+
require 'glimmer/data_binding/model_binding'
|
3
|
+
require 'glimmer/data_binding/tree_items_binding'
|
4
|
+
|
5
|
+
module Glimmer
|
6
|
+
module DSL
|
7
|
+
module SWT
|
8
|
+
# Responsible for providing a readable keyword (command symbol) to capture
|
9
|
+
# and return tree properties for use in TreeItemsDataBindingCommandHandler
|
10
|
+
class TreePropertiesExpression < StaticExpression
|
11
|
+
include_package 'org.eclipse.swt.widgets'
|
12
|
+
|
13
|
+
def can_interpret?(parent, keyword, *args, &block)
|
14
|
+
keyword == "tree_properties" and
|
15
|
+
block.nil? and
|
16
|
+
parent.respond_to?(:swt_widget) and
|
17
|
+
parent.swt_widget.is_a?(Tree)
|
18
|
+
end
|
19
|
+
|
20
|
+
def interpret(parent, keyword, *args, &block)
|
21
|
+
args
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|