1 // ========================================================================== 2 // Project: The M-Project - Mobile HTML5 Application Framework 3 // Copyright: (c) 2010 M-Way Solutions GmbH. All rights reserved. 4 // Creator: Dominik 5 // Date: 23.11.2010 6 // License: Dual licensed under the MIT or GPL Version 2 licenses. 7 // http://github.com/mwaylabs/The-M-Project/blob/master/MIT-LICENSE 8 // http://github.com/mwaylabs/The-M-Project/blob/master/GPL-LICENSE 9 // ========================================================================== 10 11 m_require('ui/dialog.js'); 12 13 /** 14 * @class 15 * 16 * This is the prototype for any action sheet dialog view. It is derived from M.DialogView 17 * and mainly used for implementing a action sheet dialog view specific render method. 18 * 19 * @extends M.DialogView 20 */ 21 M.ActionSheetDialogView = M.DialogView.extend( 22 /** @scope M.ActionSheetDialogView.prototype */ { 23 24 /** 25 * The type of this object. 26 * 27 * @type String 28 */ 29 type: 'M.ActionSheetDialogView', 30 31 /** 32 * The default title of an action sheet dialog. 33 * 34 * @type String 35 */ 36 title: 'ActionSheet', 37 38 /** 39 * The default transition of an action sheet dialog. 40 * 41 * @type String 42 */ 43 transition: M.TRANSITION.SLIDEUP, 44 45 /** 46 * Determines whether the action sheet dialog gets a default cancel button. 47 * 48 * @type Boolean 49 */ 50 hasCancelButton: YES, 51 52 /** 53 * Renders an action sheet dialog as a slide-up page. 54 * 55 * @private 56 * @returns {String} The action sheet dialog view's html representation. 57 */ 58 render: function() { 59 this.html = '<div data-role="dialog" id="' + this.id + '">'; 60 this.html += '<div data-role="content"><h2>' + this.title + '</h2>'; 61 this.html += this.message ? this.message : ''; 62 63 if(this.buttons) { 64 for(var buttonName in this.buttons) { 65 var button = M.ButtonView.design({ 66 value: this.buttons[buttonName].title, 67 target: this, 68 action: 'dialogWillClose', 69 role: buttonName, 70 cssClass: this.buttons[buttonName].cssClass ? this.buttons[buttonName].cssClass : (buttonName === 'cancel' ? 'c' : 'b') 71 }); 72 this.buttonIds.push(button.id); 73 this.html += button.render(); 74 } 75 } 76 77 if(this.hasCancelButton) { 78 var button = M.ButtonView.design({ 79 value: 'Cancel', 80 cssClass: 'c', 81 target: this, 82 action: 'dialogWillClose', 83 role: 'onCancel' 84 }); 85 this.buttonIds.push(button.id); 86 this.html += button.render(); 87 } 88 89 this.html += '</div>'; 90 91 $('body').append(this.html); 92 } 93 94 });