glimmer-dsl-opal 0.0.6 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +50 -0
  3. data/README.md +995 -74
  4. data/VERSION +1 -1
  5. data/lib/glimmer-dsl-opal.rb +42 -7
  6. data/lib/glimmer-dsl-opal/ext/exception.rb +5 -0
  7. data/lib/glimmer-dsl-opal/missing/net/http.rb +17 -0
  8. data/lib/glimmer-dsl-opal/missing/uri.rb +26 -0
  9. data/lib/{samples → glimmer-dsl-opal/samples}/elaborate/contact_manager.rb +2 -3
  10. data/lib/{samples → glimmer-dsl-opal/samples}/elaborate/contact_manager/contact.rb +0 -0
  11. data/lib/{samples → glimmer-dsl-opal/samples}/elaborate/contact_manager/contact_manager_presenter.rb +0 -0
  12. data/lib/{samples → glimmer-dsl-opal/samples}/elaborate/contact_manager/contact_repository.rb +24 -99
  13. data/lib/{samples → glimmer-dsl-opal/samples}/elaborate/login.rb +0 -1
  14. data/lib/{samples → glimmer-dsl-opal/samples}/elaborate/tic_tac_toe.rb +5 -5
  15. data/lib/{samples → glimmer-dsl-opal/samples}/elaborate/tic_tac_toe/board.rb +0 -0
  16. data/lib/{samples → glimmer-dsl-opal/samples}/elaborate/tic_tac_toe/cell.rb +0 -0
  17. data/lib/{samples → glimmer-dsl-opal/samples}/hello/hello_browser.rb +0 -0
  18. data/lib/glimmer-dsl-opal/samples/hello/hello_combo.rb +63 -0
  19. data/lib/{samples → glimmer-dsl-opal/samples}/hello/hello_computed.rb +19 -19
  20. data/lib/{samples → glimmer-dsl-opal/samples}/hello/hello_computed/contact.rb +0 -0
  21. data/lib/glimmer-dsl-opal/samples/hello/hello_custom_shell.rb +155 -0
  22. data/lib/glimmer-dsl-opal/samples/hello/hello_custom_widget.rb +86 -0
  23. data/lib/{samples → glimmer-dsl-opal/samples}/hello/hello_list_multi_selection.rb +0 -0
  24. data/lib/{samples → glimmer-dsl-opal/samples}/hello/hello_list_single_selection.rb +0 -0
  25. data/lib/glimmer-dsl-opal/samples/hello/hello_tab.rb +50 -0
  26. data/lib/glimmer-dsl-opal/samples/hello/hello_world.rb +29 -0
  27. data/lib/glimmer-dsl-opal/vendor/jquery.js +2 -0
  28. data/lib/glimmer/data_binding/element_binding.rb +1 -1
  29. data/lib/glimmer/data_binding/ext/observable_model.rb +40 -0
  30. data/lib/glimmer/data_binding/list_selection_binding.rb +1 -1
  31. data/lib/glimmer/data_binding/table_items_binding.rb +70 -0
  32. data/lib/glimmer/dsl/opal/async_exec_expression.rb +17 -0
  33. data/lib/glimmer/dsl/opal/color_expression.rb +38 -0
  34. data/lib/glimmer/dsl/opal/column_properties_expression.rb +22 -0
  35. data/lib/glimmer/dsl/opal/combo_selection_data_binding_expression.rb +2 -2
  36. data/lib/glimmer/dsl/opal/custom_widget_expression.rb +57 -0
  37. data/lib/glimmer/dsl/opal/dsl.rb +17 -14
  38. data/lib/glimmer/dsl/opal/font_expression.rb +47 -0
  39. data/lib/glimmer/dsl/opal/layout_data_expression.rb +2 -2
  40. data/lib/glimmer/dsl/opal/{text_expression.rb → layout_expression.rb} +5 -5
  41. data/lib/glimmer/dsl/opal/list_selection_data_binding_expression.rb +2 -3
  42. data/lib/glimmer/dsl/opal/message_box_expression.rb +20 -0
  43. data/lib/glimmer/dsl/opal/observe_expression.rb +32 -0
  44. data/lib/glimmer/dsl/opal/property_expression.rb +5 -2
  45. data/lib/glimmer/dsl/opal/rgb_expression.rb +32 -0
  46. data/lib/glimmer/dsl/opal/rgba_expression.rb +32 -0
  47. data/lib/glimmer/dsl/opal/shell_expression.rb +2 -2
  48. data/lib/glimmer/dsl/opal/swt_expression.rb +46 -0
  49. data/lib/glimmer/dsl/opal/{composite_expression.rb → table_column_expression.rb} +3 -3
  50. data/lib/glimmer/dsl/opal/{list_expression.rb → table_expression.rb} +3 -3
  51. data/lib/glimmer/dsl/opal/table_items_data_binding_expression.rb +29 -0
  52. data/lib/glimmer/dsl/opal/widget_expression.rb +24 -0
  53. data/lib/glimmer/dsl/opal/widget_listener_expression.rb +16 -3
  54. data/lib/glimmer/swt.rb +499 -0
  55. data/lib/glimmer/swt/browser_proxy.rb +27 -0
  56. data/lib/glimmer/swt/button_proxy.rb +40 -0
  57. data/lib/glimmer/swt/color_proxy.rb +119 -0
  58. data/lib/glimmer/{opal/select_proxy.rb → swt/combo_proxy.rb} +24 -19
  59. data/lib/glimmer/swt/composite_proxy.rb +31 -0
  60. data/lib/glimmer/swt/display_proxy.rb +25 -0
  61. data/lib/glimmer/{opal → swt}/event_listener_proxy.rb +1 -1
  62. data/lib/glimmer/swt/fill_layout_proxy.rb +84 -0
  63. data/lib/glimmer/swt/font_proxy.rb +79 -0
  64. data/lib/glimmer/swt/grid_layout_proxy.rb +71 -0
  65. data/lib/glimmer/swt/label_proxy.rb +34 -0
  66. data/lib/glimmer/swt/layout_data_proxy.rb +52 -0
  67. data/lib/glimmer/swt/layout_proxy.rb +62 -0
  68. data/lib/glimmer/{opal → swt}/list_proxy.rb +31 -23
  69. data/lib/glimmer/swt/message_box_proxy.rb +143 -0
  70. data/lib/glimmer/{opal → swt}/point.rb +1 -1
  71. data/lib/glimmer/{opal → swt}/property_owner.rb +1 -1
  72. data/lib/glimmer/swt/row_layout_proxy.rb +105 -0
  73. data/lib/glimmer/swt/shell_proxy.rb +245 -0
  74. data/lib/glimmer/swt/style_constantizable.rb +154 -0
  75. data/lib/glimmer/swt/swt_proxy.rb +53 -0
  76. data/lib/glimmer/{opal/tab_folder.rb → swt/tab_folder_proxy.rb} +21 -15
  77. data/lib/glimmer/swt/tab_item_proxy.rb +84 -0
  78. data/lib/glimmer/swt/table_column_proxy.rb +56 -0
  79. data/lib/glimmer/swt/table_item_proxy.rb +147 -0
  80. data/lib/glimmer/swt/table_proxy.rb +159 -0
  81. data/lib/glimmer/swt/text_proxy.rb +46 -0
  82. data/lib/glimmer/swt/widget_proxy.rb +490 -0
  83. data/lib/glimmer/ui/custom_shell.rb +73 -0
  84. data/lib/glimmer/ui/custom_widget.rb +290 -0
  85. data/lib/glimmer/util/proc_tracker.rb +39 -0
  86. metadata +134 -74
  87. data/lib/glimmer/config.rb +0 -22
  88. data/lib/glimmer/dsl/engine.rb +0 -193
  89. data/lib/glimmer/dsl/expression.rb +0 -42
  90. data/lib/glimmer/dsl/expression_handler.rb +0 -48
  91. data/lib/glimmer/dsl/opal/browser_expression.rb +0 -17
  92. data/lib/glimmer/dsl/opal/button_expression.rb +0 -18
  93. data/lib/glimmer/dsl/opal/combo_expression.rb +0 -17
  94. data/lib/glimmer/dsl/opal/grid_layout_expression.rb +0 -17
  95. data/lib/glimmer/dsl/opal/label_expression.rb +0 -17
  96. data/lib/glimmer/dsl/opal/tab_folder_expression.rb +0 -17
  97. data/lib/glimmer/dsl/opal/tab_item_expression.rb +0 -17
  98. data/lib/glimmer/dsl/parent_expression.rb +0 -12
  99. data/lib/glimmer/dsl/static_expression.rb +0 -36
  100. data/lib/glimmer/dsl/top_level_expression.rb +0 -7
  101. data/lib/glimmer/error.rb +0 -6
  102. data/lib/glimmer/invalid_keyword_error.rb +0 -6
  103. data/lib/glimmer/opal/div_proxy.rb +0 -22
  104. data/lib/glimmer/opal/document_proxy.rb +0 -128
  105. data/lib/glimmer/opal/element_proxy.rb +0 -281
  106. data/lib/glimmer/opal/grid_layout_proxy.rb +0 -53
  107. data/lib/glimmer/opal/iframe_proxy.rb +0 -23
  108. data/lib/glimmer/opal/input_proxy.rb +0 -41
  109. data/lib/glimmer/opal/label_proxy.rb +0 -25
  110. data/lib/glimmer/opal/layout_data_proxy.rb +0 -31
  111. data/lib/glimmer/opal/tab_item.rb +0 -98
  112. data/lib/samples/elaborate/launch +0 -6
  113. data/lib/samples/hello/hello_combo.rb +0 -34
  114. data/lib/samples/hello/hello_tab.rb +0 -24
  115. data/lib/samples/hello/hello_world.rb +0 -8
  116. data/lib/samples/hello/launch +0 -10
  117. data/lib/samples/launch +0 -4
