|
15 | 15 | // ***************************************************************************** |
16 | 16 |
|
17 | 17 | import { ContainerModule } from '@theia/core/shared/inversify'; |
18 | | -import { FileDialogService } from '../../browser/file-dialog/file-dialog-service'; |
| 18 | +import { DefaultFileDialogService, FileDialogService } from '../../browser/file-dialog/file-dialog-service'; |
19 | 19 | import { ElectronFileDialogService } from './electron-file-dialog-service'; |
| 20 | +import * as electronRemote from '@theia/core/electron-shared/@electron/remote'; |
| 21 | +import { LocationListRenderer, LocationListRendererFactory, LocationListRendererOptions } from '../../browser/location'; |
| 22 | +import { FileDialogHiddenFilesToggleRenderer, HiddenFilesToggleRendererFactory } from '../../browser/file-dialog/file-dialog-hidden-files-renderer'; |
| 23 | +import { FileDialogTree } from '../../browser/file-dialog/file-dialog-tree'; |
| 24 | +import { FileDialogTreeFiltersRenderer, FileDialogTreeFiltersRendererFactory, FileDialogTreeFiltersRendererOptions } from '../../browser/file-dialog'; |
20 | 25 |
|
21 | 26 | export default new ContainerModule(bind => { |
22 | | - bind(ElectronFileDialogService).toSelf().inSingletonScope(); |
23 | | - bind(FileDialogService).toService(ElectronFileDialogService); |
| 27 | + const useNativeFileDialogs: boolean = !electronRemote.app.commandLine.hasSwitch('no-native-window-frame'); |
| 28 | + if (useNativeFileDialogs) { |
| 29 | + bind(ElectronFileDialogService).toSelf().inSingletonScope(); |
| 30 | + bind(FileDialogService).toService(ElectronFileDialogService); |
| 31 | + } else { |
| 32 | + bind(DefaultFileDialogService).toSelf().inSingletonScope(); |
| 33 | + bind(FileDialogService).toService(DefaultFileDialogService); |
| 34 | + bind(LocationListRendererFactory).toFactory(context => (options: LocationListRendererOptions) => { |
| 35 | + const childContainer = context.container.createChild(); |
| 36 | + childContainer.bind(LocationListRendererOptions).toConstantValue(options); |
| 37 | + childContainer.bind(LocationListRenderer).toSelf().inSingletonScope(); |
| 38 | + return childContainer.get(LocationListRenderer); |
| 39 | + }); |
| 40 | + bind(FileDialogTreeFiltersRendererFactory).toFactory(context => (options: FileDialogTreeFiltersRendererOptions) => { |
| 41 | + const childContainer = context.container.createChild(); |
| 42 | + childContainer.bind(FileDialogTreeFiltersRendererOptions).toConstantValue(options); |
| 43 | + childContainer.bind(FileDialogTreeFiltersRenderer).toSelf().inSingletonScope(); |
| 44 | + return childContainer.get(FileDialogTreeFiltersRenderer); |
| 45 | + }); |
| 46 | + bind(HiddenFilesToggleRendererFactory).toFactory(({ container }) => (fileDialogTree: FileDialogTree) => { |
| 47 | + const child = container.createChild(); |
| 48 | + child.bind(FileDialogTree).toConstantValue(fileDialogTree); |
| 49 | + child.bind(FileDialogHiddenFilesToggleRenderer).toSelf().inSingletonScope(); |
| 50 | + return child.get(FileDialogHiddenFilesToggleRenderer); |
| 51 | + }); |
| 52 | + } |
24 | 53 | }); |
0 commit comments