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_custom_widget_namespaces_for, #add_observer, after_body, #async_exec, #attribute_setter, before_body, body, #can_add_observer?, #content, custom_widget_namespaces, def_option_attr_readers, #dispose, for, #get_attribute, #has_attribute?, #has_instance_method?, #has_style?, #initialize, namespaces_for_class, option, options, reset_custom_widget_namespaces, #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)


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

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



140
141
142
# File 'lib/glimmer/ui/video.rb', line 140

def duration
  video_attribute('duration')
end

#ended?Boolean

Returns:

  • (Boolean)


123
124
125
# File 'lib/glimmer/ui/video.rb', line 123

def ended?
  video_attribute('ended')
end

#file=(a_file) ⇒ Object



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

def file=(a_file)
  options[:file] = a_file
  set_video_source
end

#handle_observation_request(observation_request, &block) ⇒ Object



153
154
155
156
157
158
159
160
161
162
163
164
# File 'lib/glimmer/ui/video.rb', line 153

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)


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

def loaded?
  !!@completed
end

#pauseObject



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

def pause
  video_action('pause')
end

#paused?Boolean

Returns:

  • (Boolean)


115
116
117
# File 'lib/glimmer/ui/video.rb', line 115

def paused?
  video_attribute('paused')
end

#playObject



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

def play
  video_action('play')
end

#playing?Boolean

Returns:

  • (Boolean)


119
120
121
# File 'lib/glimmer/ui/video.rb', line 119

def playing?
  !paused?
end

#positionObject



132
133
134
# File 'lib/glimmer/ui/video.rb', line 132

def position
  video_attribute('currentTime')
end

#position=(new_position) ⇒ Object



136
137
138
# File 'lib/glimmer/ui/video.rb', line 136

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

#reloadObject



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

def reload
  video_action('load')
end

#sourceObject



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

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

#url=(a_url) ⇒ Object



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

def url=(a_url)
  options[:url] = a_url
  set_video_source
end