@@ -1,53 +0,0 @@
1
- require 'glimmer/opal/property_owner'
2
-
3
- module Glimmer
4
- module Opal
5
- class GridLayoutProxy
6
- include PropertyOwner
7
- attr_reader :parent, :args, :num_columns, :make_columns_equal_width, :horizontal_spacing, :vertical_spacing
8
-
9
- def initialize(parent, args)
10
- @parent = parent
11
- @args = args
12
- @parent.add_css_class('grid-layout')
13
- @vertical_spacing = 10
14
- @num_columns = 1
15
- reapply
16
- end
17
-
18
- def num_columns=(columns)
19
- @num_columns = columns
20
- # @parent.add_css_class("num-columns-#{@num_columns}")
21
- reapply
22
- end
23
-
24
- def make_columns_equal_width=(equal_width)
25
- @make_columns_equal_width = equal_width
26
- # @parent.add_css_class('make_columns_equal_width') if @make_columns_equal_width
27
- reapply
28
- end
29
-
30
- def horizontal_spacing=(spacing)
31
- @horizontal_spacing = spacing
32
- # @parent.add_css_class("horizontal-spacing-#{@horizontal_spacing}")
33
- reapply
34
- end
35
-
36
- def vertical_spacing=(spacing)
37
- @vertical_spacing = spacing
38
- # @parent.add_css_class("vertical-spacing-#{@vertical_spacing}")
39
- reapply
40
- end
41
-
42
- def reapply
43
- @parent.css = <<~CSS
44
- display: grid;
45
- grid-template-columns: #{'auto ' * @num_columns.to_i};
46
- grid-row-gap: #{@vertical_spacing}px;
47
- grid-column-gap: #{@horizontal_spacing}px;
48
- justify-content: start;
49
- CSS
50
- end
51
- end
52
- end
53
- end
@@ -1,23 +0,0 @@
1
- require 'glimmer/opal/element_proxy'
2
-
3
- module Glimmer
4
- module Opal
5
- class IframeProxy < ElementProxy
6
- attr_reader :url
7
-
8
- def url=(value)
9
- @url = value
10
- redraw
11
- end
12
-
13
- def dom
14
- iframe_id = id
15
- iframe_url = url
16
- @dom ||= DOM {
17
- iframe(src: iframe_url, frameBorder: 0) {
18
- }
19
- }
20
- end
21
- end
22
- end
23
- end
@@ -1,41 +0,0 @@
1
- require 'glimmer/opal/element_proxy'
2
-
3
- module Glimmer
4
- module Opal
5
- class InputProxy < ElementProxy
6
- attr_reader :text
7
-
8
- def text=(value)
9
- @text = value
10
- redraw
11
- end
12
-
13
- def observation_request_to_event_mapping
14
- {
15
- 'on_widget_selected' => {
16
- event: 'click'
17
- },
18
- 'on_modify_text' => {
19
- event: 'keyup',
20
- event_handler: -> (event_listener) {
21
- -> (event) {
22
- @text = event.target.value
23
- event_listener.call(event)
24
- }
25
- }
26
- }
27
- }
28
- end
29
-
30
- def dom
31
- input_text = @text
32
- input_id = id
33
- input_style = css
34
- input_args = @args.last
35
- @dom ||= DOM {
36
- input input_args.merge(id: input_id, style: input_style, value: input_text)
37
- }
38
- end
39
- end
40
- end
41
- end
@@ -1,25 +0,0 @@
1
- require 'glimmer/opal/element_proxy'
2
-
3
- module Glimmer
4
- module Opal
5
- class LabelProxy < ElementProxy
6
- attr_reader :text
7
-
8
- def text=(value)
9
- @text = value
10
- redraw
11
- end
12
-
13
- def dom
14
- label_text = @text
15
- label_id = id
16
- label_style = css
17
- @dom ||= DOM {
18
- label(id: label_id, style: label_style) {
19
- label_text
20
- }
21
- }
22
- end
23
- end
24
- end
25
- end
@@ -1,31 +0,0 @@
1
- require 'glimmer/opal/property_owner'
2
-
3
- module Glimmer
4
- module Opal
5
- class LayoutDataProxy
6
- include PropertyOwner
7
- attr_reader :parent, :args, :horizontal_alignment, :grab_excess_horizontal_space
8
-
9
- def initialize(parent, args)
10
- @parent = parent
11
- @args = args
12
- reapply
13
- end
14
-
15
- def horizontal_alignment=(horizontal_alignment)
16
- @horizontal_alignment = horizontal_alignment
17
- reapply
18
- end
19
-
20
- def grab_excess_horizontal_space=(grab_excess_horizontal_space)
21
- @grab_excess_horizontal_space = grab_excess_horizontal_space
22
- reapply
23
- end
24
-
25
- def reapply
26
- # @parent.css = <<~CSS
27
- # CSS
28
- end
29
- end
30
- end
31
- end
@@ -1,98 +0,0 @@
1
- require 'glimmer/opal/input_proxy'
2
-
3
- module Glimmer
4
- module Opal
5
- class TabItem < DivProxy
6
- include Glimmer
7
- attr_reader :text, :content_visible
8
-
9
- def initialize(parent, args)
10
- super(parent, args)
11
- css_classes << 'tab-item'
12
- content do
13
- on_widget_selected {
14
- @parent.hide_all_tab_content
15
- show
16
- }
17
- end
18
- end
19
-
20
- def content(&block)
21
- Glimmer::DSL::Engine.add_content(self, Glimmer::DSL::Opal::TabItemExpression.new, &block)
22
- end
23
-
24
- def show
25
- @content_visible = true
26
- redraw
27
- end
28
-
29
- def hide
30
- @content_visible = false
31
- redraw
32
- end
33
-
34
- def text=(value)
35
- @text = value
36
- redraw
37
- end
38
-
39
- def name
40
- 'button'
41
- end
42
-
43
- def selector
44
- super + '-tab'
45
- end
46
-
47
- def observation_request_to_event_mapping
48
- {
49
- 'on_widget_selected' => {
50
- event: 'click'
51
- },
52
- }
53
- end
54
-
55
- def redraw
56
- if @tab_dom
57
- old_tab_dom = @tab_dom
58
- @tab_dom = nil
59
- old_tab_dom.replace tab_dom
60
- else
61
- tab_dom
62
- end
63
- super
64
- end
65
-
66
- def tab_dom
67
- tab_id = id + '-tab'
68
- tab_text = text
69
- tab_active = content_visible ? 'active' : ''
70
- @tab_dom ||= DOM {
71
- button(id: tab_id, class: "tab #{tab_active}") {
72
- tab_text
73
- }
74
- }
75
- end
76
-
77
- def dom
78
- tab_item_id = id
79
- tab_item_id_style = css
80
- tab_item_css_classes = css_classes
81
- if content_visible
82
- tab_item_css_classes.delete('hide')
83
- else
84
- tab_item_css_classes << 'hide'
85
- end
86
- if !@parent.tabs.include?(self)
87
- @parent.tabs_dom << tab_dom
88
- @parent.tabs << self
89
- end
90
- @dom ||= DOM {
91
- div(id: tab_item_id, style: tab_item_id_style, class: tab_item_css_classes.to_a.join(' ')) {
92
- }
93
- }
94
- end
95
- end
96
- end
97
- end
98
- require 'glimmer/dsl/opal/tab_item_expression'
@@ -1,6 +0,0 @@
1
- # Launches all samples
2
- export DIR=`echo $0 | sed "s/launch//"`
3
- ${DIR}../../bin/glimmer \
4
- "${DIR}contact_manager.rb" \
5
- "${DIR}login.rb" \
6
- "${DIR}tic_tac_toe.rb"
@@ -1,34 +0,0 @@
1
- class Person
2
- attr_accessor :country, :country_options
3
-
4
- def initialize
5
- self.country_options=["", "Canada", "US", "Mexico"]
6
- self.country = "Canada"
7
- end
8
-
9
- def reset_country
10
- self.country = "Canada"
11
- end
12
- end
13
-
14
- class HelloCombo
15
- include Glimmer
16
- def launch
17
- person = Person.new
18
- shell {
19
- composite {
20
- combo(:read_only) {
21
- selection bind(person, :country)
22
- }
23
- button {
24
- text "Reset"
25
- on_widget_selected do
26
- person.reset_country
27
- end
28
- }
29
- }
30
- }.open
31
- end
32
- end
33
-
34
- HelloCombo.new.launch
@@ -1,24 +0,0 @@
1
- class HelloTab
2
- include Glimmer
3
- def launch
4
- shell {
5
- text "Hello, Tab!"
6
- tab_folder {
7
- tab_item {
8
- text "English"
9
- label {
10
- text "Hello, World!"
11
- }
12
- }
13
- tab_item {
14
- text "French"
15
- label {
16
- text "Bonjour, Univers!"
17
- }
18
- }
19
- }
20
- }.open
21
- end
22
- end
23
-
24
- HelloTab.new.launch
@@ -1,8 +0,0 @@
1
- include Glimmer
2
-
3
- shell {
4
- text "Glimmer"
5
- label {
6
- text "Hello, World!"
7
- }
8
- }.open
@@ -1,10 +0,0 @@
1
- # Launches all samples
2
- export DIR=`echo $0 | sed "s/launch//"`
3
- ${DIR}../../bin/glimmer \
4
- "${DIR}hello_browser.rb" \
5
- "${DIR}hello_combo.rb" \
6
- "${DIR}hello_computed.rb" \
7
- "${DIR}hello_list_multi_selection.rb" \
8
- "${DIR}hello_list_single_selection.rb" \
9
- "${DIR}hello_tab.rb" \
10
- "${DIR}hello_world.rb"
@@ -1,4 +0,0 @@
1
- # Launches all samples
2
- export DIR=`echo $0 | sed "s/launch//"`
3
- ${DIR}hello/launch &
4
- ${DIR}elaborate/launch