@@ -238,6 +238,10 @@ export class DataPreview {
238238 // saves data view config, or filtered .arrow, .csv, .json(s), .md, .yml, etc. data
239239 this . saveData ( message . data , message . fileType ) ;
240240 break ;
241+ case 'openFile' :
242+ // shows open file dialog for lauching new data preview
243+ this . openFile ( ) ;
244+ break ;
241245 case 'loadView' :
242246 // launch new view
243247 this . loadView ( message . viewName , message . uri ) ;
@@ -280,6 +284,29 @@ export class DataPreview {
280284 }
281285 }
282286
287+
288+ /**
289+ * Shows open file dialog for launchign new data preview.
290+ */
291+ private async openFile ( ) {
292+ // display open file dialog
293+ let openFolderUri : Uri = Uri . parse ( this . _dataUrl ) . with ( { scheme : 'file' } ) ;
294+ const workspaceFolders : Array < WorkspaceFolder > = workspace . workspaceFolders ;
295+ if ( workspaceFolders && workspaceFolders . length >= 1 ) {
296+ // change open file folder uri to the 1st workspace folder, usuallay workspace root
297+ openFolderUri = workspaceFolders [ 0 ] . uri ;
298+ }
299+ const selectedFiles : Array < Uri > = await window . showOpenDialog ( {
300+ defaultUri : openFolderUri ,
301+ canSelectMany : false ,
302+ canSelectFolders : false
303+ } ) ;
304+ if ( selectedFiles && selectedFiles . length >= 1 ) {
305+ // launch new data preview for the selected data file
306+ this . loadView ( 'data.preview' , selectedFiles [ 0 ] . fsPath ) ;
307+ }
308+ }
309+
283310 /**
284311 * Launches new view via commands.executeCommand interface.
285312 * @param viewName View name to launch.
@@ -891,6 +918,7 @@ export class DataPreview {
891918 }
892919 } // end of saveData()
893920
921+ /*-------------------- TODO: move these to new markdown.data.provider impl. and interface --------------------*/
894922
895923 /**
896924 * Converts CSV to markdown table.
0 commit comments