@@ -95,43 +95,49 @@ 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+ } else {
108+ folderTree . openNodeAndParents ( selectedModel ) ;
109+ folderTree . setSelection ( new qx . data . Array ( [ selectedModel ] ) ) ;
110+ }
111+
112+ const folderViewer = this . getChildControl ( "folder-viewer" ) ;
113+ if ( osparc . file . FilesTree . isDir ( selectedModel ) ) {
114+ folderViewer . setFolder ( selectedModel ) ;
115+ }
116+ } ,
117+
98118 __buildLayout : function ( ) {
99119 const folderTree = this . getChildControl ( "folder-tree" ) ;
100120 const folderViewer = this . getChildControl ( "folder-viewer" ) ;
101121
102122 folderTree . addListener ( "selectionChanged" , ( ) => {
103123 const selectedModel = folderTree . getSelectedItem ( ) ;
104124 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- }
125+ this . __openPath ( selectedModel ) ;
112126 }
113127 } , this ) ;
114128
115129 folderViewer . addListener ( "openItemSelected" , e => {
116130 const selectedModel = e . getData ( ) ;
117131 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 ] ) ) ;
132+ this . __openPath ( selectedModel ) ;
124133 }
125134 } , this ) ;
126135
127136 folderViewer . addListener ( "folderUp" , e => {
128137 const currentFolder = e . getData ( ) ;
129138 const parent = folderTree . getParent ( currentFolder ) ;
130139 if ( parent ) {
131- folderTree . setSelection ( new qx . data . Array ( [ parent ] ) ) ;
132- if ( osparc . file . FilesTree . isDir ( parent ) ) {
133- folderViewer . setFolder ( parent ) ;
134- }
140+ this . __openPath ( parent ) ;
135141 }
136142 } , this ) ;
137143 } ,
0 commit comments