Browse Source

Add mouse, key, and selection handling

Steven Silvester 5 years ago
parent
commit
2ad4edfa5d
1 changed files with 22 additions and 2 deletions
  1. 22 2
      packages/csvviewer/src/widget.ts

+ 22 - 2
packages/csvviewer/src/widget.ts

@@ -12,7 +12,14 @@ import {
 
 import { PromiseDelegate } from '@lumino/coreutils';
 
-import { DataGrid, TextRenderer, CellRenderer } from '@lumino/datagrid';
+import {
+  BasicKeyHandler,
+  BasicMouseHandler,
+  BasicSelectionModel,
+  DataGrid,
+  TextRenderer,
+  CellRenderer
+} from '@lumino/datagrid';
 
 import { Message } from '@lumino/messaging';
 
@@ -249,6 +256,15 @@ export class CSVViewer extends Widget {
     });
     this._grid.addClass(CSV_GRID_CLASS);
     this._grid.headerVisibility = 'all';
+    this._grid.keyHandler = new BasicKeyHandler();
+    this._grid.mouseHandler = new BasicMouseHandler();
+    this._grid.copyConfig = {
+      separator: '\t',
+      format: DataGrid.copyFormatGeneric,
+      headers: 'all',
+      warningThreshold: 1e6
+    };
+
     layout.addWidget(this._grid);
 
     this._searchService = new GridSearchService(this._grid);
@@ -351,7 +367,11 @@ export class CSVViewer extends Widget {
     let data: string = this._context.model.toString();
     let delimiter = this._delimiter;
     let oldModel = this._grid.dataModel as DSVModel;
-    this._grid.dataModel = new DSVModel({ data, delimiter });
+    const dataModel = (this._grid.dataModel = new DSVModel({
+      data,
+      delimiter
+    }));
+    this._grid.selectionModel = new BasicSelectionModel({ dataModel });
     if (oldModel) {
       oldModel.dispose();
     }