1 // ========================================================================== 2 // Project: SproutCore - JavaScript Application Framework 3 // Copyright: ©2006-2011 Strobe Inc. and contributors. 4 // Portions ©2008-2011 Apple Inc. All rights reserved. 5 // License: Licensed under MIT license (see license.js) 6 // ========================================================================== 7 8 sc_require('render_delegates/panel'); 9 10 SC.BaseTheme.pickerRenderDelegate = SC.RenderDelegate.create({ 11 className: 'picker', 12 13 render: function (dataSource, context) { 14 var panelRenderDelegate = dataSource.get('theme').panelRenderDelegate; 15 16 panelRenderDelegate.render(dataSource, context); 17 18 var preferType = dataSource.get('preferType'), 19 pointerPosition = dataSource.get('pointerPos'); 20 21 if (preferType == SC.PICKER_POINTER || preferType == SC.PICKER_MENU_POINTER) { 22 context.push('<div class="sc-pointer ' + pointerPosition + '"></div>'); 23 context.addClass(pointerPosition); 24 25 // Track the last pointerPosition used so that we can remove it when it changes. 26 dataSource.renderState._lastPointerPosition = pointerPosition; 27 } 28 }, 29 30 update: function (dataSource, $) { 31 var panelRenderDelegate = dataSource.get('theme').panelRenderDelegate; 32 33 panelRenderDelegate.update(dataSource, $); 34 35 var preferType = dataSource.get('preferType'), 36 pointerPosition = dataSource.get('pointerPos'); 37 38 if (preferType == SC.PICKER_POINTER || preferType == SC.PICKER_MENU_POINTER) { 39 var lastPointerPosition = dataSource.renderState._lastPointerPosition; 40 41 if (lastPointerPosition !== pointerPosition) { 42 var el = $.find('.sc-pointer'); 43 44 // Totally overwrite the pointer class. 45 el.attr('class', "sc-pointer " + pointerPosition); 46 47 // Update the view layer class 48 $.removeClass(lastPointerPosition); 49 $.addClass(pointerPosition); 50 51 // Track the last pointerPosition used so that we can remove it when it changes. 52 dataSource.renderState._lastPointerPosition = pointerPosition; 53 } 54 } 55 56 } 57 }); 58