123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>The source code</title>
- <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
- <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
- <style type="text/css">
- .highlight { display: block; background-color: #ddd; }
- </style>
- <script type="text/javascript">
- function highlight() {
- document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
- }
- </script>
- </head>
- <body onload="prettyPrint(); highlight();">
- <pre class="prettyprint lang-js"><span id='Ext-selection-DataViewModel'>/**
- </span> * @private
- */
- Ext.define('Ext.selection.DataViewModel', {
- extend: 'Ext.selection.Model',
- requires: ['Ext.util.KeyNav'],
- deselectOnContainerClick: true,
- <span id='Ext-selection-DataViewModel-cfg-enableKeyNav'> /**
- </span> * @cfg {Boolean} enableKeyNav
- *
- * Turns on/off keyboard navigation within the DataView.
- */
- enableKeyNav: true,
- constructor: function(cfg){
- this.addEvents(
- <span id='Ext-selection-DataViewModel-event-beforedeselect'> /**
- </span> * @event beforedeselect
- * Fired before a record is deselected. If any listener returns false, the
- * deselection is cancelled.
- * @param {Ext.selection.DataViewModel} this
- * @param {Ext.data.Model} record The deselected record
- */
- 'beforedeselect',
- <span id='Ext-selection-DataViewModel-event-beforeselect'> /**
- </span> * @event beforeselect
- * Fired before a record is selected. If any listener returns false, the
- * selection is cancelled.
- * @param {Ext.selection.DataViewModel} this
- * @param {Ext.data.Model} record The selected record
- */
- 'beforeselect',
- <span id='Ext-selection-DataViewModel-event-deselect'> /**
- </span> * @event deselect
- * Fired after a record is deselected
- * @param {Ext.selection.DataViewModel} this
- * @param {Ext.data.Model} record The deselected record
- */
- 'deselect',
- <span id='Ext-selection-DataViewModel-event-select'> /**
- </span> * @event select
- * Fired after a record is selected
- * @param {Ext.selection.DataViewModel} this
- * @param {Ext.data.Model} record The selected record
- */
- 'select'
- );
- this.callParent(arguments);
- },
- bindComponent: function(view) {
- var me = this,
- eventListeners = {
- refresh: me.refresh,
- scope: me
- };
- me.view = view;
- me.bindStore(view.getStore());
- eventListeners[view.triggerEvent] = me.onItemClick;
- eventListeners[view.triggerCtEvent] = me.onContainerClick;
- view.on(eventListeners);
- if (me.enableKeyNav) {
- me.initKeyNav(view);
- }
- },
- onItemClick: function(view, record, item, index, e) {
- this.selectWithEvent(record, e);
- },
- onContainerClick: function() {
- if (this.deselectOnContainerClick) {
- this.deselectAll();
- }
- },
- initKeyNav: function(view) {
- var me = this;
- if (!view.rendered) {
- view.on({
- render: Ext.Function.bind(me.initKeyNav, me, [view]),
- single: true
- });
- return;
- }
- view.el.set({
- tabIndex: -1
- });
- me.keyNav = new Ext.util.KeyNav({
- target: view.el,
- ignoreInputFields: true,
- down: Ext.pass(me.onNavKey, [1], me),
- right: Ext.pass(me.onNavKey, [1], me),
- left: Ext.pass(me.onNavKey, [-1], me),
- up: Ext.pass(me.onNavKey, [-1], me),
- scope: me
- });
- },
- onNavKey: function(step) {
- step = step || 1;
- var me = this,
- view = me.view,
- selected = me.getSelection()[0],
- numRecords = me.view.store.getCount(),
- idx;
- if (selected) {
- idx = view.indexOf(view.getNode(selected)) + step;
- } else {
- idx = 0;
- }
- if (idx < 0) {
- idx = numRecords - 1;
- } else if (idx >= numRecords) {
- idx = 0;
- }
- me.select(idx);
- },
- // Allow the DataView to update the ui
- onSelectChange: function(record, isSelected, suppressEvent, commitFn) {
- var me = this,
- view = me.view,
- eventName = isSelected ? 'select' : 'deselect';
- if ((suppressEvent || me.fireEvent('before' + eventName, me, record)) !== false &&
- commitFn() !== false) {
- if (view) {
- if (isSelected) {
- view.onItemSelect(record);
- } else {
- view.onItemDeselect(record);
- }
- }
- if (!suppressEvent) {
- me.fireEvent(eventName, me, record);
- }
- }
- },
-
- destroy: function(){
- Ext.destroy(this.keyNav);
- this.callParent();
- }
- });
- </pre>
- </body>
- </html>
|