@@ -95,43 +95,53 @@ qx.Class.define("osparc.file.TreeFolderView", {
9595 return control || this . base ( arguments , id ) ;
9696 } ,
9797
98+ __openPath : function ( selectedModel ) {
99+ const folderTree = this . getChildControl ( "folder-tree" ) ;
100+ if ( selectedModel . getPath ( ) && ! selectedModel . getLoaded ( ) ) {
101+ selectedModel . setLoaded ( true ) ;
102+ folderTree . requestPathItems ( selectedModel . getLocation ( ) , selectedModel . getPath ( ) )
103+ . then ( ( ) => {
104+ folderTree . openNodeAndParents ( selectedModel ) ;
105+ folderTree . setSelection ( new qx . data . Array ( [ selectedModel ] ) ) ;
106+ } )
107+ . catch ( err => {
108+ console . error ( err ) ;
109+ selectedModel . setLoaded ( false ) ;
110+ } ) ;
111+ } else {
112+ folderTree . openNodeAndParents ( selectedModel ) ;
113+ folderTree . setSelection ( new qx . data . Array ( [ selectedModel ] ) ) ;
114+ }
115+
116+ const folderViewer = this . getChildControl ( "folder-viewer" ) ;
117+ if ( osparc . file . FilesTree . isDir ( selectedModel ) ) {
118+ folderViewer . setFolder ( selectedModel ) ;
119+ }
120+ } ,
121+
98122 __buildLayout : function ( ) {
99123 const folderTree = this . getChildControl ( "folder-tree" ) ;
100124 const folderViewer = this . getChildControl ( "folder-viewer" ) ;
101125
102126 folderTree . addListener ( "selectionChanged" , ( ) => {
103127 const selectedModel = folderTree . getSelectedItem ( ) ;
104128 if ( selectedModel ) {
105- if ( osparc . file . FilesTree . isDir ( selectedModel ) ) {
106- folderViewer . setFolder ( selectedModel ) ;
107- }
108- if ( selectedModel . getPath ( ) && ! selectedModel . getLoaded ( ) ) {
109- selectedModel . setLoaded ( true ) ;
110- folderTree . requestPathItems ( selectedModel . getLocation ( ) , selectedModel . getPath ( ) ) ;
111- }
129+ this . __openPath ( selectedModel ) ;
112130 }
113131 } , this ) ;
114132
115133 folderViewer . addListener ( "openItemSelected" , e => {
116134 const selectedModel = e . getData ( ) ;
117135 if ( selectedModel ) {
118- if ( osparc . file . FilesTree . isDir ( selectedModel ) ) {
119- folderViewer . setFolder ( selectedModel ) ;
120- }
121- // this will trigger the fetching of the content
122- folderTree . openNodeAndParents ( selectedModel ) ;
123- folderTree . setSelection ( new qx . data . Array ( [ selectedModel ] ) ) ;
136+ this . __openPath ( selectedModel ) ;
124137 }
125138 } , this ) ;
126139
127140 folderViewer . addListener ( "folderUp" , e => {
128141 const currentFolder = e . getData ( ) ;
129142 const parent = folderTree . getParent ( currentFolder ) ;
130143 if ( parent ) {
131- folderTree . setSelection ( new qx . data . Array ( [ parent ] ) ) ;
132- if ( osparc . file . FilesTree . isDir ( parent ) ) {
133- folderViewer . setFolder ( parent ) ;
134- }
144+ this . __openPath ( parent ) ;
135145 }
136146 } , this ) ;
137147 } ,
0 commit comments