/**
 * @class Ext.BreadcrumbBar
 * @extend Ext.toolbar
 * @xtype breadcrumbbar
 * 
 * 
 * A toolbar that displays hierarchical data from a {@link Ext.data.TreeStore TreeStore}
 * as a trail of breadcrumb buttons.  Each button represents a node in the store.  A click
 * on a button will "select" that node in the tree.  Non-leaf nodes will display their
 * child nodes on a dropdown menu of the corresponding button in the breadcrumb trail,
 * and a click on an item in the menu will trigger selection of the corresponding child
 * node.
 *
 * The selection can be set programmatically  using {@link #setSelection}, or retrieved
 * using {@link #getSelection}.
 */
 
/**
 * @cfg {String} buttonUI 
 * Button UI to use for breadcrumb items
 */
 
/**
 * @cfg {String} displayField 
 * The name of the field in the data model to display in the navigation items of
 * this breadcrumb toolbar
 */
 
/**
 * @cfg {Boolean} showIcons 
 *
 * Controls whether or not icons of tree nodes are displayed in the breadcrumb
 * buttons.  There are 3 possible values for this config:
 *
 * 1. unspecified (`null`) - the default value. In this mode only icons that are
 * specified in the tree data using ({@link Ext.data.NodeInterface#icon icon}
 * or {@link Ext.data.NodeInterface#iconCls iconCls} will be displayed, but the
 * default "folder" and "leaf" icons will not be displayed.
 *
 * 2. `true` - Icons specified in the tree data will be displayed, and the default
 * "folder" and "leaf" icons will be displayed for nodes that do not specify
 * an `icon` or `iconCls`.
 *
 * 3. `false` - No icons will be displayed in the breadcrumb buttons, only text.
 */
 
/**
 * @cfg {Boolean} showMenuIcons 
 *
 * Controls whether or not icons of tree nodes are displayed in the breadcrumb
 * menu items. There are 3 possible values for this config:
 *
 * 1. unspecified (`null`) - the default value. In this mode only icons that are
 * specified in the tree data using ({@link Ext.data.NodeInterface#icon icon}
 * or {@link Ext.data.NodeInterface#iconCls iconCls} will be displayed, but the
 * default "folder" and "leaf" icons will not be displayed.
 *
 * 2. `true` - Icons specified in the tree data will be displayed, and the default
 * "folder" and "leaf" icons will be displayed for nodes that do not specify
 * an `icon` or `iconCls`.
 *
 * 3. `false` - No icons will be displayed on the breadcrumb menu items, only text.
 */
 
/**
 * @cfg {Ext.data.TreeStore} store
 * The TreeStore that this breadcrumb toolbar should use as its data source
 */
 
/**
 * @cfg {Boolean} useSplitButtons 
 * `false` to use regular {@link Ext.Button Button}s instead of {@link
 * Ext.SplitButton Split Buttons}.  When `true`, a click on the body of a button
 * will navigate to the specified node, and a click on the arrow will show a menu
 * containing the the child nodes.  When `false`, the only mode of navigation is
 * the menu, since a click anywhere on the button will show the menu.
 */
 
/**
 * @cfg {Ext.data.TreeModel/String} selection
 * The selected node, or `"root"` to select the root node
 * @accessor
 */
 
/**
 * @cfg {Ext.menu.Menu/Boolean/Object} menu
 * A menu or menu configuration. This can be a reference to a menu instance, a menu
 * config object or the `xtype` alias of a {@link Ext.menu.Menu menu}-derived class.
 */
 
/**
 * @cfg {Object} buttonConfig
 * Button config to be added to button instance
 */
 
/**
 * @cfg {String} btnCls
 * The CSS class to add to this buttons widget element
 */
 
/**
@property {Boolean} isBreadcrumb
* The value `true` to identify an object as an instance of this or derived class.
@readonly
*/
 
/**
* @cfg publishes
@inheritdoc
*/
 
/**
* @cfg twoWayBindable
@inheritdoc
*/
 
/**
@event selectionchange
* Fires when the selected node changes. At render time, this event will fire
* indicating that the configured {@link #selection} has been selected.
@param {Ext.BreadcrumbBar} this 
@param {Ext.data.TreeModel} node The selected node.
@param {Ext.data.TreeModel} prevNode The previously selected node.
*/
 
/**
@event change
* Fires when the user changes the selected record. In contrast to the 
{@link #selectionchange} event, this does
* *not* fire at render time, only in response to user activity.
@param {Ext.BreadcrumbBar} this 
@param {Ext.data.TreeModel} node The selected node.
@param {Ext.data.TreeModel} prevNode The previously selected node.
*/
 
/**
* Internal cache of buttons that are re-used as the items of this container
* as navigation occurs.
@property {Ext.SplitButton[]/Ext.Button[]} buttons
@private
*/
 
 
/**
@method getSelection
* Returns the currently selected {@link Ext.data.TreeModel node}.
@return {Ext.data.TreeModel} node The selected node (or null if there is no
* selection).
*/
 
/**
@method setSelection
* Selects the passed {@link Ext.data.TreeModel node} in the breadcrumb component.
@param {Ext.data.TreeModel} node The node in the breadcrumb {@link #store} to
* select as the active node.
@return {Ext.BreadcrumbBar} this The breadcrumb component
*/
 
/**
* Update button menu
* If menu is null or false or there are no child nodes 
* then no need to display menu
@param {Ext.SplitButton[]} buttons Internal cache of buttons
@param {Boolean} refreshMenuItems `true` to reset menu items
@param {Boolean} forceCreate `true` to recreate menu on button
*/
 
/**
* Handles a click on a breadcrumb button
@private
@param {Ext.SplitButton} button 
@param {Ext.event.Event} e 
*/
 
/**
* Handles a click on a button menu
@private
@param {Ext.menu.Menu} menu 
@param {Ext.menu.Item} item 
@param {Ext.event.Event} e 
*/
 
/**
* Returns button menu items
@private
@param {String} nodeId 
*/
 
/**
* Remove all breadcrumb buttons
*/
 
/**
* Handle breadcrumb store data update 
* such as (`add`, `remove`, `update`, `refresh`).
* Checks with button text and update button arrow
*/
 
 
/**
* Handle store `update` events
*/
 
/**
* Handler store `removeAll` method
*/