class Glimmer::Video
Constants
- OBSERVED_ATTRIBUTE_TO_PROPERTY_MAPPING
Public Instance Methods
can_handle_observation_request?(observation_request)
click to toggle source
Calls superclass method
# File lib/views/glimmer/video.rb, line 196 def can_handle_observation_request?(observation_request) result = false observation_request = observation_request.to_s if observation_request.start_with?('on_') attribute = observation_request.sub(/^on_/, '') result = OBSERVED_ATTRIBUTE_TO_PROPERTY_MAPPING.keys.include?(attribute) end result || super end
duration()
click to toggle source
# File lib/views/glimmer/video.rb, line 158 def duration video_attribute('duration') end
ended?()
click to toggle source
# File lib/views/glimmer/video.rb, line 131 def ended? video_attribute('ended') end
fast_forward(seconds=15)
click to toggle source
# File lib/views/glimmer/video.rb, line 150 def fast_forward(seconds=15) self.position += seconds end
file=(a_file)
click to toggle source
# File lib/views/glimmer/video.rb, line 97 def file=(a_file) options[:file] = a_file set_video_source end
handle_observation_request(observation_request, &block)
click to toggle source
Calls superclass method
# File lib/views/glimmer/video.rb, line 206 def handle_observation_request(observation_request, &block) observation_request = observation_request.to_s if observation_request.start_with?('on_') attribute = observation_request.sub(/^on_/, '') if attribute == 'loaded' && !@completed super('on_completed', &block) elsif OBSERVED_ATTRIBUTE_TO_PROPERTY_MAPPING.keys.include?(attribute) add_video_observer(block, OBSERVED_ATTRIBUTE_TO_PROPERTY_MAPPING[attribute]) else super end end end
loaded?()
click to toggle source
Video
fully loaded and ready for playback
# File lib/views/glimmer/video.rb, line 136 def loaded? !!@completed end
mute()
click to toggle source
# File lib/views/glimmer/video.rb, line 180 def mute video_attribute_set('muted', true) end
muted?()
click to toggle source
# File lib/views/glimmer/video.rb, line 188 def muted? video_attribute('muted') end
pause()
click to toggle source
# File lib/views/glimmer/video.rb, line 111 def pause video_action('pause') end
paused?()
click to toggle source
# File lib/views/glimmer/video.rb, line 123 def paused? video_attribute('paused') end
play()
click to toggle source
# File lib/views/glimmer/video.rb, line 107 def play video_action('play') end
playing?()
click to toggle source
# File lib/views/glimmer/video.rb, line 127 def playing? !paused? end
position()
click to toggle source
# File lib/views/glimmer/video.rb, line 140 def position video_attribute('currentTime') end
position=(new_position)
click to toggle source
# File lib/views/glimmer/video.rb, line 144 def position=(new_position) new_position = [new_position, 0].max new_position = [new_position, duration].min video_attribute_set('currentTime', new_position) end
reload()
click to toggle source
# File lib/views/glimmer/video.rb, line 119 def reload video_action('load') end
rewind(seconds=15)
click to toggle source
# File lib/views/glimmer/video.rb, line 154 def rewind(seconds=15) self.position -= seconds end
source()
click to toggle source
# File lib/views/glimmer/video.rb, line 74 def source file_source = file if file_source if file_source.start_with?('uri:classloader') file_path = file_source.split(/\/\//).last file_name = File.basename(file_source) # supporting windows ENV['temp'] or mac/unix /tmp tmp_dir = ENV['temp'] ? File.expand_path(ENV['temp']) : '/tmp' tmp_dir += '/glimmer/lib/glimmer/ui/video' FileUtils.mkdir_p(tmp_dir) tmp_file = File.join(tmp_dir, file_name) file_content = File.binread(file_source) rescue File.binread(file_path) File.binwrite(tmp_file, file_content) "file://#{tmp_file}" else file_source = File.expand_path(file_source) "file://#{file_source}" end else url end end
toggle()
click to toggle source
# File lib/views/glimmer/video.rb, line 115 def toggle paused? ? play : pause end
toggle_muted()
click to toggle source
# File lib/views/glimmer/video.rb, line 192 def toggle_muted muted? ? unmute : mute end
unmute()
click to toggle source
# File lib/views/glimmer/video.rb, line 184 def unmute video_attribute_set('muted', false) end
url=(a_url)
click to toggle source
# File lib/views/glimmer/video.rb, line 102 def url=(a_url) options[:url] = a_url set_video_source end
volume()
click to toggle source
# File lib/views/glimmer/video.rb, line 162 def volume video_attribute('volume') end
volume=(value)
click to toggle source
# File lib/views/glimmer/video.rb, line 166 def volume=(value) value = [value, 0].max value = [value, 1].min video_attribute_set('volume', value) end
volume_down(value=0.05)
click to toggle source
# File lib/views/glimmer/video.rb, line 176 def volume_down(value=0.05) self.volume -= value end
volume_up(value=0.05)
click to toggle source
# File lib/views/glimmer/video.rb, line 172 def volume_up(value=0.05) self.volume += value end
Private Instance Methods
add_video_observer(observer_proc, attribute)
click to toggle source
# File lib/views/glimmer/video.rb, line 289 def add_video_observer(observer_proc, attribute) run_on_completed do video_observer_browser_function = VideoObserverBrowserFunction.new(self, observer_proc, attribute) swt_widget.execute("document.getElementById('video').addEventListener('#{attribute}', function() {#{video_observer_browser_function.getName}()})") end end
browser_body_background()
click to toggle source
# File lib/views/glimmer/video.rb, line 324 def browser_body_background color = background if color.is_a?(Symbol) || color.is_a?(String) color = color(color) end if color.respond_to?(:swt_color) color = color.swt_color end "rgba(#{color.getRed}, #{color.getGreen}, #{color.getBlue}, #{color.getAlpha})" end
browser_body_offset_x()
click to toggle source
# File lib/views/glimmer/video.rb, line 335 def browser_body_offset_x offset_x end
browser_body_offset_y()
click to toggle source
# File lib/views/glimmer/video.rb, line 339 def browser_body_offset_y offset_y end
browser_video_autoplay()
click to toggle source
# File lib/views/glimmer/video.rb, line 304 def browser_video_autoplay 'autoplay' if autoplay? end
browser_video_controls()
click to toggle source
# File lib/views/glimmer/video.rb, line 308 def browser_video_controls 'controls' if controls? end
browser_video_height()
click to toggle source
# File lib/views/glimmer/video.rb, line 320 def browser_video_height "100%" if fit_to_height end
browser_video_loop()
click to toggle source
# File lib/views/glimmer/video.rb, line 312 def browser_video_loop 'loop' if looped? end
browser_video_width()
click to toggle source
# File lib/views/glimmer/video.rb, line 316 def browser_video_width "100%" if fit_to_width end
run_on_completed(&block)
click to toggle source
# File lib/views/glimmer/video.rb, line 296 def run_on_completed(&block) if @completed block.call else on_completed(&block) end end
set_video_source()
click to toggle source
# File lib/views/glimmer/video.rb, line 266 def set_video_source run_on_completed do video_attribute_set('src', source) end end
video_action(action)
click to toggle source
# File lib/views/glimmer/video.rb, line 272 def video_action(action) run_on_completed do swt_widget.execute("document.getElementById('video').#{action}()") end end
video_attribute(attribute)
click to toggle source
# File lib/views/glimmer/video.rb, line 278 def video_attribute(attribute) swt_widget.evaluate("return document.getElementById('video').#{attribute}") if @completed end
video_attribute_set(attribute, value)
click to toggle source
# File lib/views/glimmer/video.rb, line 282 def video_attribute_set(attribute, value) value = "'#{value}'" if value.is_a?(String) || value.is_a?(Symbol) run_on_completed do swt_widget.execute("document.getElementById('video').#{attribute} = #{value}") end end