Class: Glimmer::UI::Video

Inherits:
Object
  • Object
show all
Includes:
CustomWidget
Defined in:
lib/glimmer/ui/video.rb

Defined Under Namespace

Classes: VideoObserverBrowserFunction

Instance Attribute Summary

Attributes included from CustomWidget

#body_root, #options, #parent, #swt_style, #swt_widget

Instance Method Summary collapse

Methods included from CustomWidget

#add_observer, after_body, #async_exec, #attribute_setter, before_body, body, #can_add_observer?, #content, def_option_attr_readers, #dispose, for, #get_attribute, #has_attribute?, #has_style?, #initialize, option, options, #set_attribute, #sync_exec

Methods included from DataBinding::ObservableModel

#add_observer, #add_property_writer_observers, #array_object_observer_for, #ensure_array_object_observer, #has_observer?, #has_observer_for_any_property?, #notify_observers, #property_observer_hash, #property_observer_list, #remove_observer, #unregister_dependent_observers

Methods included from DataBinding::Observable

#add_observer, #remove_observer

Instance Method Details

#can_handle_observation_request?(observation_request) ⇒ Boolean

Returns:

  • (Boolean)


133
134
135
136
137
138
139
140
# File 'lib/glimmer/ui/video.rb', line 133

def can_handle_observation_request?(observation_request)
  result = false
  if observation_request.start_with?('on_')
    attribute = observation_request.sub(/^on_/, '')
    result = OBSERVED_ATTRIBUTE_TO_PROPERTY_MAPPING.keys.include?(attribute)
  end
  result || super
end

#durationObject



129
130
131
# File 'lib/glimmer/ui/video.rb', line 129

def duration
  video_attribute('duration')
end

#ended?Boolean

Returns:

  • (Boolean)


112
113
114
# File 'lib/glimmer/ui/video.rb', line 112

def ended?
  video_attribute('ended')
end

#handle_observation_request(observation_request, &block) ⇒ Object



142
143
144
145
146
147
148
149
150
151
152
153
# File 'lib/glimmer/ui/video.rb', line 142

def handle_observation_request(observation_request, &block)
  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?Boolean

Video fully loaded and ready for playback

Returns:

  • (Boolean)


117
118
119
# File 'lib/glimmer/ui/video.rb', line 117

def loaded?
  !!@completed
end

#pauseObject



96
97
98
# File 'lib/glimmer/ui/video.rb', line 96

def pause
  video_action('pause')
end

#paused?Boolean

Returns:

  • (Boolean)


104
105
106
# File 'lib/glimmer/ui/video.rb', line 104

def paused?
  video_attribute('paused')
end

#playObject



92
93
94
# File 'lib/glimmer/ui/video.rb', line 92

def play
  video_action('play')
end

#playing?Boolean

Returns:

  • (Boolean)


108
109
110
# File 'lib/glimmer/ui/video.rb', line 108

def playing?
  !paused?
end

#positionObject



121
122
123
# File 'lib/glimmer/ui/video.rb', line 121

def position
  video_attribute('currentTime')
end

#position=(new_position) ⇒ Object



125
126
127
# File 'lib/glimmer/ui/video.rb', line 125

def position=(new_position)
  video_attribute_set('currentTime', new_position)
end

#reloadObject



100
101
102
# File 'lib/glimmer/ui/video.rb', line 100

def reload
  video_action('load')
end

#sourceObject



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/glimmer/ui/video.rb', line 70

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://#{file_source}"
    end
  else
    url
  end
end