glimmer 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.markdown +212 -161
- data/RUBY_VERSION +1 -0
- data/VERSION +1 -0
- data/icons/scaffold_app.icns +0 -0
- data/lib/glimmer.rb +5 -47
- data/lib/glimmer/config.rb +35 -0
- data/lib/glimmer/css/{rule_set.rb → rule.rb} +3 -5
- data/lib/glimmer/css/style_sheet.rb +4 -5
- data/lib/glimmer/data_binding/observable_model.rb +1 -1
- data/lib/glimmer/dsl/css/dsl.rb +2 -2
- data/lib/glimmer/dsl/css/dynamic_property_expression.rb +12 -0
- data/lib/glimmer/dsl/css/property_expression.rb +3 -3
- data/lib/glimmer/dsl/css/pv_expression.rb +17 -0
- data/lib/glimmer/dsl/css/{rule_set_expression.rb → rule_expression.rb} +4 -4
- data/lib/glimmer/dsl/css/s_expression.rb +3 -3
- data/lib/glimmer/dsl/engine.rb +35 -5
- data/lib/glimmer/dsl/expression_handler.rb +3 -3
- data/lib/glimmer/dsl/swt/color_expression.rb +2 -0
- data/lib/glimmer/dsl/swt/dsl.rb +2 -0
- data/lib/glimmer/dsl/swt/tab_item_expression.rb +1 -1
- data/lib/glimmer/dsl/swt/widget_listener_expression.rb +5 -5
- data/lib/glimmer/dsl/xml/name_space_expression.rb +1 -1
- data/lib/glimmer/launcher.rb +64 -19
- data/lib/glimmer/rake_task.rb +64 -23
- data/lib/glimmer/scaffold.rb +442 -0
- data/lib/glimmer/swt/layout_data_proxy.rb +1 -1
- data/lib/glimmer/swt/layout_proxy.rb +2 -2
- data/lib/glimmer/swt/swt_proxy.rb +3 -3
- data/lib/glimmer/swt/widget_proxy.rb +5 -5
- data/lib/glimmer/ui/custom_widget.rb +3 -3
- data/lib/glimmer/xml/node.rb +1 -1
- data/lib/glimmer/xml/xml_visitor.rb +2 -2
- metadata +16 -42
- data/bin/gladiator +0 -6
- data/lib/glimmer/dsl/css/p_expression.rb +0 -25
- data/lib/glimmer/ui/video.rb +0 -289
- data/samples/gladiator.rb +0 -765
@@ -31,7 +31,7 @@ module Glimmer
|
|
31
31
|
begin
|
32
32
|
@swt_layout_data = swt_layout_data_class.new(*args)
|
33
33
|
rescue => e
|
34
|
-
Glimmer.logger&.debug "#{e.message}\n#{e.backtrace.join("\n")}"
|
34
|
+
Glimmer::Config.logger&.debug "#{e.message}\n#{e.backtrace.join("\n")}"
|
35
35
|
@swt_layout_data = args.first if args.count == 1
|
36
36
|
end
|
37
37
|
@widget_proxy.swt_widget.setLayoutData(@swt_layout_data)
|
@@ -34,8 +34,8 @@ module Glimmer
|
|
34
34
|
end
|
35
35
|
swt_layout_class
|
36
36
|
rescue => e
|
37
|
-
Glimmer.logger&.debug e.message
|
38
|
-
# Glimmer.logger&.debug "#{e.message}\n#{e.backtrace.join("\n")}"
|
37
|
+
Glimmer::Config.logger&.debug e.message
|
38
|
+
# Glimmer::Config.logger&.debug "#{e.message}\n#{e.backtrace.join("\n")}"
|
39
39
|
raise e
|
40
40
|
end
|
41
41
|
end
|
@@ -43,12 +43,12 @@ module Glimmer
|
|
43
43
|
negative ? ~bit_value : bit_value
|
44
44
|
rescue => e
|
45
45
|
begin
|
46
|
-
# Glimmer.logger&.debug(e.full_message)
|
46
|
+
# Glimmer::Config.logger&.debug(e.full_message)
|
47
47
|
alternative_swt_constant_symbol = SWT.constants.find {|c| c.to_s.upcase == swt_constant_symbol.to_s.upcase}
|
48
48
|
bit_value = SWT.const_get(alternative_swt_constant_symbol)
|
49
49
|
negative ? ~bit_value : bit_value
|
50
50
|
rescue => e
|
51
|
-
# Glimmer.logger&.debug(e.full_message)
|
51
|
+
# Glimmer::Config.logger&.debug(e.full_message)
|
52
52
|
bit_value = Glimmer::SWT::SWTProxy::EXTRA_STYLES[swt_constant_symbol]
|
53
53
|
if bit_value
|
54
54
|
negative ? ~bit_value : bit_value
|
@@ -88,7 +88,7 @@ module Glimmer
|
|
88
88
|
def deconstruct(integer)
|
89
89
|
SWT.constants.reduce([]) do |found, c|
|
90
90
|
constant_value = SWT.const_get(c) rescue -1
|
91
|
-
is_found = constant_value.is_a?(Integer) && (constant_value &
|
91
|
+
is_found = constant_value.is_a?(Integer) && (constant_value & integer) == constant_value
|
92
92
|
is_found ? found += [c] : found
|
93
93
|
end
|
94
94
|
end
|
@@ -191,17 +191,17 @@ module Glimmer
|
|
191
191
|
swt_widget_name = underscored_widget_name.camelcase(:upper)
|
192
192
|
swt_widget_class = eval(swt_widget_name)
|
193
193
|
unless swt_widget_class.ancestors.include?(org.eclipse.swt.widgets.Widget)
|
194
|
-
Glimmer.logger&.debug("Class #{swt_widget_class} matching #{underscored_widget_name} is not a subclass of org.eclipse.swt.widgets.Widget")
|
194
|
+
Glimmer::Config.logger&.debug("Class #{swt_widget_class} matching #{underscored_widget_name} is not a subclass of org.eclipse.swt.widgets.Widget")
|
195
195
|
return nil
|
196
196
|
end
|
197
197
|
swt_widget_class
|
198
198
|
rescue NameError => e
|
199
|
-
Glimmer.logger&.debug e.message
|
200
|
-
# Glimmer.logger&.debug("#{e.message}\n#{e.backtrace.join("\n")}")
|
199
|
+
Glimmer::Config.logger&.debug e.message
|
200
|
+
# Glimmer::Config.logger&.debug("#{e.message}\n#{e.backtrace.join("\n")}")
|
201
201
|
nil
|
202
202
|
rescue => e
|
203
|
-
Glimmer.logger&.debug e.message
|
204
|
-
# Glimmer.logger&.debug("#{e.message}\n#{e.backtrace.join("\n")}")
|
203
|
+
Glimmer::Config.logger&.debug e.message
|
204
|
+
# Glimmer::Config.logger&.debug("#{e.message}\n#{e.backtrace.join("\n")}")
|
205
205
|
nil
|
206
206
|
end
|
207
207
|
|
@@ -36,15 +36,15 @@ module Glimmer
|
|
36
36
|
return constant if constant.ancestors.include?(Glimmer::UI::CustomWidget)
|
37
37
|
constant
|
38
38
|
rescue => e
|
39
|
-
# Glimmer.logger&.debug "#{e.message}\n#{e.backtrace.join("\n")}"
|
39
|
+
# Glimmer::Config.logger&.debug "#{e.message}\n#{e.backtrace.join("\n")}"
|
40
40
|
result
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end
|
44
44
|
raise "#{underscored_custom_widget_name} has no custom widget class!"
|
45
45
|
rescue => e
|
46
|
-
Glimmer.logger&.debug e.message
|
47
|
-
Glimmer.logger&.debug "#{e.message}\n#{e.backtrace.join("\n")}"
|
46
|
+
Glimmer::Config.logger&.debug e.message
|
47
|
+
Glimmer::Config.logger&.debug "#{e.message}\n#{e.backtrace.join("\n")}"
|
48
48
|
nil
|
49
49
|
end
|
50
50
|
|
data/lib/glimmer/xml/node.rb
CHANGED
@@ -50,8 +50,8 @@ module Glimmer
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def append_attributes(node)
|
53
|
-
Glimmer.logger&.debug "Take 3"
|
54
|
-
Glimmer.logger&.debug(node.attributes)
|
53
|
+
Glimmer::Config.logger&.debug "Take 3"
|
54
|
+
Glimmer::Config.logger&.debug(node.attributes)
|
55
55
|
node.attributes.each do |attribute, value|
|
56
56
|
attribute_name = attribute
|
57
57
|
attribute_name = "#{attribute.name_space.name}:#{attribute.name}" if attribute.is_a?(Node)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glimmer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- AndyMaleh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -97,31 +97,17 @@ dependencies:
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
requirement: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
|
-
- -
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
version: 1.1.1
|
103
|
-
name: filewatcher
|
104
|
-
type: :runtime
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: 1.1.1
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
113
|
-
requirements:
|
114
|
-
- - "~>"
|
100
|
+
- - '='
|
115
101
|
- !ruby/object:Gem::Version
|
116
|
-
version:
|
117
|
-
name:
|
102
|
+
version: 2.3.9
|
103
|
+
name: jeweler
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
107
|
requirements:
|
122
|
-
- -
|
108
|
+
- - '='
|
123
109
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
110
|
+
version: 2.3.9
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
112
|
requirement: !ruby/object:Gem::Requirement
|
127
113
|
requirements:
|
@@ -164,20 +150,6 @@ dependencies:
|
|
164
150
|
- - "~>"
|
165
151
|
- !ruby/object:Gem::Version
|
166
152
|
version: 2.3.0
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
requirement: !ruby/object:Gem::Requirement
|
169
|
-
requirements:
|
170
|
-
- - "~>"
|
171
|
-
- !ruby/object:Gem::Version
|
172
|
-
version: 2.3.9
|
173
|
-
name: jeweler
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - "~>"
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: 2.3.9
|
181
153
|
- !ruby/object:Gem::Dependency
|
182
154
|
requirement: !ruby/object:Gem::Requirement
|
183
155
|
requirements:
|
@@ -227,7 +199,6 @@ email: andy.am@gmail.com
|
|
227
199
|
executables:
|
228
200
|
- glimmer
|
229
201
|
- girb
|
230
|
-
- gladiator
|
231
202
|
extensions: []
|
232
203
|
extra_rdoc_files:
|
233
204
|
- LICENSE.txt
|
@@ -235,12 +206,15 @@ extra_rdoc_files:
|
|
235
206
|
files:
|
236
207
|
- LICENSE.txt
|
237
208
|
- README.markdown
|
209
|
+
- RUBY_VERSION
|
210
|
+
- VERSION
|
238
211
|
- bin/girb
|
239
212
|
- bin/girb_runner.rb
|
240
|
-
- bin/gladiator
|
241
213
|
- bin/glimmer
|
214
|
+
- icons/scaffold_app.icns
|
242
215
|
- lib/glimmer.rb
|
243
|
-
- lib/glimmer/
|
216
|
+
- lib/glimmer/config.rb
|
217
|
+
- lib/glimmer/css/rule.rb
|
244
218
|
- lib/glimmer/css/style_sheet.rb
|
245
219
|
- lib/glimmer/data_binding/list_selection_binding.rb
|
246
220
|
- lib/glimmer/data_binding/model_binding.rb
|
@@ -255,9 +229,10 @@ files:
|
|
255
229
|
- lib/glimmer/data_binding/widget_binding.rb
|
256
230
|
- lib/glimmer/dsl/css/css_expression.rb
|
257
231
|
- lib/glimmer/dsl/css/dsl.rb
|
258
|
-
- lib/glimmer/dsl/css/
|
232
|
+
- lib/glimmer/dsl/css/dynamic_property_expression.rb
|
259
233
|
- lib/glimmer/dsl/css/property_expression.rb
|
260
|
-
- lib/glimmer/dsl/css/
|
234
|
+
- lib/glimmer/dsl/css/pv_expression.rb
|
235
|
+
- lib/glimmer/dsl/css/rule_expression.rb
|
261
236
|
- lib/glimmer/dsl/css/s_expression.rb
|
262
237
|
- lib/glimmer/dsl/engine.rb
|
263
238
|
- lib/glimmer/dsl/expression.rb
|
@@ -306,6 +281,7 @@ files:
|
|
306
281
|
- lib/glimmer/launcher.rb
|
307
282
|
- lib/glimmer/package.rb
|
308
283
|
- lib/glimmer/rake_task.rb
|
284
|
+
- lib/glimmer/scaffold.rb
|
309
285
|
- lib/glimmer/swt/color_proxy.rb
|
310
286
|
- lib/glimmer/swt/display_proxy.rb
|
311
287
|
- lib/glimmer/swt/font_proxy.rb
|
@@ -320,14 +296,12 @@ files:
|
|
320
296
|
- lib/glimmer/swt/widget_proxy.rb
|
321
297
|
- lib/glimmer/ui/custom_shell.rb
|
322
298
|
- lib/glimmer/ui/custom_widget.rb
|
323
|
-
- lib/glimmer/ui/video.rb
|
324
299
|
- lib/glimmer/util/proc_tracker.rb
|
325
300
|
- lib/glimmer/xml/depth_first_search_iterator.rb
|
326
301
|
- lib/glimmer/xml/name_space_visitor.rb
|
327
302
|
- lib/glimmer/xml/node.rb
|
328
303
|
- lib/glimmer/xml/node_visitor.rb
|
329
304
|
- lib/glimmer/xml/xml_visitor.rb
|
330
|
-
- samples/gladiator.rb
|
331
305
|
- vendor/swt/linux/swt.jar
|
332
306
|
- vendor/swt/mac/swt.jar
|
333
307
|
- vendor/swt/windows/swt.jar
|
data/bin/gladiator
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'glimmer/dsl/static_expression'
|
2
|
-
require 'glimmer/css/style_sheet'
|
3
|
-
require 'glimmer/css/rule_set'
|
4
|
-
|
5
|
-
module Glimmer
|
6
|
-
module DSL
|
7
|
-
module CSS
|
8
|
-
class PExpression < StaticExpression
|
9
|
-
include ParentExpression
|
10
|
-
|
11
|
-
def can_interpret?(parent, keyword, *args, &block)
|
12
|
-
keyword == 'p' and
|
13
|
-
parent.is_a?(Glimmer::CSS::RuleSet) and
|
14
|
-
!block_given? and
|
15
|
-
!args.empty? and
|
16
|
-
args.size > 1
|
17
|
-
end
|
18
|
-
|
19
|
-
def interpret(parent, keyword, *args, &block)
|
20
|
-
parent.add_property(args[0], args[1])
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
data/lib/glimmer/ui/video.rb
DELETED
@@ -1,289 +0,0 @@
|
|
1
|
-
require 'glimmer/ui/custom_widget'
|
2
|
-
require 'glimmer/swt/color_proxy'
|
3
|
-
|
4
|
-
module Glimmer
|
5
|
-
module UI
|
6
|
-
class Video
|
7
|
-
include Glimmer::UI::CustomWidget
|
8
|
-
include_package 'org.eclipse.swt.browser'
|
9
|
-
|
10
|
-
options :file, :url
|
11
|
-
option :autoplay, true
|
12
|
-
option :controls, true
|
13
|
-
option :looped, false
|
14
|
-
option :background, :white
|
15
|
-
option :fit_to_width, true
|
16
|
-
option :fit_to_height, true
|
17
|
-
option :offset_x, 0
|
18
|
-
option :offset_y, 0
|
19
|
-
|
20
|
-
alias autoplay? autoplay
|
21
|
-
alias controls? controls
|
22
|
-
alias looped? looped
|
23
|
-
alias fit_to_width? fit_to_width
|
24
|
-
alias fit_to_height? fit_to_height
|
25
|
-
|
26
|
-
body {
|
27
|
-
browser(:no_scroll) {
|
28
|
-
text html {
|
29
|
-
head {
|
30
|
-
style(id: "style") {
|
31
|
-
css {
|
32
|
-
body {
|
33
|
-
margin 0
|
34
|
-
padding 0
|
35
|
-
overflow :hidden
|
36
|
-
}
|
37
|
-
}
|
38
|
-
}
|
39
|
-
style(id: "style-body-background") {
|
40
|
-
css {
|
41
|
-
body {
|
42
|
-
p 'background', browser_body_background
|
43
|
-
}
|
44
|
-
}
|
45
|
-
}
|
46
|
-
style(id: "style-body-offset-x") {
|
47
|
-
css {
|
48
|
-
body {
|
49
|
-
margin_left "#{browser_body_offset_x}px"
|
50
|
-
}
|
51
|
-
}
|
52
|
-
}
|
53
|
-
style(id: "style-body-offset-y") {
|
54
|
-
css {
|
55
|
-
body {
|
56
|
-
margin_top "#{browser_body_offset_y}px"
|
57
|
-
}
|
58
|
-
}
|
59
|
-
}
|
60
|
-
}
|
61
|
-
body {
|
62
|
-
video(browser_video_loop, browser_video_controls, browser_video_autoplay, id: 'video', src: source, width: browser_video_width, height: browser_video_height)
|
63
|
-
}
|
64
|
-
}
|
65
|
-
on_completed {
|
66
|
-
@completed = true
|
67
|
-
}
|
68
|
-
}
|
69
|
-
}
|
70
|
-
|
71
|
-
def source
|
72
|
-
file_source = file
|
73
|
-
if file_source
|
74
|
-
if file_source.start_with?('uri:classloader')
|
75
|
-
file_path = file_source.split(/\/\//).last
|
76
|
-
file_name = File.basename(file_source)
|
77
|
-
# supporting windows ENV['temp'] or mac/unix /tmp
|
78
|
-
tmp_dir = ENV['temp'] ? File.expand_path(ENV['temp']) : '/tmp'
|
79
|
-
tmp_dir += '/glimmer/lib/glimmer/ui/video'
|
80
|
-
FileUtils.mkdir_p(tmp_dir)
|
81
|
-
tmp_file = File.join(tmp_dir, file_name)
|
82
|
-
file_content = File.binread(file_source) rescue File.binread(file_path)
|
83
|
-
File.binwrite(tmp_file, file_content)
|
84
|
-
"file://#{tmp_file}"
|
85
|
-
else
|
86
|
-
"file://#{file_source}"
|
87
|
-
end
|
88
|
-
else
|
89
|
-
url
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
def file=(a_file)
|
94
|
-
options[:file] = a_file
|
95
|
-
set_video_source
|
96
|
-
end
|
97
|
-
|
98
|
-
def url=(a_url)
|
99
|
-
options[:url] = a_url
|
100
|
-
set_video_source
|
101
|
-
end
|
102
|
-
|
103
|
-
def play
|
104
|
-
video_action('play')
|
105
|
-
end
|
106
|
-
|
107
|
-
def pause
|
108
|
-
video_action('pause')
|
109
|
-
end
|
110
|
-
|
111
|
-
def reload
|
112
|
-
video_action('load')
|
113
|
-
end
|
114
|
-
|
115
|
-
def paused?
|
116
|
-
video_attribute('paused')
|
117
|
-
end
|
118
|
-
|
119
|
-
def playing?
|
120
|
-
!paused?
|
121
|
-
end
|
122
|
-
|
123
|
-
def ended?
|
124
|
-
video_attribute('ended')
|
125
|
-
end
|
126
|
-
|
127
|
-
# Video fully loaded and ready for playback
|
128
|
-
def loaded?
|
129
|
-
!!@completed
|
130
|
-
end
|
131
|
-
|
132
|
-
def position
|
133
|
-
video_attribute('currentTime')
|
134
|
-
end
|
135
|
-
|
136
|
-
def position=(new_position)
|
137
|
-
video_attribute_set('currentTime', new_position)
|
138
|
-
end
|
139
|
-
|
140
|
-
def duration
|
141
|
-
video_attribute('duration')
|
142
|
-
end
|
143
|
-
|
144
|
-
def can_handle_observation_request?(observation_request)
|
145
|
-
result = false
|
146
|
-
if observation_request.start_with?('on_')
|
147
|
-
attribute = observation_request.sub(/^on_/, '')
|
148
|
-
result = OBSERVED_ATTRIBUTE_TO_PROPERTY_MAPPING.keys.include?(attribute)
|
149
|
-
end
|
150
|
-
result || super
|
151
|
-
end
|
152
|
-
|
153
|
-
def handle_observation_request(observation_request, &block)
|
154
|
-
if observation_request.start_with?('on_')
|
155
|
-
attribute = observation_request.sub(/^on_/, '')
|
156
|
-
if attribute == 'loaded' && !@completed
|
157
|
-
super('on_completed', &block)
|
158
|
-
elsif OBSERVED_ATTRIBUTE_TO_PROPERTY_MAPPING.keys.include?(attribute)
|
159
|
-
add_video_observer(block, OBSERVED_ATTRIBUTE_TO_PROPERTY_MAPPING[attribute])
|
160
|
-
else
|
161
|
-
super
|
162
|
-
end
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
private
|
167
|
-
|
168
|
-
class VideoObserverBrowserFunction < BrowserFunction
|
169
|
-
def initialize(video, observer_proc, attribute)
|
170
|
-
@observer_proc = observer_proc
|
171
|
-
@attribute = attribute
|
172
|
-
name = self.class.generate_name(@attribute)
|
173
|
-
super(video.swt_widget, name)
|
174
|
-
end
|
175
|
-
|
176
|
-
def function(arguments)
|
177
|
-
@observer_proc.call
|
178
|
-
rescue => e
|
179
|
-
Glimmer.logger&.error "#{e.message}\n#{e.backtrace.join("\n")}"
|
180
|
-
ensure
|
181
|
-
nil
|
182
|
-
end
|
183
|
-
|
184
|
-
private
|
185
|
-
|
186
|
-
class << self
|
187
|
-
def generate_name(attribute)
|
188
|
-
"video#{attribute}#{generate_attribute_id(attribute)}"
|
189
|
-
end
|
190
|
-
|
191
|
-
def generate_attribute_id(attribute)
|
192
|
-
attribute_max_ids[attribute] = attribute_max_id(attribute) + 1
|
193
|
-
end
|
194
|
-
|
195
|
-
def attribute_max_id(attribute)
|
196
|
-
attribute_max_ids[attribute] ||= 0
|
197
|
-
end
|
198
|
-
|
199
|
-
def attribute_max_ids
|
200
|
-
@attribute_max_ids ||= {}
|
201
|
-
end
|
202
|
-
end
|
203
|
-
end
|
204
|
-
|
205
|
-
OBSERVED_ATTRIBUTE_TO_PROPERTY_MAPPING = {
|
206
|
-
'playing' => 'play',
|
207
|
-
'paused' => 'pause',
|
208
|
-
'ended' => 'ended',
|
209
|
-
'loaded' => 'canplay',
|
210
|
-
}
|
211
|
-
|
212
|
-
def set_video_source
|
213
|
-
run_on_completed do
|
214
|
-
video_attribute_set('src', source)
|
215
|
-
end
|
216
|
-
end
|
217
|
-
|
218
|
-
def video_action(action)
|
219
|
-
run_on_completed do
|
220
|
-
swt_widget.execute("document.getElementById('video').#{action}()")
|
221
|
-
end
|
222
|
-
end
|
223
|
-
|
224
|
-
def video_attribute(attribute)
|
225
|
-
swt_widget.evaluate("return document.getElementById('video').#{attribute}") if @completed
|
226
|
-
end
|
227
|
-
|
228
|
-
def video_attribute_set(attribute, value)
|
229
|
-
value = "'#{value}'" if value.is_a?(String) || value.is_a?(Symbol)
|
230
|
-
run_on_completed do
|
231
|
-
swt_widget.execute("document.getElementById('video').#{attribute} = #{value}")
|
232
|
-
end
|
233
|
-
end
|
234
|
-
|
235
|
-
def add_video_observer(observer_proc, attribute)
|
236
|
-
run_on_completed do
|
237
|
-
video_observer_browser_function = VideoObserverBrowserFunction.new(self, observer_proc, attribute)
|
238
|
-
swt_widget.execute("document.getElementById('video').addEventListener('#{attribute}', function() {#{video_observer_browser_function.getName}()})")
|
239
|
-
end
|
240
|
-
end
|
241
|
-
|
242
|
-
def run_on_completed(&block)
|
243
|
-
if @completed
|
244
|
-
block.call
|
245
|
-
else
|
246
|
-
on_completed(&block)
|
247
|
-
end
|
248
|
-
end
|
249
|
-
|
250
|
-
def browser_video_autoplay
|
251
|
-
'autoplay' if autoplay?
|
252
|
-
end
|
253
|
-
|
254
|
-
def browser_video_controls
|
255
|
-
'controls' if controls?
|
256
|
-
end
|
257
|
-
|
258
|
-
def browser_video_loop
|
259
|
-
'loop' if looped?
|
260
|
-
end
|
261
|
-
|
262
|
-
def browser_video_width
|
263
|
-
"100%" if fit_to_width
|
264
|
-
end
|
265
|
-
|
266
|
-
def browser_video_height
|
267
|
-
"100%" if fit_to_height
|
268
|
-
end
|
269
|
-
|
270
|
-
def browser_body_background
|
271
|
-
color = background
|
272
|
-
if color.is_a?(Symbol) || color.is_a?(String)
|
273
|
-
color = SWT::ColorProxy.new(color).swt_color
|
274
|
-
elsif color.is_a?(SWT::ColorProxy)
|
275
|
-
color = color.swt_color
|
276
|
-
end
|
277
|
-
"rgba(#{color.getRed}, #{color.getGreen}, #{color.getBlue}, #{color.getAlpha})"
|
278
|
-
end
|
279
|
-
|
280
|
-
def browser_body_offset_x
|
281
|
-
offset_x
|
282
|
-
end
|
283
|
-
|
284
|
-
def browser_body_offset_y
|
285
|
-
offset_y
|
286
|
-
end
|
287
|
-
end
|
288
|
-
end
|
289
|
-
end
|