src/widgets/Slice.js
branchnew-model
changeset 880 4c7b33bf2795
child 904 510ebab76fa3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/widgets/Slice.js	Thu Apr 26 19:18:57 2012 +0200
@@ -0,0 +1,66 @@
+/*
+ The Slider Widget shows time position and allows seek
+ */
+
+IriSP.Widgets.Slice = function(player, config) {
+    IriSP.Widgets.Widget.call(this, player, config);
+};
+
+IriSP.Widgets.Slice.prototype = new IriSP.Widgets.Widget();
+
+IriSP.Widgets.Slice.prototype.defaults = {
+    start_visible : false
+};
+
+IriSP.Widgets.Slice.prototype.draw = function() {
+    
+    this.$slider = IriSP.jQuery('<div>')
+        .addClass("Ldt-Slice")
+    
+    this.$.append(this.$slider);
+    
+    this.min = 0;
+    this.max = this.source.getDuration().getSeconds();
+    
+    var _this = this;
+    
+    this.$slider.slider({
+        range: true,
+        values: [0, 0],
+        min: 0,
+        max: this.max,
+        change: function(event, ui) {
+            _this.player.popcorn.trigger("IriSP.Arrow.updatePosition",{
+                widget:_this.type,
+                time:Math.floor((ui.values[0]+ui.values[1])*500)
+            });
+            _this.player.popcorn.trigger("IriSP.Slice.valuesChanged",[ui.values[0]*1000, ui.values[1]*1000]);
+        }
+    });
+    this.$slider.find(".ui-slider-handle:first").addClass("Ldt-Slice-left-handle");
+    this.$slider.find(".ui-slider-handle:last").addClass("Ldt-Slice-right-handle");
+    if (this.start_visible) {
+        this.show();
+    } else {
+        this.hide();
+    }
+    this.bindPopcorn("IriSP.Slice.show","show");
+    this.bindPopcorn("IriSP.Slice.hide","hide");
+    this.bindPopcorn("IriSP.Annotation.boundsChanged","storeBounds")
+};
+
+IriSP.Widgets.Slice.prototype.show = function() {
+    this.$slider.show();
+    this.player.popcorn.trigger("IriSP.Arrow.takeover",this.type);
+    this.$slider.slider("values", [this.min, this.max]);
+}
+
+IriSP.Widgets.Slice.prototype.hide = function() {
+    this.$slider.hide();
+    this.player.popcorn.trigger("IriSP.Arrow.release");
+}
+
+IriSP.Widgets.Slice.prototype.storeBounds = function(_values) {
+    this.min = Math.floor(_values[0]/1000);
+    this.max = Math.floor(_values[1]/1000);
+}
\ No newline at end of file