Skip to content

Commit

Permalink
Adding customizable file name and extension for new files
Browse files Browse the repository at this point in the history
Signed-off-by: Bogdan Stolojan <petre.stolojan@arm.com>
  • Loading branch information
bogthe authored and kittaakos committed Mar 2, 2019
1 parent 6381e06 commit 9621100
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
9 changes: 9 additions & 0 deletions dev-packages/application-package/src/application-props.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,15 @@ export interface FrontendApplicationConfig extends ApplicationConfig {
*/
readonly applicationName: string;

/**
* The name of the newly created file. `Untitled` by default.
*/
readonly newFileName?: string;

/**
* The extension of the newly created file. `.txt` by default.
*/
readonly newFileExtension?: string;
}

/**
Expand Down
12 changes: 11 additions & 1 deletion packages/workspace/src/browser/workspace-commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import { FileSystem, FileStat } from '@theia/filesystem/lib/common/filesystem';
import { FileDialogService } from '@theia/filesystem/lib/browser';
import { SingleTextInputDialog, ConfirmDialog } from '@theia/core/lib/browser/dialogs';
import { OpenerService, OpenHandler, open, FrontendApplication } from '@theia/core/lib/browser';
import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/frontend-application-config-provider';
import { UriCommandHandler, UriAwareCommandHandler } from '@theia/core/lib/common/uri-command-handler';
import { WorkspaceService } from './workspace-service';
import { MessageService } from '@theia/core/lib/common/message-service';
Expand Down Expand Up @@ -170,7 +171,8 @@ export class WorkspaceCommandContribution implements CommandContribution {
execute: uri => this.getDirectory(uri).then(parent => {
if (parent) {
const parentUri = new URI(parent.uri);
const vacantChildUri = FileSystemUtils.generateUniqueResourceURI(parentUri, parent, 'Untitled', '.txt');
const { fileName, fileExtension } = this.getDefaultFileConfig();
const vacantChildUri = FileSystemUtils.generateUniqueResourceURI(parentUri, parent, fileName, fileExtension);
const dialog = new SingleTextInputDialog({
title: 'New File',
initialValue: vacantChildUri.path.base,
Expand Down Expand Up @@ -346,6 +348,14 @@ export class WorkspaceCommandContribution implements CommandContribution {
return rootUris.has(uri.toString());
}

protected getDefaultFileConfig(): { fileName: string, fileExtension: string } {
const { newFileExtension, newFileName } = FrontendApplicationConfigProvider.get();
return {
fileName: newFileName ? newFileName : 'Untitled',
fileExtension: newFileExtension ? newFileExtension : '.txt'
};
}

protected async removeFolderFromWorkspace(uris: URI[]): Promise<void> {
const roots = new Set(this.workspaceService.tryGetRoots().map(r => r.uri));
const toRemove = uris.filter(u => roots.has(u.toString()));
Expand Down

0 comments on commit 9621100

Please sign in to comment.