diff --git a/src/sql/parts/dashboard/widgets/explorer/explorerTree.ts b/src/sql/parts/dashboard/widgets/explorer/explorerTree.ts index ed80dbe244..5668739f61 100644 --- a/src/sql/parts/dashboard/widgets/explorer/explorerTree.ts +++ b/src/sql/parts/dashboard/widgets/explorer/explorerTree.ts @@ -15,6 +15,7 @@ import { import { ICapabilitiesService } from 'sql/services/capabilities/capabilitiesService'; import { ConnectionManagementInfo } from 'sql/parts/connection/common/connectionManagementInfo'; import * as Constants from 'sql/parts/connection/common/constants'; +import { OEAction } from 'sql/parts/registeredServer/viewlet/objectExplorerActions'; import { ObjectMetadata } from 'sqlops'; @@ -27,7 +28,7 @@ import { IAction } from 'vs/base/common/actions'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { generateUuid } from 'vs/base/common/uuid'; import { $ } from 'vs/base/browser/dom'; -import { OEAction } from 'sql/parts/registeredServer/viewlet/objectExplorerActions'; +import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent'; export class ObjectMetadataWrapper implements ObjectMetadata { public metadataType: MetadataType; @@ -164,6 +165,19 @@ export class ExplorerController extends TreeDefaults.DefaultController { this._router.navigate(['database-dashboard']); }); } + + protected onEnter(tree: tree.ITree, event: IKeyboardEvent): boolean { + let result = super.onEnter(tree, event); + if (result) { + const focus = tree.getFocus(); + if (focus && !(focus instanceof ObjectMetadataWrapper)) { + this._connectionService.changeDatabase(focus.databaseName).then(result => { + this._router.navigate(['database-dashboard']); + }); + } + } + return result; + } } export class ExplorerDataSource implements tree.IDataSource { diff --git a/src/sql/parts/dashboard/widgets/tasks/tasksWidget.component.ts b/src/sql/parts/dashboard/widgets/tasks/tasksWidget.component.ts index a4d212e19b..0979424236 100644 --- a/src/sql/parts/dashboard/widgets/tasks/tasksWidget.component.ts +++ b/src/sql/parts/dashboard/widgets/tasks/tasksWidget.component.ts @@ -31,6 +31,8 @@ import * as DOM from 'vs/base/browser/dom'; import { CommandsRegistry, ICommand } from 'vs/platform/commands/common/commands'; import { MenuRegistry, ICommandAction } from 'vs/platform/actions/common/actions'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; +import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; +import { KeyCode } from 'vs/base/common/keyCodes'; interface ITask { name: string; @@ -135,7 +137,15 @@ export class TasksWidget extends DashboardWidget implements IDashboardWidget, On } innerTile.append(label); tile.append(innerTile); + tile.attr('tabindex', '0'); tile.on(DOM.EventType.CLICK, () => this.runTask(action)); + tile.on(DOM.EventType.KEY_DOWN, (e: KeyboardEvent) => { + let event = new StandardKeyboardEvent(e); + if (event.equals(KeyCode.Enter)) { + this.runTask(action); + e.stopImmediatePropagation(); + } + }); return tile.getHTMLElement(); }