MDL-42023 assign: Edit PDF plugin - Jerome's contributions
[moodle.git] / mod / assign / feedback / editpdf / yui / src / editor / js / stamppicker.js
1 var STAMPPICKER_NAME = "Colourpicker",
2     STAMPPICKER;
4 /**
5  * STAMPPICKER
6  * This is a drop down list of stamps.
7  *
8  * @namespace M.assignfeedback_editpdf.stamppicker
9  * @class dropdown
10  * @constructor
11  * @extends Y.Base
12  */
13 STAMPPICKER = function(config) {
14     STAMPPICKER.superclass.constructor.apply(this, [config]);
15 };
17 Y.extend(STAMPPICKER, M.assignfeedback_editpdf.dropdown, {
19     /**
20      * Initialise the menu.
21      *
22      * @method initializer
23      * @return void
24      */
25     initializer : function(config) {
26         var stamplist = Y.Node.create('<ul role="menu" class="assignfeedback_editpdf_menu"/>');
28         // Build a list of stamped buttons.
29         Y.each(this.get('stamps'), function(stamp) {
30             var button, listitem, title;
32             title = M.util.get_string('stamp', 'assignfeedback_editpdf');
33             button = Y.Node.create('<button><img height="40" alt="' + title + '" src="' + stamp + '"/></button>');
34             button.setAttribute('data-stamp', stamp);
35             button.setStyle('backgroundImage', 'none');
36             listitem = Y.Node.create('<li/>');
37             listitem.append(button);
38             stamplist.append(listitem);
39         }, this);
42         // Set the call back.
43         stamplist.delegate('click', this.callback_handler, 'button', this);
44         stamplist.delegate('key', this.callback_handler, 'down:13', 'button', this);
46         // Set the accessible header text.
47         this.set('headerText', M.util.get_string('stamppicker', 'assignfeedback_editpdf'));
49         // Set the body content.
50         this.set('bodyContent', stamplist);
52         STAMPPICKER.superclass.initializer.call(this, config);
53     },
54     callback_handler : function(e) {
55         var callback = this.get('callback'),
56             callbackcontext = this.get('context'),
57             bind;
59         this.hide();
61         // Call the callback with the specified context.
62         bind = Y.bind(callback, callbackcontext, e);
64         bind();
65     }
66 }, {
67     NAME : STAMPPICKER_NAME,
68     ATTRS : {
69         /**
70          * The list of stamps this stamp picker supports.
71          *
72          * @attribute stamps
73          * @type String[] - the stamp filenames.
74          * @default {}
75          */
76         stamps : {
77             value : []
78         },
80         /**
81          * The function called when a new stamp is chosen.
82          *
83          * @attribute callback
84          * @type function
85          * @default null
86          */
87         callback : {
88             value : null
89         },
91         /**
92          * The context passed to the callback when a stamp is chosen.
93          *
94          * @attribute context
95          * @type Y.Node
96          * @default null
97          */
98         context : {
99             value : null
100         }
101     }
102 });
104 M.assignfeedback_editpdf = M.assignfeedback_editpdf || {};
105 M.assignfeedback_editpdf.stamppicker = STAMPPICKER;