4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>The source code</title>
6 <link href="../prettify/prettify.css" type="text/css" rel="stylesheet" />
7 <script type="text/javascript" src="../prettify/prettify.js"></script>
8 <style type="text/css">
9 .highlight { display: block; background-color: #ddd; }
11 <script type="text/javascript">
12 function highlight() {
13 document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
17 <body onload="prettyPrint(); highlight();">
18 <pre class="prettyprint lang-js"><span id='Ext-selection-DataViewModel'>/**
19 </span> * @class Ext.selection.DataViewModel
22 Ext.define('Ext.selection.DataViewModel', {
23 extend: 'Ext.selection.Model',
25 requires: ['Ext.util.KeyNav'],
27 deselectOnContainerClick: true,
29 <span id='Ext-selection-DataViewModel-cfg-enableKeyNav'> /**
30 </span> * @cfg {Boolean} enableKeyNav
32 * Turns on/off keyboard navigation within the DataView. Defaults to true.
36 constructor: function(cfg){
38 <span id='Ext-selection-DataViewModel-event-deselect'> /**
39 </span> * @event deselect
40 * Fired after a record is deselected
41 * @param {Ext.selection.DataViewModel} this
42 * @param {Ext.data.Model} record The deselected record
46 <span id='Ext-selection-DataViewModel-event-select'> /**
47 </span> * @event select
48 * Fired after a record is selected
49 * @param {Ext.selection.DataViewModel} this
50 * @param {Ext.data.Model} record The selected record
54 this.callParent(arguments);
57 bindComponent: function(view) {
65 me.bind(view.getStore());
67 view.on(view.triggerEvent, me.onItemClick, me);
68 view.on(view.triggerCtEvent, me.onContainerClick, me);
70 view.on(eventListeners);
72 if (me.enableKeyNav) {
77 onItemClick: function(view, record, item, index, e) {
78 this.selectWithEvent(record, e);
81 onContainerClick: function() {
82 if (this.deselectOnContainerClick) {
87 initKeyNav: function(view) {
91 view.on('render', Ext.Function.bind(me.initKeyNav, me, [view], 0), me, {single: true});
98 me.keyNav = Ext.create('Ext.util.KeyNav', view.el, {
99 down: Ext.pass(me.onNavKey, [1], me),
100 right: Ext.pass(me.onNavKey, [1], me),
101 left: Ext.pass(me.onNavKey, [-1], me),
102 up: Ext.pass(me.onNavKey, [-1], me),
107 onNavKey: function(step) {
111 selected = me.getSelection()[0],
112 numRecords = me.view.store.getCount(),
116 idx = view.indexOf(view.getNode(selected)) + step;
122 idx = numRecords - 1;
123 } else if (idx >= numRecords) {
130 // Allow the DataView to update the ui
131 onSelectChange: function(record, isSelected, suppressEvent) {
137 if (!suppressEvent) {
138 allowSelect = me.fireEvent('beforeselect', me, record) !== false;
141 view.onItemSelect(record);
142 if (!suppressEvent) {
143 me.fireEvent('select', me, record);
147 view.onItemDeselect(record);
148 if (!suppressEvent) {
149 me.fireEvent('deselect', me, record);