doc/widget_tutorial/LdtPlayer-tutorial.js
author hamidouk
Fri, 17 Feb 2012 10:22:39 +0100
branchpopcorn-port
changeset 813 25a241b6688a
permissions -rw-r--r--
added a tutorial on how to write a plugin.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
813
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
     1
/* This is the constructor of the widget. It's called by the
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
     2
   initialization routine.
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
     3
*/
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
     4
IriSP.TutorialWidget = function(Popcorn, config, Serializer) {
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
     5
  IriSP.Widget.call(this, Popcorn, config, Serializer);
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
     6
  /* After having called the parent constructor, a couple objects are defined for us
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
     7
     this._config contains all the configuration options passed in the config.
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
     8
     this._id holds the id of the div where the widget has to draw himself
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
     9
     this._serializer is an object containing the metadata that was request in the configuration 
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    10
     options.
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    11
  */
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    12
  
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    13
}
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    14
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    15
/* We need to create assign new prototype to TutorialWidget.prototype
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    16
   because we're going to declare methods in it */
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    17
IriSP.TutorialWidget.prototype = new IriSP.Widget();
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    18
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    19
/* This method draws the widget - it's called automatically by
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    20
   the initialization script.
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    21
 */
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    22
IriSP.TutorialWidget.prototype.draw = function() {
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    23
    /* this.selector is a shortcut to jQuery(widget.container) - it's used everywhere in the code */
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    24
    this.selector.html('Hello');
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    25
    this.selector.css({
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    26
            "text-align" : "center",
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    27
            "padding": "10px 0",
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    28
            "font-size" : "14px"
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    29
        });
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    30
        
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    31
    /* The following is a list of idioms found throughout the code */
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    32
    var templ = IriSP.player_template; /* get the compiled template code for the player.html template - 
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    33
                                          templates are located in the src/templates directory and are automatically
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    34
                                          compiled and made available in the compiled file as IriSP.templatename_template (without the .html)
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    35
                                        */
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    36
    var res = IriSP.templToHTML(IriSP.player_template, {var: 1}); /* format the template with the variable 'var' */
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    37
    
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    38
    /* this._Popcorn is a handle on the Popcorn object. It exposes the API which is documented
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    39
       here : http://popcornjs.org/api
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    40
       currentTime is a Popcorn method that either returns or changes the currentTime.
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    41
       */
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    42
    var time = this._Popcorn.currentTime();    
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    43
    
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    44
    /* Listen to the IriSP.TutorialWidget.foo message. By convention, the name of
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    45
       a message is IriSP.widgetName.messageName */
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    46
    this._Popcorn.listen("IriSP.TutorialWidget.foo",
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    47
                          /* IriSP.wrap preserves this in the callback */
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    48
                          IriSP.wrap(this, this.fooMessageHandler));
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    49
    /* send a message, passing an object allong */
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    50
    this._Popcorn.trigger("IriSP.TutorialWidget.foo", {name: "Dave", surname: "Grohl"});
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    51
};
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    52
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    53
/* Handler for the IriSP.foo message */
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    54
IriSP.TutorialWidget.prototype.fooMessageHandler = function(param) {
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    55
  
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    56
  // show that this is preserved correctly.
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    57
  console.log(this !== window, this);
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    58
  
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    59
  this.selector.append(IriSP.templToHTML("<h2>{{ name }}, {{ surname }}</h2>", {name: param.name, surname: param.surname}));
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    60
  return;
25a241b6688a added a tutorial on how to write a plugin.
hamidouk
parents:
diff changeset
    61
};