|
1 | 1 | import * as path from 'path'; |
2 | 2 | import { DisposableObject } from 'semmle-vscode-utils'; |
3 | | -import { commands, Event, EventEmitter, ExtensionContext, ProviderResult, TreeDataProvider, TreeItem, Uri, window } from 'vscode'; |
| 3 | +import { commands, Event, EventEmitter, ExtensionContext, ProviderResult, TreeDataProvider, TreeItem, Uri, window, env } from 'vscode'; |
4 | 4 | import * as cli from './cli'; |
5 | 5 | import { DatabaseItem, DatabaseManager, getUpgradesDirectories } from './databases'; |
6 | | -import { getOnDiskWorkspaceFolders } from './helpers'; |
| 6 | +import { getOnDiskWorkspaceFolders, showAndLogErrorMessage } from './helpers'; |
7 | 7 | import { logger } from './logging'; |
8 | 8 | import { clearCacheInDatabase, UserCancellationException } from './run-queries'; |
9 | 9 | import * as qsClient from './queryserver-client'; |
@@ -180,6 +180,8 @@ export class DatabaseUI extends DisposableObject { |
180 | 180 | ctx.subscriptions.push(commands.registerCommand('codeQLDatabases.sortByDateAdded', this.handleSortByDateAdded)); |
181 | 181 | ctx.subscriptions.push(commands.registerCommand('codeQLDatabases.removeDatabase', this.handleRemoveDatabase)); |
182 | 182 | ctx.subscriptions.push(commands.registerCommand('codeQLDatabases.upgradeDatabase', this.handleUpgradeDatabase)); |
| 183 | + ctx.subscriptions.push(commands.registerCommand('codeQLDatabases.renameDatabase', this.handleRenameDatabase)); |
| 184 | + ctx.subscriptions.push(commands.registerCommand('codeQLDatabases.openDatabaseFolder', this.handleOpenFolder)); |
183 | 185 | } |
184 | 186 |
|
185 | 187 | private handleMakeCurrentDatabase = async (databaseItem: DatabaseItem): Promise<void> => { |
@@ -272,6 +274,29 @@ export class DatabaseUI extends DisposableObject { |
272 | 274 | this.databaseManager.removeDatabaseItem(databaseItem); |
273 | 275 | } |
274 | 276 |
|
| 277 | + private handleRenameDatabase = async (databaseItem: DatabaseItem): Promise<void> => { |
| 278 | + try { |
| 279 | + const newName = await window.showInputBox({ |
| 280 | + prompt: 'Choose new database name', |
| 281 | + value: databaseItem.name |
| 282 | + }); |
| 283 | + |
| 284 | + if (newName) { |
| 285 | + this.databaseManager.renameDatabaseItem(databaseItem, newName); |
| 286 | + } |
| 287 | + } catch (e) { |
| 288 | + showAndLogErrorMessage(e.message); |
| 289 | + } |
| 290 | + } |
| 291 | + |
| 292 | + private handleOpenFolder = async (databaseItem: DatabaseItem): Promise<void> => { |
| 293 | + try { |
| 294 | + await env.openExternal(databaseItem.databaseUri); |
| 295 | + } catch (e) { |
| 296 | + showAndLogErrorMessage(e.message); |
| 297 | + } |
| 298 | + } |
| 299 | + |
275 | 300 | /** |
276 | 301 | * Return the current database directory. If we don't already have a |
277 | 302 | * current database, ask the user for one, and return that, or |
|
0 commit comments