1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <!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-TreeModel'>/**
- </span> * Adds custom behavior for left/right keyboard navigation for use with a tree.
- * Depends on the view having an expand and collapse method which accepts a
- * record.
- *
- * @private
- */
- Ext.define('Ext.selection.TreeModel', {
- extend: 'Ext.selection.RowModel',
- alias: 'selection.treemodel',
-
- // typically selection models prune records from the selection
- // model when they are removed, because the TreeView constantly
- // adds/removes records as they are expanded/collapsed
- pruneRemoved: false,
-
- onKeyRight: function(e, t) {
- var focused = this.getLastFocused(),
- view = this.view;
-
- if (focused) {
- // tree node is already expanded, go down instead
- // this handles both the case where we navigate to firstChild and if
- // there are no children to the nextSibling
- if (focused.isExpanded()) {
- this.onKeyDown(e, t);
- // if its not a leaf node, expand it
- } else if (focused.isExpandable()) {
- view.expand(focused);
- }
- }
- },
-
- onKeyLeft: function(e, t) {
- var focused = this.getLastFocused(),
- view = this.view,
- viewSm = view.getSelectionModel(),
- parentNode, parentRecord;
- if (focused) {
- parentNode = focused.parentNode;
- // if focused node is already expanded, collapse it
- if (focused.isExpanded()) {
- view.collapse(focused);
- // has a parentNode and its not root
- // TODO: this needs to cover the case where the root isVisible
- } else if (parentNode && !parentNode.isRoot()) {
- // Select a range of records when doing multiple selection.
- if (e.shiftKey) {
- viewSm.selectRange(parentNode, focused, e.ctrlKey, 'up');
- viewSm.setLastFocused(parentNode);
- // just move focus, not selection
- } else if (e.ctrlKey) {
- viewSm.setLastFocused(parentNode);
- // select it
- } else {
- viewSm.select(parentNode);
- }
- }
- }
- },
-
- onKeySpace: function(e, t) {
- this.toggleCheck(e);
- },
-
- onKeyEnter: function(e, t) {
- this.toggleCheck(e);
- },
-
- toggleCheck: function(e){
- e.stopEvent();
- var selected = this.getLastSelected();
- if (selected) {
- this.view.onCheckChange(selected);
- }
- }
- });
- </pre>
- </body>
- </html>
|