// ========================================================================== // 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) // ==========================================================================

/**

@class

Disclosure triangle button. As a subclass of SC.ButtonView, this view
takes a lot of the same properties as a button:

  - isEnabled: whether disclosure triangle is clickable or not
  - value: `YES` or `NO` (where `YES` implies expanded/open)

A disclosure view also supports expanding and collapsing via
the keyboard.

@extends SC.ButtonView
@since SproutCore 1.0

*/ SC.DisclosureView = SC.ButtonView.extend( /** @scope SC.DisclosureView.prototype */ {

/**
  @type Array
  @default ['sc-disclosure-view']
  @see SC.View#classNames
*/
classNames: ['sc-disclosure-view'],

/**
  @type String
  @default 'disclosureRenderDelegate'
*/
renderDelegateName: 'disclosureRenderDelegate',

/**
  @type String
  @default SC.TOGGLE_BEHAVIOR
  @see SC.ButtonView#buttonBehavior
*/
buttonBehavior: SC.TOGGLE_BEHAVIOR,

/**
  This is the value that will be set when the disclosure triangle is toggled
  open.

  @type Boolean
  @default YES
*/
toggleOnValue: YES,

/**
  The value that will be set when the disclosure triangle is toggled closed.

  @type Boolean
  @default YES
*/
toggleOffValue: NO,

/** @private */
valueBindingDefault: SC.Binding.bool(),

/** @private

  Allows toggling of the value with the right and left arrow keys.
  Extends the behavior inherited from SC.ButtonView.
  @param evt
*/
keyDown: function(evt) {
  if (evt.which === 37 || evt.which === 38) {
    this.set('value', this.get('toggleOffValue')) ;
    return YES;
  }

  if (evt.which === 39 || evt.which === 40) {
    this.set('value', this.get('toggleOnValue')) ;
    return YES;
  }
  sc_super();
}

});