Advertisement
zinch

ExtJS 4 Editable Tree Panel

Jun 19th, 2014
480
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*global Ext:false */
  2. Ext.onReady(function() {
  3.     var store = Ext.create('Ext.data.TreeStore', {
  4.         root: {
  5.             expanded: true,
  6.             children: [{
  7.                 text: "detention",
  8.                 leaf: true
  9.             }, {
  10.                 text: "homework",
  11.                 expanded: true,
  12.                 children: [{
  13.                     text: "book report",
  14.                     leaf: true
  15.                 }, {
  16.                     text: "alegrbra",
  17.                     leaf: true
  18.                 }]
  19.             }, {
  20.                 text: "buy lottery tickets",
  21.                 leaf: true
  22.             }]
  23.         }
  24.     });
  25.  
  26.    
  27.    
  28.     Ext.define('TreeCellEditing', {
  29.         alias: 'plugin.treecellediting',
  30.         extend: 'Ext.grid.plugin.CellEditing',
  31.         init: function(tree) {
  32.             var tree_column = tree.headerCt.down('treecolumn');
  33.             tree_column.editor = tree_column.editor ||
  34.                                  { xtype: 'textfield' };
  35.             this.callParent(arguments);
  36.         },
  37.        
  38.         getEditingContext: function(record, columnHeader) {
  39.             var me = this,
  40.             grid = me.grid,
  41.             store = grid.store,
  42.             rowIdx,
  43.             colIdx,
  44.             view = grid.getView(),
  45.             root = grid.getRootNode(),
  46.             value;
  47.            
  48.             if (Ext.isNumber(record)) {
  49.                 rowIdx = record;
  50.                 record = root.getChildAt(rowIdx);
  51.             } else {
  52.                 rowIdx = root.indexOf(record);
  53.             }
  54.            
  55.             if (Ext.isNumber(columnHeader)) {
  56.                 colIdx = columnHeader;
  57.                 columnHeader = grid.headerCt.getHeaderAtIndex(colIdx);
  58.             } else {
  59.                 colIdx = columnHeader.getIndex();
  60.             }
  61.            
  62.             value = record.get(columnHeader.dataIndex);
  63.            
  64.             return {
  65.                 grid: grid,
  66.                 record: record,
  67.                 field: columnHeader.dataIndex,
  68.                 value: value,
  69.                 row: view.getNode(rowIdx),
  70.                 column: columnHeader,
  71.                 rowIdx: rowIdx,
  72.                 colIdx: colIdx
  73.             };
  74.         }
  75.     });
  76.    
  77.     var tree_editor = Ext.create('TreeCellEditing', {clicksToEdit: 2});
  78.    
  79.     var tree = Ext.create('Ext.tree.Panel', {
  80.         title: 'Simple Tree',
  81.         width: 200,
  82.         height: 150,
  83.         store: store,
  84.         rootVisible: false,
  85.         renderTo: Ext.getBody(),
  86.         plugins: [
  87.             tree_editor
  88.         ]
  89.     });
  90. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement