@@ -5,31 +5,26 @@ import {
5
5
} from '@jupyterlab/application' ;
6
6
7
7
import { ITranslator } from '@jupyterlab/translation' ;
8
- import { addJupyterLabThemeChangeListener } from '@jupyter/web-components' ;
9
- import { Dialog , showDialog } from '@jupyterlab/apputils' ;
10
- import { DriveListModel , DriveListView } from './drivelistmanager' ;
11
8
import { DriveIcon } from './icons' ;
12
9
import { IDocumentManager } from '@jupyterlab/docmanager' ;
13
10
import { Drive } from './contents' ;
14
- import { MultiDrivesFileBrowser } from './multidrivesbrowser' ;
15
- import { BreadCrumbs , FilterFileBrowserModel } from '@jupyterlab/filebrowser' ;
11
+ import {
12
+ FileBrowser ,
13
+ FilterFileBrowserModel ,
14
+ IFileBrowserFactory
15
+ } from '@jupyterlab/filebrowser' ;
16
16
import { ISettingRegistry } from '@jupyterlab/settingregistry' ;
17
17
import {
18
18
createToolbarFactory ,
19
19
IToolbarWidgetRegistry ,
20
20
setToolbar
21
21
} from '@jupyterlab/apputils' ;
22
- import { DriveBrowser } from './drivebrowser' ;
22
+
23
+ import { SidePanel } from '@jupyterlab/ui-components' ;
23
24
24
25
const FILE_BROWSER_FACTORY = 'FileBrowser' ;
25
26
const FILE_BROWSER_PLUGIN_ID = '@jupyter/drives:widget' ;
26
27
27
- namespace CommandIDs {
28
- export const openDrivesDialog = 'drives:open-drives-dialog' ;
29
- export const openPath = 'filebrowser:open-path' ;
30
- }
31
-
32
-
33
28
/**
34
29
* Initialization data for the @jupyter/drives extension.
35
30
*/
@@ -71,164 +66,65 @@ export async function activateAddDrivesPlugin(
71
66
toolbarRegistry : IToolbarWidgetRegistry ,
72
67
translator : ITranslator ,
73
68
restorer : ILayoutRestorer | null ,
74
- settingRegistry : ISettingRegistry
69
+ settingRegistry : ISettingRegistry ,
70
+ factory : IFileBrowserFactory
75
71
) {
76
72
console . log ( 'AddDrives plugin is activated!' ) ;
77
- const { commands } = app ;
73
+ // const { commands } = app;
78
74
const cocoDrive = new Drive ( app . docRegistry ) ;
79
75
cocoDrive . name = 'coconutDrive' ;
80
76
cocoDrive . baseUrl = '/coconut/url' ;
81
77
cocoDrive . region = '' ;
82
78
cocoDrive . status = 'active' ;
83
79
cocoDrive . provider = '' ;
84
- const peachDrive = new Drive ( app . docRegistry ) ;
85
- peachDrive . baseUrl = '/peach/url' ;
86
- peachDrive . name = 'peachDrive' ;
87
- const mangoDrive = new Drive ( app . docRegistry ) ;
88
- mangoDrive . baseUrl = '/mango/url' ;
89
- mangoDrive . name = 'mangoDrive' ;
90
- const kiwiDrive = new Drive ( app . docRegistry ) ;
91
- kiwiDrive . baseUrl = '/kiwi/url' ;
92
- kiwiDrive . name = 'kiwiDrive' ;
93
- const pearDrive = new Drive ( app . docRegistry ) ;
94
- pearDrive . baseUrl = '/pear/url' ;
95
- pearDrive . name = 'pearDrive' ;
96
- const customDrive = new Drive ( app . docRegistry ) ;
97
- customDrive . baseUrl = '/customDrive/url' ;
98
- const tomatoDrive = new Drive ( app . docRegistry ) ;
99
- tomatoDrive . baseUrl = '/tomato/url' ;
100
- tomatoDrive . name = 'tomatoDrive' ;
101
- const avocadoDrive = new Drive ( app . docRegistry ) ;
102
- avocadoDrive . baseUrl = '/avocado/url' ;
103
- avocadoDrive . name = 'avocadoDrive' ;
104
-
105
- const selectedList1 : Drive [ ] = [ ] ;
106
- const availableList1 : Drive [ ] = [
107
- avocadoDrive ,
108
- cocoDrive ,
109
- customDrive ,
110
- kiwiDrive ,
111
- mangoDrive ,
112
- peachDrive ,
113
- pearDrive ,
114
- tomatoDrive
115
- ] ;
116
-
117
- function createFilterFileBrowserModel (
118
- manager : IDocumentManager ,
119
- drive ?: Drive
120
- ) : FilterFileBrowserModel {
80
+ manager . services . contents . addDrive ( cocoDrive ) ;
81
+ const bananaDrive = new Drive ( app . docRegistry ) ;
82
+ bananaDrive . name = 'bananaDrive' ;
83
+ bananaDrive . baseUrl = '/banana/url' ;
84
+ bananaDrive . region = '' ;
85
+ bananaDrive . status = 'active' ;
86
+ bananaDrive . provider = '' ;
87
+ manager . services . contents . addDrive ( bananaDrive ) ;
88
+
89
+ const DriveList : Drive [ ] = [ cocoDrive , bananaDrive ] ;
90
+
91
+ function addNewDriveToPanel ( drive : Drive ) {
92
+ const panel = new SidePanel ( ) ;
121
93
const driveModel = new FilterFileBrowserModel ( {
122
94
manager : manager ,
123
- driveName : drive ? .name
95
+ driveName : drive . name
124
96
} ) ;
125
97
126
- return driveModel ;
127
- }
128
- function buildInitialBrowserModelList ( selectedDrives : Drive [ ] ) {
129
- const browserModelList : FilterFileBrowserModel [ ] = [ ] ;
130
- const localDriveModel = createFilterFileBrowserModel ( manager ) ;
131
- browserModelList . push ( localDriveModel ) ;
132
- return browserModelList ;
133
- }
134
- const browserModelList = buildInitialBrowserModelList ( selectedList1 ) ;
135
- const trans = translator . load ( 'jupyter_drives' ) ;
136
- const panel = new MultiDrivesFileBrowser ( {
137
- modelList : browserModelList ,
138
- id : '' ,
139
- manager
140
- } ) ;
141
- panel . title . icon = DriveIcon ;
142
- panel . title . iconClass = 'jp-SideBar-tabIcon' ;
143
- panel . title . caption = 'Browse Drives' ;
144
- panel . id = 'panel-file-browser' ;
145
- if ( restorer ) {
146
- restorer . add ( panel , 'drive-browser' ) ;
147
- }
148
- app . shell . add ( panel , 'left' , { rank : 102 } ) ;
149
-
150
- setToolbar (
151
- panel ,
152
- createToolbarFactory (
153
- toolbarRegistry ,
154
- settingRegistry ,
155
- FILE_BROWSER_FACTORY ,
156
- FILE_BROWSER_PLUGIN_ID ,
157
- translator
158
- )
159
- ) ;
160
- function addToBrowserModelList (
161
- browserModelList : FilterFileBrowserModel [ ] ,
162
- addedDrive : Drive
163
- ) {
164
- const addedDriveModel = createFilterFileBrowserModel ( manager , addedDrive ) ;
165
- browserModelList . push ( addedDriveModel ) ;
166
- return browserModelList ;
167
- }
168
- function addDriveContentsToPanel (
169
- browserModelList : FilterFileBrowserModel [ ] ,
170
- addedDrive : Drive ,
171
- panel : MultiDrivesFileBrowser
172
- ) {
173
- const addedDriveModel = createFilterFileBrowserModel ( manager , addedDrive ) ;
174
- browserModelList = addToBrowserModelList ( browserModelList , addedDrive ) ;
175
- manager . services . contents . addDrive ( addedDrive ) ;
176
- const AddedDriveBrowser = new DriveBrowser ( {
177
- model : addedDriveModel ,
178
- breadCrumbs : new BreadCrumbs ( { model : addedDriveModel } ) ,
179
- driveName : addedDrive . name
98
+ const driveBrowser = new FileBrowser ( {
99
+ id : drive . name + '-browser' ,
100
+ model : driveModel
180
101
} ) ;
181
- panel . addWidget ( AddedDriveBrowser ) ;
182
- }
183
-
184
- /* Dialog to select the drive */
185
- addJupyterLabThemeChangeListener ( ) ;
186
- const selectedDrivesModelMap = new Map < Drive [ ] , DriveListModel > ( ) ;
187
- let selectedDrives : Drive [ ] = selectedList1 ;
188
- const availableDrives : Drive [ ] = availableList1 ;
189
- let driveListModel = selectedDrivesModelMap . get ( selectedDrives ) ;
190
102
191
- commands . addCommand ( CommandIDs . openDrivesDialog , {
192
- execute : async args => {
193
- if ( ! driveListModel ) {
194
- driveListModel = new DriveListModel ( availableDrives , selectedDrives ) ;
195
- selectedDrivesModelMap . set ( selectedDrives , driveListModel ) ;
196
- } else {
197
- selectedDrives = driveListModel . selectedDrives ;
198
- selectedDrivesModelMap . set ( selectedDrives , driveListModel ) ;
199
- }
200
- async function onDriveAdded ( selectedDrives : Drive [ ] ) {
201
- if ( driveListModel ) {
202
- const response = driveListModel . sendConnectionRequest ( selectedDrives ) ;
203
- if ( ( await response ) === true ) {
204
- addDriveContentsToPanel (
205
- browserModelList ,
206
- selectedDrives [ selectedDrives . length - 1 ] ,
207
- panel
208
- ) ;
209
- } else {
210
- console . warn ( 'Connection with the drive was not possible' ) ;
211
- }
212
- }
213
- }
214
-
215
- if ( driveListModel ) {
216
- showDialog ( {
217
- body : new DriveListView ( driveListModel , app . docRegistry ) ,
218
- buttons : [ Dialog . cancelButton ( ) ]
219
- } ) ;
220
- }
221
-
222
- driveListModel . stateChanged . connect ( async ( ) => {
223
- if ( driveListModel ) {
224
- onDriveAdded ( driveListModel . selectedDrives ) ;
225
- }
226
- } ) ;
227
- } ,
228
-
229
- icon : DriveIcon . bindprops ( { stylesheet : 'menuItem' } ) ,
230
- caption : trans . __ ( 'Add drives to filebrowser.' ) ,
231
- label : trans . __ ( 'Add Drives To Filebrowser' )
103
+ panel . addWidget ( driveBrowser ) ;
104
+ panel . title . icon = DriveIcon ;
105
+ panel . title . iconClass = 'jp-SideBar-tabIcon' ;
106
+ panel . title . caption = 'Browse Drives' ;
107
+
108
+ panel . id = drive . name + '-file-browser' ;
109
+
110
+ if ( restorer ) {
111
+ restorer . add ( panel , drive . name + '-browser' ) ;
112
+ }
113
+ app . shell . add ( panel , 'left' , { rank : 102 } ) ;
114
+
115
+ setToolbar (
116
+ panel ,
117
+ createToolbarFactory (
118
+ toolbarRegistry ,
119
+ settingRegistry ,
120
+ FILE_BROWSER_FACTORY ,
121
+ FILE_BROWSER_PLUGIN_ID ,
122
+ translator
123
+ )
124
+ ) ;
125
+ }
126
+ DriveList . forEach ( drive => {
127
+ addNewDriveToPanel ( drive ) ;
232
128
} ) ;
233
129
}
234
130
0 commit comments