glimmer 0.8.1 → 0.9.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/README.md +327 -127
- data/VERSION +1 -1
- data/lib/glimmer.rb +35 -21
- data/lib/glimmer/config.rb +7 -12
- data/lib/glimmer/data_binding/observable_array.rb +32 -53
- data/lib/glimmer/data_binding/observable_model.rb +10 -14
- data/lib/glimmer/data_binding/observer.rb +3 -0
- data/lib/glimmer/dsl/engine.rb +58 -27
- data/lib/glimmer/dsl/expression.rb +0 -7
- data/lib/glimmer/dsl/static_expression.rb +2 -2
- data/lib/glimmer/excluded_keyword_error.rb +5 -0
- metadata +60 -136
- data/RUBY_VERSION +0 -1
- data/bin/girb +0 -10
- data/bin/girb_runner.rb +0 -13
- data/bin/glimmer +0 -5
- data/icons/scaffold_app.icns +0 -0
- data/lib/glimmer/css/rule.rb +0 -25
- data/lib/glimmer/css/style_sheet.rb +0 -19
- data/lib/glimmer/data_binding/list_selection_binding.rb +0 -52
- data/lib/glimmer/data_binding/observable_widget.rb +0 -17
- data/lib/glimmer/data_binding/shine.rb +0 -23
- data/lib/glimmer/data_binding/table_items_binding.rb +0 -47
- data/lib/glimmer/data_binding/tree_items_binding.rb +0 -71
- data/lib/glimmer/data_binding/widget_binding.rb +0 -33
- data/lib/glimmer/dsl/css/css_expression.rb +0 -21
- data/lib/glimmer/dsl/css/dsl.rb +0 -10
- data/lib/glimmer/dsl/css/dynamic_property_expression.rb +0 -12
- data/lib/glimmer/dsl/css/property_expression.rb +0 -22
- data/lib/glimmer/dsl/css/pv_expression.rb +0 -17
- data/lib/glimmer/dsl/css/rule_expression.rb +0 -25
- data/lib/glimmer/dsl/css/s_expression.rb +0 -26
- data/lib/glimmer/dsl/swt/async_exec_expression.rb +0 -14
- data/lib/glimmer/dsl/swt/bind_expression.rb +0 -37
- data/lib/glimmer/dsl/swt/color_expression.rb +0 -19
- data/lib/glimmer/dsl/swt/column_properties_expression.rb +0 -24
- data/lib/glimmer/dsl/swt/combo_selection_data_binding_expression.rb +0 -42
- data/lib/glimmer/dsl/swt/custom_widget_expression.rb +0 -36
- data/lib/glimmer/dsl/swt/data_binding_expression.rb +0 -34
- data/lib/glimmer/dsl/swt/dialog_expression.rb +0 -26
- data/lib/glimmer/dsl/swt/display_expression.rb +0 -19
- data/lib/glimmer/dsl/swt/dsl.rb +0 -28
- data/lib/glimmer/dsl/swt/exec_expression.rb +0 -28
- data/lib/glimmer/dsl/swt/layout_data_expression.rb +0 -25
- data/lib/glimmer/dsl/swt/layout_expression.rb +0 -27
- data/lib/glimmer/dsl/swt/list_selection_data_binding_expression.rb +0 -44
- data/lib/glimmer/dsl/swt/menu_bar_expression.rb +0 -33
- data/lib/glimmer/dsl/swt/menu_expression.rb +0 -32
- data/lib/glimmer/dsl/swt/observe_expression.rb +0 -32
- data/lib/glimmer/dsl/swt/property_expression.rb +0 -22
- data/lib/glimmer/dsl/swt/rgb_expression.rb +0 -12
- data/lib/glimmer/dsl/swt/rgba_expression.rb +0 -12
- data/lib/glimmer/dsl/swt/shell_expression.rb +0 -25
- data/lib/glimmer/dsl/swt/swt_expression.rb +0 -25
- data/lib/glimmer/dsl/swt/sync_exec_expression.rb +0 -15
- data/lib/glimmer/dsl/swt/tab_item_expression.rb +0 -33
- data/lib/glimmer/dsl/swt/table_items_data_binding_expression.rb +0 -31
- data/lib/glimmer/dsl/swt/tree_items_data_binding_expression.rb +0 -31
- data/lib/glimmer/dsl/swt/tree_properties_expression.rb +0 -26
- data/lib/glimmer/dsl/swt/widget_expression.rb +0 -34
- data/lib/glimmer/dsl/swt/widget_listener_expression.rb +0 -32
- data/lib/glimmer/dsl/xml/dsl.rb +0 -11
- data/lib/glimmer/dsl/xml/html_expression.rb +0 -25
- data/lib/glimmer/dsl/xml/meta_expression.rb +0 -23
- data/lib/glimmer/dsl/xml/name_space_expression.rb +0 -37
- data/lib/glimmer/dsl/xml/node_parent_expression.rb +0 -33
- data/lib/glimmer/dsl/xml/tag_expression.rb +0 -29
- data/lib/glimmer/dsl/xml/text_expression.rb +0 -22
- data/lib/glimmer/dsl/xml/xml_expression.rb +0 -21
- data/lib/glimmer/launcher.rb +0 -199
- data/lib/glimmer/package.rb +0 -7
- data/lib/glimmer/rake_task.rb +0 -89
- data/lib/glimmer/scaffold.rb +0 -582
- data/lib/glimmer/swt/color_proxy.rb +0 -53
- data/lib/glimmer/swt/display_proxy.rb +0 -88
- data/lib/glimmer/swt/font_proxy.rb +0 -72
- data/lib/glimmer/swt/layout_data_proxy.rb +0 -84
- data/lib/glimmer/swt/layout_proxy.rb +0 -82
- data/lib/glimmer/swt/menu_proxy.rb +0 -101
- data/lib/glimmer/swt/packages.rb +0 -13
- data/lib/glimmer/swt/shell_proxy.rb +0 -157
- data/lib/glimmer/swt/swt_proxy.rb +0 -106
- data/lib/glimmer/swt/tab_item_proxy.rb +0 -65
- data/lib/glimmer/swt/tree_proxy.rb +0 -120
- data/lib/glimmer/swt/widget_listener_proxy.rb +0 -34
- data/lib/glimmer/swt/widget_proxy.rb +0 -489
- data/lib/glimmer/ui/custom_shell.rb +0 -45
- data/lib/glimmer/ui/custom_widget.rb +0 -244
- data/lib/glimmer/util/proc_tracker.rb +0 -16
- data/lib/glimmer/xml/depth_first_search_iterator.rb +0 -22
- data/lib/glimmer/xml/name_space_visitor.rb +0 -21
- data/lib/glimmer/xml/node.rb +0 -75
- data/lib/glimmer/xml/node_visitor.rb +0 -13
- data/lib/glimmer/xml/xml_visitor.rb +0 -65
- data/vendor/swt/linux/swt.jar +0 -0
- data/vendor/swt/mac/swt.jar +0 -0
- data/vendor/swt/windows/swt.jar +0 -0
data/RUBY_VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
jruby-9.2.11.1
|
data/bin/girb
DELETED
data/bin/girb_runner.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'puts_debuggerer'
|
2
|
-
|
3
|
-
include Glimmer
|
4
|
-
|
5
|
-
# Hijack Shell#start_event_loop default behavior to ensure disposing a display upon closing a shell inside girb
|
6
|
-
|
7
|
-
Glimmer::SWT::ShellProxy.class_eval do
|
8
|
-
alias start_event_loop_original start_event_loop
|
9
|
-
def start_event_loop
|
10
|
-
start_event_loop_original
|
11
|
-
Glimmer::SWT::DisplayProxy.instance.dispose
|
12
|
-
end
|
13
|
-
end
|
data/bin/glimmer
DELETED
data/icons/scaffold_app.icns
DELETED
Binary file
|
data/lib/glimmer/css/rule.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
module Glimmer
|
2
|
-
module CSS
|
3
|
-
class Rule
|
4
|
-
attr_reader :selector, :properties
|
5
|
-
|
6
|
-
def initialize(selector)
|
7
|
-
@selector = selector
|
8
|
-
@properties = {}
|
9
|
-
end
|
10
|
-
|
11
|
-
def add_property(keyword, *args)
|
12
|
-
keyword = keyword.to_s.downcase.gsub('_', '-')
|
13
|
-
@properties[keyword] = args.first
|
14
|
-
end
|
15
|
-
|
16
|
-
def to_css
|
17
|
-
css = "#{@selector}{"
|
18
|
-
css << @properties.map { |name, value| "#{name}:#{value}" }.join(';')
|
19
|
-
css << "}"
|
20
|
-
end
|
21
|
-
|
22
|
-
alias to_s to_css
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
require 'glimmer'
|
2
|
-
require 'glimmer/data_binding/observable'
|
3
|
-
require 'glimmer/data_binding/observer'
|
4
|
-
|
5
|
-
module Glimmer
|
6
|
-
module DataBinding
|
7
|
-
# SWT List widget selection binding
|
8
|
-
class ListSelectionBinding
|
9
|
-
include Glimmer
|
10
|
-
include Observable
|
11
|
-
include Observer
|
12
|
-
|
13
|
-
attr_reader :widget_proxy
|
14
|
-
|
15
|
-
PROPERTY_TYPE_UPDATERS = {
|
16
|
-
:string => lambda { |widget_proxy, value| widget_proxy.swt_widget.select(widget_proxy.swt_widget.index_of(value.to_s)) },
|
17
|
-
:array => lambda { |widget_proxy, value| widget_proxy.swt_widget.selection=(value || []).to_java(:string) }
|
18
|
-
}
|
19
|
-
|
20
|
-
PROPERTY_EVALUATORS = {
|
21
|
-
:string => lambda do |selection_array|
|
22
|
-
return nil if selection_array.empty?
|
23
|
-
selection_array[0]
|
24
|
-
end,
|
25
|
-
:array => lambda do |selection_array|
|
26
|
-
selection_array
|
27
|
-
end
|
28
|
-
}
|
29
|
-
|
30
|
-
# Initialize with list widget and property_type
|
31
|
-
# property_type :string represents default list single selection
|
32
|
-
# property_type :array represents list multi selection
|
33
|
-
def initialize(widget_proxy, property_type)
|
34
|
-
property_type = :string if property_type.nil? or property_type == :undefined
|
35
|
-
@widget_proxy = widget_proxy
|
36
|
-
@property_type = property_type
|
37
|
-
@widget_proxy.on_widget_disposed do |dispose_event|
|
38
|
-
unregister_all_observables
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def call(value)
|
43
|
-
PROPERTY_TYPE_UPDATERS[@property_type].call(@widget_proxy, value) unless evaluate_property == value
|
44
|
-
end
|
45
|
-
|
46
|
-
def evaluate_property
|
47
|
-
selection_array = @widget_proxy.swt_widget.send('selection').to_a #TODO refactor send('selection') into proper method invocation
|
48
|
-
PROPERTY_EVALUATORS[@property_type].call(selection_array)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module Glimmer
|
2
|
-
module DataBinding
|
3
|
-
module ObservableWidget
|
4
|
-
# TODO see if it is worth it to eliminate duplication of method_missing
|
5
|
-
# from WidgetProxy using a module
|
6
|
-
|
7
|
-
def method_missing(method, *args, &block)
|
8
|
-
method_name = method.to_s
|
9
|
-
if can_handle_observation_request?(method_name)
|
10
|
-
handle_observation_request(method_name, &block)
|
11
|
-
else
|
12
|
-
super
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
## NOTE: Unsupported in Ruby 2 syntax
|
2
|
-
#
|
3
|
-
# require File.dirname(__FILE__) + "/glimmer"
|
4
|
-
#
|
5
|
-
# class Array
|
6
|
-
# include Glimmer
|
7
|
-
#
|
8
|
-
# alias original_compare <=>
|
9
|
-
#
|
10
|
-
# def <=>(other)
|
11
|
-
# if (self[0].class.name == "WidgetProxy")
|
12
|
-
# content(self[0]) {
|
13
|
-
# if (other.size == 2)
|
14
|
-
# eval("#{self[1]} bind (other[0], other[1])")
|
15
|
-
# elsif (other.size == 3)
|
16
|
-
# eval("#{self[1]} bind (other[0], other[1], other[2])")
|
17
|
-
# end
|
18
|
-
# }
|
19
|
-
# else
|
20
|
-
# original_compare(other)
|
21
|
-
# end
|
22
|
-
# end
|
23
|
-
# end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
require 'glimmer/data_binding/observable_array'
|
2
|
-
require 'glimmer/data_binding/observable_model'
|
3
|
-
require 'glimmer/data_binding/observable'
|
4
|
-
require 'glimmer/data_binding/observer'
|
5
|
-
require 'glimmer/swt/swt_proxy'
|
6
|
-
|
7
|
-
module Glimmer
|
8
|
-
module DataBinding
|
9
|
-
class TableItemsBinding
|
10
|
-
include DataBinding::Observable
|
11
|
-
include DataBinding::Observer
|
12
|
-
include_package 'org.eclipse.swt'
|
13
|
-
include_package 'org.eclipse.swt.widgets'
|
14
|
-
|
15
|
-
def initialize(parent, model_binding, column_properties)
|
16
|
-
@table = parent
|
17
|
-
@model_binding = model_binding
|
18
|
-
@column_properties = column_properties
|
19
|
-
call(@model_binding.evaluate_property)
|
20
|
-
model = model_binding.base_model
|
21
|
-
observe(model, model_binding.property_name_expression)
|
22
|
-
@table.on_widget_disposed do |dispose_event|
|
23
|
-
unregister_all_observables
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def call(model_collection=nil)
|
28
|
-
if model_collection and model_collection.is_a?(Array)
|
29
|
-
# TODO clean observer registrations
|
30
|
-
observe(model_collection, @column_properties)
|
31
|
-
@model_collection = model_collection
|
32
|
-
end
|
33
|
-
populate_table(@model_collection, @table, @column_properties)
|
34
|
-
end
|
35
|
-
|
36
|
-
def populate_table(model_collection, parent, column_properties)
|
37
|
-
parent.swt_widget.removeAll
|
38
|
-
model_collection.each do |model|
|
39
|
-
table_item = TableItem.new(parent.swt_widget, SWT::SWTProxy[:none])
|
40
|
-
for index in 0..(column_properties.size-1)
|
41
|
-
table_item.setText(index, model.send(column_properties[index]).to_s)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,71 +0,0 @@
|
|
1
|
-
require 'glimmer/data_binding/observable_array'
|
2
|
-
require 'glimmer/data_binding/observable_model'
|
3
|
-
require 'glimmer/data_binding/observable'
|
4
|
-
require 'glimmer/data_binding/observer'
|
5
|
-
require 'glimmer/swt/swt_proxy'
|
6
|
-
|
7
|
-
module Glimmer
|
8
|
-
module DataBinding
|
9
|
-
class TreeItemsBinding
|
10
|
-
include DataBinding::Observable
|
11
|
-
include DataBinding::Observer
|
12
|
-
|
13
|
-
include_package 'org.eclipse.swt'
|
14
|
-
include_package 'org.eclipse.swt.widgets'
|
15
|
-
|
16
|
-
def initialize(parent, model_binding, tree_properties)
|
17
|
-
@tree = parent
|
18
|
-
@model_binding = model_binding
|
19
|
-
@tree_properties = [tree_properties].flatten.first.to_h
|
20
|
-
if @tree.respond_to?(:tree_properties=)
|
21
|
-
@tree.tree_properties = @tree_properties
|
22
|
-
else # assume custom widget
|
23
|
-
@tree.body_root.tree_properties = @tree_properties
|
24
|
-
end
|
25
|
-
call
|
26
|
-
model = model_binding.base_model
|
27
|
-
observe(model, model_binding.property_name_expression)
|
28
|
-
@tree.on_widget_disposed do |dispose_event|
|
29
|
-
unregister_all_observables
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def call(new_value=nil)
|
34
|
-
@model_tree_root_node = @model_binding.evaluate_property
|
35
|
-
populate_tree(@model_tree_root_node, @tree, @tree_properties)
|
36
|
-
end
|
37
|
-
|
38
|
-
def populate_tree(model_tree_root_node, parent, tree_properties)
|
39
|
-
# TODO make it change things by delta instead of removing all
|
40
|
-
selected_tree_item_model = parent.swt_widget.getSelection.map(&:getData).first
|
41
|
-
old_tree_items = parent.all_tree_items
|
42
|
-
old_tree_item_expansion_by_data = old_tree_items.reduce({}) {|hash, ti| hash.merge(ti.getData => ti.getExpanded)}
|
43
|
-
old_tree_items.each do |tree_item|
|
44
|
-
tree_item.getData('observer_registrations').each do |key, observer_registration|
|
45
|
-
observer_registration.unregister
|
46
|
-
end
|
47
|
-
end
|
48
|
-
parent.swt_widget.removeAll
|
49
|
-
populate_tree_node(model_tree_root_node, parent.swt_widget, tree_properties)
|
50
|
-
parent.all_tree_items.each { |ti| ti.setExpanded(!!old_tree_item_expansion_by_data[ti.getData]) }
|
51
|
-
tree_item_to_select = parent.depth_first_search {|ti| ti.getData == selected_tree_item_model}
|
52
|
-
parent.swt_widget.setSelection(tree_item_to_select)
|
53
|
-
end
|
54
|
-
|
55
|
-
def populate_tree_node(model_tree_node, parent, tree_properties)
|
56
|
-
return if model_tree_node.nil?
|
57
|
-
# TODO anticipate default tree properties if none were passed (like literal values text and children)
|
58
|
-
tree_item = TreeItem.new(parent, SWT::SWTProxy[:none])
|
59
|
-
observer_registrations = @tree_properties.reduce({}) do |hash, key_value_pair|
|
60
|
-
hash.merge(key_value_pair.first => observe(model_tree_node, key_value_pair.last))
|
61
|
-
end
|
62
|
-
tree_item.setData('observer_registrations', observer_registrations)
|
63
|
-
tree_item.setData(model_tree_node)
|
64
|
-
tree_item.setText((model_tree_node && model_tree_node.send(tree_properties[:text])).to_s)
|
65
|
-
[model_tree_node && model_tree_node.send(tree_properties[:children])].flatten.to_a.compact.each do |child|
|
66
|
-
populate_tree_node(child, tree_item, tree_properties)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'glimmer'
|
2
|
-
require_relative 'observable'
|
3
|
-
require_relative 'observer'
|
4
|
-
|
5
|
-
module Glimmer
|
6
|
-
module DataBinding
|
7
|
-
class WidgetBinding
|
8
|
-
include Glimmer
|
9
|
-
include Observable
|
10
|
-
include Observer
|
11
|
-
|
12
|
-
attr_reader :widget, :property
|
13
|
-
def initialize(model, property, translator = nil)
|
14
|
-
@widget = model
|
15
|
-
@property = property
|
16
|
-
@translator = translator || proc {|value| value}
|
17
|
-
|
18
|
-
if @widget.respond_to?(:dispose)
|
19
|
-
@widget.on_widget_disposed do |dispose_event|
|
20
|
-
unregister_all_observables
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
def call(value)
|
25
|
-
converted_value = translated_value = @translator.call(value)
|
26
|
-
@widget.set_attribute(@property, converted_value) unless evaluate_property == converted_value
|
27
|
-
end
|
28
|
-
def evaluate_property
|
29
|
-
@widget.get_attribute(@property)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'glimmer/dsl/static_expression'
|
2
|
-
require 'glimmer/dsl/top_level_expression'
|
3
|
-
require 'glimmer/dsl/parent_expression'
|
4
|
-
require 'glimmer/css/style_sheet'
|
5
|
-
|
6
|
-
module Glimmer
|
7
|
-
module DSL
|
8
|
-
module CSS
|
9
|
-
# This static html expression flips the DSL switch on for
|
10
|
-
# XML DSL in Glimmer
|
11
|
-
class CssExpression < StaticExpression
|
12
|
-
include TopLevelExpression
|
13
|
-
include ParentExpression
|
14
|
-
|
15
|
-
def interpret(parent, keyword, *args, &block)
|
16
|
-
Glimmer::CSS::StyleSheet.new
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
data/lib/glimmer/dsl/css/dsl.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'glimmer/dsl/expression'
|
2
|
-
require 'glimmer/css/rule'
|
3
|
-
|
4
|
-
module Glimmer
|
5
|
-
module DSL
|
6
|
-
module CSS
|
7
|
-
module PropertyExpression
|
8
|
-
include ParentExpression
|
9
|
-
|
10
|
-
def can_interpret?(parent, keyword, *args, &block)
|
11
|
-
parent.is_a?(Glimmer::CSS::Rule) and
|
12
|
-
!block_given? and
|
13
|
-
!args.empty?
|
14
|
-
end
|
15
|
-
|
16
|
-
def interpret(parent, keyword, *args, &block)
|
17
|
-
parent.add_property(keyword, *args)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'glimmer/dsl/static_expression'
|
2
|
-
require 'glimmer/dsl/css/property_expression'
|
3
|
-
|
4
|
-
module Glimmer
|
5
|
-
module DSL
|
6
|
-
module CSS
|
7
|
-
# Static keyword 'pv' version of CSS DSL dynamic property expression
|
8
|
-
class PVExpression < StaticExpression
|
9
|
-
include PropertyExpression
|
10
|
-
|
11
|
-
def interpret(parent, keyword, *args, &block)
|
12
|
-
parent.add_property(args[0], args[1])
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'glimmer/dsl/expression'
|
2
|
-
require 'glimmer/css/style_sheet'
|
3
|
-
require 'glimmer/css/rule'
|
4
|
-
|
5
|
-
module Glimmer
|
6
|
-
module DSL
|
7
|
-
module CSS
|
8
|
-
class RuleExpression < Expression
|
9
|
-
include ParentExpression
|
10
|
-
|
11
|
-
def can_interpret?(parent, keyword, *args, &block)
|
12
|
-
parent.is_a?(Glimmer::CSS::StyleSheet) and
|
13
|
-
block_given? and
|
14
|
-
args.empty?
|
15
|
-
end
|
16
|
-
|
17
|
-
def interpret(parent, keyword, *args, &block)
|
18
|
-
Glimmer::CSS::Rule.new(keyword.to_s.downcase).tap do |rule|
|
19
|
-
parent.rules << rule
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|