@theia/filesystem 1.25.0-next.0 → 1.25.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,6 +6,7 @@ import { DirNode } from '../file-tree';
6
6
  import { OpenFileDialogFactory, OpenFileDialogProps, SaveFileDialogFactory, SaveFileDialogProps } from './file-dialog';
7
7
  import { FileService } from '../file-service';
8
8
  import { EnvVariablesServer } from '@theia/core/lib/common/env-variables';
9
+ import { UserWorkingDirectoryProvider } from '@theia/core/lib/browser/user-working-directory-provider';
9
10
  export declare const FileDialogService: unique symbol;
10
11
  export interface FileDialogService {
11
12
  showOpenDialog(props: OpenFileDialogProps & {
@@ -21,6 +22,7 @@ export declare class DefaultFileDialogService implements FileDialogService {
21
22
  protected readonly openFileDialogFactory: OpenFileDialogFactory;
22
23
  protected readonly labelProvider: LabelProvider;
23
24
  protected readonly saveFileDialogFactory: SaveFileDialogFactory;
25
+ protected readonly rootProvider: UserWorkingDirectoryProvider;
24
26
  showOpenDialog(props: OpenFileDialogProps & {
25
27
  canSelectMany: true;
26
28
  }, folder?: FileStat): Promise<MaybeArray<URI> | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"file-dialog-service.d.ts","sourceRoot":"","sources":["../../../src/browser/file-dialog/file-dialog-service.ts"],"names":[],"mappings":"AAiBA,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E,eAAO,MAAM,iBAAiB,eAA8B,CAAC;AAC7D,MAAM,WAAW,iBAAiB;IAE9B,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG;QAAE,aAAa,EAAE,IAAI,CAAA;KAAE,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IAC9H,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IACxF,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IAEpG,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAAA;CAE1F;AAED,qBACa,wBAAyB,YAAW,iBAAiB;IAG9D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAGpD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAEb,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IACxE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAEzF,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG;QAAE,aAAa,EAAE,IAAI,CAAA;KAAE,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAC7H,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;IAkBvF,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;cAW7E,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;CAcrF"}
1
+ {"version":3,"file":"file-dialog-service.d.ts","sourceRoot":"","sources":["../../../src/browser/file-dialog/file-dialog-service.ts"],"names":[],"mappings":"AAiBA,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,yDAAyD,CAAC;AAEvG,eAAO,MAAM,iBAAiB,eAA8B,CAAC;AAC7D,MAAM,WAAW,iBAAiB;IAE9B,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG;QAAE,aAAa,EAAE,IAAI,CAAA;KAAE,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IAC9H,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IACxF,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IAEpG,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAAA;CAE1F;AAED,qBACa,wBAAyB,YAAW,iBAAiB;IAG9D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAGpD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAEb,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IACxE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IACzD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,4BAA4B,CAAC;IAE9F,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG;QAAE,aAAa,EAAE,IAAI,CAAA;KAAE,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAC7H,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;IAkBvF,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;cAW7E,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;CAcrF"}
@@ -26,12 +26,12 @@ var __metadata = (this && this.__metadata) || function (k, v) {
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
27
  exports.DefaultFileDialogService = exports.FileDialogService = void 0;
28
28
  const inversify_1 = require("@theia/core/shared/inversify");
29
- const uri_1 = require("@theia/core/lib/common/uri");
30
29
  const browser_1 = require("@theia/core/lib/browser");
31
30
  const file_tree_1 = require("../file-tree");
32
31
  const file_dialog_1 = require("./file-dialog");
33
32
  const file_service_1 = require("../file-service");
34
33
  const env_variables_1 = require("@theia/core/lib/common/env-variables");
34
+ const user_working_directory_provider_1 = require("@theia/core/lib/browser/user-working-directory-provider");
35
35
  exports.FileDialogService = Symbol('FileDialogService');
36
36
  let DefaultFileDialogService = class DefaultFileDialogService {
37
37
  async showOpenDialog(props, folder) {
@@ -63,7 +63,7 @@ let DefaultFileDialogService = class DefaultFileDialogService {
63
63
  async getRootNode(folderToOpen) {
64
64
  const folderExists = folderToOpen && await this.fileService.exists(folderToOpen.resource);
65
65
  const folder = folderToOpen && folderExists ? folderToOpen : {
66
- resource: new uri_1.default(await this.environments.getHomeDirUri()),
66
+ resource: await this.rootProvider.getUserWorkingDir(),
67
67
  isDirectory: true
68
68
  };
69
69
  const folderUri = folder.resource;
@@ -96,6 +96,10 @@ __decorate([
96
96
  (0, inversify_1.inject)(file_dialog_1.SaveFileDialogFactory),
97
97
  __metadata("design:type", Function)
98
98
  ], DefaultFileDialogService.prototype, "saveFileDialogFactory", void 0);
99
+ __decorate([
100
+ (0, inversify_1.inject)(user_working_directory_provider_1.UserWorkingDirectoryProvider),
101
+ __metadata("design:type", user_working_directory_provider_1.UserWorkingDirectoryProvider)
102
+ ], DefaultFileDialogService.prototype, "rootProvider", void 0);
99
103
  DefaultFileDialogService = __decorate([
100
104
  (0, inversify_1.injectable)()
101
105
  ], DefaultFileDialogService);
@@ -1 +1 @@
1
- {"version":3,"file":"file-dialog-service.js","sourceRoot":"","sources":["../../../src/browser/file-dialog/file-dialog-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-dialog-service.js","sourceRoot":"","sources":["../../../src/browser/file-dialog/file-dialog-service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/filesystem-frontend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,mCAAmC,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;;AAuB3E,wBAyLG;AAEH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAG5D"}
1
+ {"version":3,"file":"filesystem-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/filesystem-frontend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,mCAAmC,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;;AAyB3E,wBA4LG;AAEH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAG5D"}
@@ -38,7 +38,9 @@ const filesystem_watcher_error_handler_1 = require("./filesystem-watcher-error-h
38
38
  const encodings_1 = require("@theia/core/lib/common/encodings");
39
39
  const filepath_breadcrumbs_contribution_1 = require("./breadcrumbs/filepath-breadcrumbs-contribution");
40
40
  const filepath_breadcrumbs_container_1 = require("./breadcrumbs/filepath-breadcrumbs-container");
41
- exports.default = new inversify_1.ContainerModule(bind => {
41
+ const filesystem_save_resource_service_1 = require("./filesystem-save-resource-service");
42
+ const save_resource_service_1 = require("@theia/core/lib/browser/save-resource-service");
43
+ exports.default = new inversify_1.ContainerModule((bind, unbind, isBound, rebind) => {
42
44
  (0, filesystem_preferences_1.bindFileSystemPreferences)(bind);
43
45
  (0, contribution_provider_1.bindContributionProvider)(bind, file_service_1.FileServiceContribution);
44
46
  bind(file_service_1.FileService).toSelf().inSingletonScope();
@@ -216,6 +218,8 @@ exports.default = new inversify_1.ContainerModule(bind => {
216
218
  bind(filepath_breadcrumbs_container_1.BreadcrumbsFileTreeWidget).toDynamicValue(ctx => (0, filepath_breadcrumbs_container_1.createFileTreeBreadcrumbsWidget)(ctx.container));
217
219
  bind(filepath_breadcrumbs_contribution_1.FilepathBreadcrumbsContribution).toSelf().inSingletonScope();
218
220
  bind(browser_1.BreadcrumbsContribution).toService(filepath_breadcrumbs_contribution_1.FilepathBreadcrumbsContribution);
221
+ bind(filesystem_save_resource_service_1.FilesystemSaveResourceService).toSelf().inSingletonScope();
222
+ rebind(save_resource_service_1.SaveResourceService).toService(filesystem_save_resource_service_1.FilesystemSaveResourceService);
219
223
  });
220
224
  function bindFileResource(bind) {
221
225
  bind(file_resource_1.FileResourceResolver).toSelf().inSingletonScope();
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem-frontend-module.js","sourceRoot":"","sources":["../../src/browser/filesystem-frontend-module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filesystem-frontend-module.js","sourceRoot":"","sources":["../../src/browser/filesystem-frontend-module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { Navigatable, SaveableSource, SaveOptions, Widget, OpenerService } from '@theia/core/lib/browser';
2
+ import { SaveResourceService } from '@theia/core/lib/browser/save-resource-service';
3
+ import URI from '@theia/core/lib/common/uri';
4
+ import { FileService } from './file-service';
5
+ import { FileDialogService } from './file-dialog';
6
+ export declare class FilesystemSaveResourceService extends SaveResourceService {
7
+ protected readonly fileService: FileService;
8
+ protected readonly fileDialogService: FileDialogService;
9
+ protected readonly openerService: OpenerService;
10
+ /**
11
+ * This method ensures a few things about `widget`:
12
+ * - `widget.getResourceUri()` actually returns a URI.
13
+ * - `widget.saveable.createSnapshot` is defined.
14
+ * - `widget.saveable.revert` is defined.
15
+ */
16
+ canSaveAs(widget: Widget | undefined): widget is Widget & SaveableSource & Navigatable;
17
+ /**
18
+ * Save `sourceWidget` to a new file picked by the user.
19
+ */
20
+ saveAs(sourceWidget: Widget & SaveableSource & Navigatable, options?: SaveOptions): Promise<void>;
21
+ /**
22
+ * @param sourceWidget widget to save as `target`.
23
+ * @param target The new URI for the widget.
24
+ * @param overwrite
25
+ */
26
+ private copyAndSave;
27
+ confirmOverwrite(uri: URI): Promise<boolean>;
28
+ private isElectron;
29
+ }
30
+ //# sourceMappingURL=filesystem-save-resource-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem-save-resource-service.d.ts","sourceRoot":"","sources":["../../src/browser/filesystem-save-resource-service.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,WAAW,EAAY,cAAc,EAAE,WAAW,EAAE,MAAM,EAAQ,aAAa,EAA6C,MAAM,yBAAyB,CAAC;AACrK,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,qBACa,6BAA8B,SAAQ,mBAAmB;IAE7C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC5D,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAEvE;;;;;OAKG;IACM,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,IAAI,MAAM,GAAG,cAAc,GAAG,WAAW;IAS/F;;OAEG;IACY,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BhH;;;;OAIG;YACW,WAAW;IAsBnB,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAalD,OAAO,CAAC,UAAU;CAGrB"}
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2022 Ericsson and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
18
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
21
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
22
+ };
23
+ var __metadata = (this && this.__metadata) || function (k, v) {
24
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.FilesystemSaveResourceService = void 0;
28
+ const core_1 = require("@theia/core");
29
+ const inversify_1 = require("@theia/core/shared/inversify");
30
+ const browser_1 = require("@theia/core/lib/browser");
31
+ const save_resource_service_1 = require("@theia/core/lib/browser/save-resource-service");
32
+ const file_service_1 = require("./file-service");
33
+ const file_dialog_1 = require("./file-dialog");
34
+ let FilesystemSaveResourceService = class FilesystemSaveResourceService extends save_resource_service_1.SaveResourceService {
35
+ /**
36
+ * This method ensures a few things about `widget`:
37
+ * - `widget.getResourceUri()` actually returns a URI.
38
+ * - `widget.saveable.createSnapshot` is defined.
39
+ * - `widget.saveable.revert` is defined.
40
+ */
41
+ canSaveAs(widget) {
42
+ return widget !== undefined
43
+ && browser_1.Saveable.isSource(widget)
44
+ && typeof widget.saveable.createSnapshot === 'function'
45
+ && typeof widget.saveable.revert === 'function'
46
+ && browser_1.Navigatable.is(widget)
47
+ && widget.getResourceUri() !== undefined;
48
+ }
49
+ /**
50
+ * Save `sourceWidget` to a new file picked by the user.
51
+ */
52
+ async saveAs(sourceWidget, options) {
53
+ let exist = false;
54
+ let overwrite = false;
55
+ let selected;
56
+ const canSave = this.canSaveNotSaveAs(sourceWidget);
57
+ const uri = sourceWidget.getResourceUri();
58
+ do {
59
+ selected = await this.fileDialogService.showSaveDialog({
60
+ title: browser_1.CommonCommands.SAVE_AS.label,
61
+ filters: {},
62
+ inputValue: uri.path.base
63
+ });
64
+ if (selected) {
65
+ exist = await this.fileService.exists(selected);
66
+ if (exist) {
67
+ overwrite = await this.confirmOverwrite(selected);
68
+ }
69
+ }
70
+ } while ((selected && exist && !overwrite) || ((selected === null || selected === void 0 ? void 0 : selected.isEqual(uri)) && !canSave));
71
+ if (selected && selected.isEqual(uri)) {
72
+ await this.save(sourceWidget, options);
73
+ }
74
+ else if (selected) {
75
+ try {
76
+ await this.copyAndSave(sourceWidget, selected, overwrite);
77
+ }
78
+ catch (e) {
79
+ console.warn(e);
80
+ }
81
+ }
82
+ }
83
+ /**
84
+ * @param sourceWidget widget to save as `target`.
85
+ * @param target The new URI for the widget.
86
+ * @param overwrite
87
+ */
88
+ async copyAndSave(sourceWidget, target, overwrite) {
89
+ const snapshot = sourceWidget.saveable.createSnapshot();
90
+ if (!await this.fileService.exists(target)) {
91
+ const sourceUri = sourceWidget.getResourceUri();
92
+ if (this.fileService.canHandleResource(sourceUri)) {
93
+ await this.fileService.copy(sourceUri, target, { overwrite });
94
+ }
95
+ else {
96
+ await this.fileService.createFile(target);
97
+ }
98
+ }
99
+ const targetWidget = await (0, browser_1.open)(this.openerService, target, { widgetOptions: { ref: sourceWidget } });
100
+ const targetSaveable = browser_1.Saveable.get(targetWidget);
101
+ if (targetWidget && targetSaveable && targetSaveable.applySnapshot) {
102
+ targetSaveable.applySnapshot(snapshot);
103
+ await sourceWidget.saveable.revert();
104
+ sourceWidget.close();
105
+ browser_1.Saveable.save(targetWidget, { formatType: 1 /* ON */ });
106
+ }
107
+ else {
108
+ this.messageService.error(core_1.nls.localize('theia/workspace/failApply', 'Could not apply changes to new file'));
109
+ }
110
+ }
111
+ async confirmOverwrite(uri) {
112
+ // Electron already handles the confirmation so do not prompt again.
113
+ if (this.isElectron()) {
114
+ return true;
115
+ }
116
+ // Prompt users for confirmation before overwriting.
117
+ const confirmed = await new browser_1.ConfirmDialog({
118
+ title: core_1.nls.localizeByDefault('Overwrite'),
119
+ msg: core_1.nls.localizeByDefault('{0} already exists. Are you sure you want to overwrite it?', uri.toString())
120
+ }).open();
121
+ return !!confirmed;
122
+ }
123
+ isElectron() {
124
+ return core_1.environment.electron.is();
125
+ }
126
+ };
127
+ __decorate([
128
+ (0, inversify_1.inject)(file_service_1.FileService),
129
+ __metadata("design:type", file_service_1.FileService)
130
+ ], FilesystemSaveResourceService.prototype, "fileService", void 0);
131
+ __decorate([
132
+ (0, inversify_1.inject)(file_dialog_1.FileDialogService),
133
+ __metadata("design:type", Object)
134
+ ], FilesystemSaveResourceService.prototype, "fileDialogService", void 0);
135
+ __decorate([
136
+ (0, inversify_1.inject)(browser_1.OpenerService),
137
+ __metadata("design:type", Object)
138
+ ], FilesystemSaveResourceService.prototype, "openerService", void 0);
139
+ FilesystemSaveResourceService = __decorate([
140
+ (0, inversify_1.injectable)()
141
+ ], FilesystemSaveResourceService);
142
+ exports.FilesystemSaveResourceService = FilesystemSaveResourceService;
143
+ //# sourceMappingURL=filesystem-save-resource-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem-save-resource-service.js","sourceRoot":"","sources":["../../src/browser/filesystem-save-resource-service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@theia/filesystem",
3
- "version": "1.25.0-next.0+96bee85f846",
3
+ "version": "1.25.0-next.3+3893fdec2fc",
4
4
  "description": "Theia - FileSystem Extension",
5
5
  "dependencies": {
6
- "@theia/core": "1.25.0-next.0+96bee85f846",
6
+ "@theia/core": "1.25.0-next.3+3893fdec2fc",
7
7
  "@types/body-parser": "^1.17.0",
8
8
  "@types/multer": "^1.4.7",
9
9
  "@types/rimraf": "^2.0.2",
@@ -68,5 +68,5 @@
68
68
  "nyc": {
69
69
  "extends": "../../configs/nyc.json"
70
70
  },
71
- "gitHead": "96bee85f8464a60c96355de118d0757daaad20cc"
71
+ "gitHead": "3893fdec2fc07766da986e12b62457a897b3b64e"
72
72
  }
@@ -23,6 +23,7 @@ import { DirNode } from '../file-tree';
23
23
  import { OpenFileDialogFactory, OpenFileDialogProps, SaveFileDialogFactory, SaveFileDialogProps } from './file-dialog';
24
24
  import { FileService } from '../file-service';
25
25
  import { EnvVariablesServer } from '@theia/core/lib/common/env-variables';
26
+ import { UserWorkingDirectoryProvider } from '@theia/core/lib/browser/user-working-directory-provider';
26
27
 
27
28
  export const FileDialogService = Symbol('FileDialogService');
28
29
  export interface FileDialogService {
@@ -47,6 +48,7 @@ export class DefaultFileDialogService implements FileDialogService {
47
48
  @inject(OpenFileDialogFactory) protected readonly openFileDialogFactory: OpenFileDialogFactory;
48
49
  @inject(LabelProvider) protected readonly labelProvider: LabelProvider;
49
50
  @inject(SaveFileDialogFactory) protected readonly saveFileDialogFactory: SaveFileDialogFactory;
51
+ @inject(UserWorkingDirectoryProvider) protected readonly rootProvider: UserWorkingDirectoryProvider;
50
52
 
51
53
  async showOpenDialog(props: OpenFileDialogProps & { canSelectMany: true }, folder?: FileStat): Promise<MaybeArray<URI> | undefined>;
52
54
  async showOpenDialog(props: OpenFileDialogProps, folder?: FileStat): Promise<URI | undefined>;
@@ -81,7 +83,7 @@ export class DefaultFileDialogService implements FileDialogService {
81
83
  protected async getRootNode(folderToOpen?: FileStat): Promise<DirNode | undefined> {
82
84
  const folderExists = folderToOpen && await this.fileService.exists(folderToOpen.resource);
83
85
  const folder = folderToOpen && folderExists ? folderToOpen : {
84
- resource: new URI(await this.environments.getHomeDirUri()),
86
+ resource: await this.rootProvider.getUserWorkingDir(),
85
87
  isDirectory: true
86
88
  };
87
89
  const folderUri = folder.resource;
@@ -38,8 +38,10 @@ import { FileSystemWatcherErrorHandler } from './filesystem-watcher-error-handle
38
38
  import { UTF8 } from '@theia/core/lib/common/encodings';
39
39
  import { FilepathBreadcrumbsContribution } from './breadcrumbs/filepath-breadcrumbs-contribution';
40
40
  import { BreadcrumbsFileTreeWidget, createFileTreeBreadcrumbsWidget } from './breadcrumbs/filepath-breadcrumbs-container';
41
+ import { FilesystemSaveResourceService } from './filesystem-save-resource-service';
42
+ import { SaveResourceService } from '@theia/core/lib/browser/save-resource-service';
41
43
 
42
- export default new ContainerModule(bind => {
44
+ export default new ContainerModule((bind, unbind, isBound, rebind) => {
43
45
  bindFileSystemPreferences(bind);
44
46
 
45
47
  bindContributionProvider(bind, FileServiceContribution);
@@ -224,6 +226,9 @@ export default new ContainerModule(bind => {
224
226
  );
225
227
  bind(FilepathBreadcrumbsContribution).toSelf().inSingletonScope();
226
228
  bind(BreadcrumbsContribution).toService(FilepathBreadcrumbsContribution);
229
+
230
+ bind(FilesystemSaveResourceService).toSelf().inSingletonScope();
231
+ rebind(SaveResourceService).toService(FilesystemSaveResourceService);
227
232
  });
228
233
 
229
234
  export function bindFileResource(bind: interfaces.Bind): void {
@@ -0,0 +1,124 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2022 Ericsson and others.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { environment, nls } from '@theia/core';
18
+ import { inject, injectable } from '@theia/core/shared/inversify';
19
+ import { Navigatable, Saveable, SaveableSource, SaveOptions, Widget, open, OpenerService, ConfirmDialog, FormatType, CommonCommands } from '@theia/core/lib/browser';
20
+ import { SaveResourceService } from '@theia/core/lib/browser/save-resource-service';
21
+ import URI from '@theia/core/lib/common/uri';
22
+ import { FileService } from './file-service';
23
+ import { FileDialogService } from './file-dialog';
24
+
25
+ @injectable()
26
+ export class FilesystemSaveResourceService extends SaveResourceService {
27
+
28
+ @inject(FileService) protected readonly fileService: FileService;
29
+ @inject(FileDialogService) protected readonly fileDialogService: FileDialogService;
30
+ @inject(OpenerService) protected readonly openerService: OpenerService;
31
+
32
+ /**
33
+ * This method ensures a few things about `widget`:
34
+ * - `widget.getResourceUri()` actually returns a URI.
35
+ * - `widget.saveable.createSnapshot` is defined.
36
+ * - `widget.saveable.revert` is defined.
37
+ */
38
+ override canSaveAs(widget: Widget | undefined): widget is Widget & SaveableSource & Navigatable {
39
+ return widget !== undefined
40
+ && Saveable.isSource(widget)
41
+ && typeof widget.saveable.createSnapshot === 'function'
42
+ && typeof widget.saveable.revert === 'function'
43
+ && Navigatable.is(widget)
44
+ && widget.getResourceUri() !== undefined;
45
+ }
46
+
47
+ /**
48
+ * Save `sourceWidget` to a new file picked by the user.
49
+ */
50
+ override async saveAs(sourceWidget: Widget & SaveableSource & Navigatable, options?: SaveOptions): Promise<void> {
51
+ let exist: boolean = false;
52
+ let overwrite: boolean = false;
53
+ let selected: URI | undefined;
54
+ const canSave = this.canSaveNotSaveAs(sourceWidget);
55
+ const uri: URI = sourceWidget.getResourceUri()!;
56
+ do {
57
+ selected = await this.fileDialogService.showSaveDialog(
58
+ {
59
+ title: CommonCommands.SAVE_AS.label!,
60
+ filters: {},
61
+ inputValue: uri.path.base
62
+ });
63
+ if (selected) {
64
+ exist = await this.fileService.exists(selected);
65
+ if (exist) {
66
+ overwrite = await this.confirmOverwrite(selected);
67
+ }
68
+ }
69
+ } while ((selected && exist && !overwrite) || (selected?.isEqual(uri) && !canSave));
70
+ if (selected && selected.isEqual(uri)) {
71
+ await this.save(sourceWidget, options);
72
+ } else if (selected) {
73
+ try {
74
+ await this.copyAndSave(sourceWidget, selected, overwrite);
75
+ } catch (e) {
76
+ console.warn(e);
77
+ }
78
+ }
79
+ }
80
+
81
+ /**
82
+ * @param sourceWidget widget to save as `target`.
83
+ * @param target The new URI for the widget.
84
+ * @param overwrite
85
+ */
86
+ private async copyAndSave(sourceWidget: Widget & SaveableSource & Navigatable, target: URI, overwrite: boolean): Promise<void> {
87
+ const snapshot = sourceWidget.saveable.createSnapshot!();
88
+ if (!await this.fileService.exists(target)) {
89
+ const sourceUri = sourceWidget.getResourceUri()!;
90
+ if (this.fileService.canHandleResource(sourceUri)) {
91
+ await this.fileService.copy(sourceUri, target, { overwrite });
92
+ } else {
93
+ await this.fileService.createFile(target);
94
+ }
95
+ }
96
+ const targetWidget = await open(this.openerService, target, { widgetOptions: { ref: sourceWidget } });
97
+ const targetSaveable = Saveable.get(targetWidget);
98
+ if (targetWidget && targetSaveable && targetSaveable.applySnapshot) {
99
+ targetSaveable.applySnapshot(snapshot);
100
+ await sourceWidget.saveable.revert!();
101
+ sourceWidget.close();
102
+ Saveable.save(targetWidget, { formatType: FormatType.ON });
103
+ } else {
104
+ this.messageService.error(nls.localize('theia/workspace/failApply', 'Could not apply changes to new file'));
105
+ }
106
+ }
107
+
108
+ async confirmOverwrite(uri: URI): Promise<boolean> {
109
+ // Electron already handles the confirmation so do not prompt again.
110
+ if (this.isElectron()) {
111
+ return true;
112
+ }
113
+ // Prompt users for confirmation before overwriting.
114
+ const confirmed = await new ConfirmDialog({
115
+ title: nls.localizeByDefault('Overwrite'),
116
+ msg: nls.localizeByDefault('{0} already exists. Are you sure you want to overwrite it?', uri.toString())
117
+ }).open();
118
+ return !!confirmed;
119
+ }
120
+
121
+ private isElectron(): boolean {
122
+ return environment.electron.is();
123
+ }
124
+ }