// ========================================================================== // Project: SproutCore - JavaScript Application Framework // Copyright: ©2006-2011 Strobe Inc. and contributors. // Portions ©2008-2011 Apple Inc. All rights reserved. // License: Licensed under MIT license (see license.js) // ==========================================================================

sc_require('render_delegates/panel');

SC.BaseTheme.pickerRenderDelegate = SC.RenderDelegate.create({

className: 'picker',

render: function (dataSource, context) {
  var panelRenderDelegate = dataSource.get('theme').panelRenderDelegate;

  panelRenderDelegate.render(dataSource, context);

  var preferType = dataSource.get('preferType'),
    pointerPosition = dataSource.get('pointerPos');

  if (preferType == SC.PICKER_POINTER || preferType == SC.PICKER_MENU_POINTER) {
    context.push('<div class="sc-pointer ' + pointerPosition + '"></div>');
    context.addClass(pointerPosition);

    // Track the last pointerPosition used so that we can remove it when it changes.
    dataSource.renderState._lastPointerPosition = pointerPosition;
  }
},

update: function (dataSource, $) {
  var panelRenderDelegate = dataSource.get('theme').panelRenderDelegate;

  panelRenderDelegate.update(dataSource, $);

  var preferType = dataSource.get('preferType'),
    pointerPosition = dataSource.get('pointerPos');

  if (preferType == SC.PICKER_POINTER || preferType == SC.PICKER_MENU_POINTER) {
    var lastPointerPosition = dataSource.renderState._lastPointerPosition;

    if (lastPointerPosition !== pointerPosition) {
      var el = $.find('.sc-pointer');

      // Totally overwrite the pointer class.
      el.attr('class', "sc-pointer " + pointerPosition);

      // Update the view layer class
      $.removeClass(lastPointerPosition);
      $.addClass(pointerPosition);

      // Track the last pointerPosition used so that we can remove it when it changes.
      dataSource.renderState._lastPointerPosition = pointerPosition;
    }
  }

}

});