未验证 提交 fb36c0dd 编写于 作者: A Alex Ross 提交者: GitHub

Adopt hover service in custom tree view

Part of #100741
上级 32081686
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { MarkdownString } from 'vscode';
/** /**
* This is the place for API experiments and proposals. * This is the place for API experiments and proposals.
* These API are NOT stable and subject to change. They are only available in the Insiders * These API are NOT stable and subject to change. They are only available in the Insiders
...@@ -1154,6 +1156,11 @@ declare module 'vscode' { ...@@ -1154,6 +1156,11 @@ declare module 'vscode' {
*/ */
label?: string | TreeItemLabel | /* for compilation */ any; label?: string | TreeItemLabel | /* for compilation */ any;
/**
* Content to be shown when you hover over the tree item.
*/
tooltip?: string | MarkdownString | /* for compilation */ any;
/** /**
* Accessibility information used when screen reader interacts with this tree item. * Accessibility information used when screen reader interacts with this tree item.
* Generally, a TreeItem has no need to set the `role` of the accessibilityInformation; * Generally, a TreeItem has no need to set the `role` of the accessibilityInformation;
......
...@@ -9,7 +9,7 @@ import { IJSONSchema } from 'vs/base/common/jsonSchema'; ...@@ -9,7 +9,7 @@ import { IJSONSchema } from 'vs/base/common/jsonSchema';
import * as resources from 'vs/base/common/resources'; import * as resources from 'vs/base/common/resources';
import { ExtensionMessageCollector, ExtensionsRegistry, IExtensionPoint, IExtensionPointUser } from 'vs/workbench/services/extensions/common/extensionsRegistry'; import { ExtensionMessageCollector, ExtensionsRegistry, IExtensionPoint, IExtensionPointUser } from 'vs/workbench/services/extensions/common/extensionsRegistry';
import { ViewContainer, IViewsRegistry, ITreeViewDescriptor, IViewContainersRegistry, Extensions as ViewContainerExtensions, TEST_VIEW_CONTAINER_ID, IViewDescriptor, ViewContainerLocation } from 'vs/workbench/common/views'; import { ViewContainer, IViewsRegistry, ITreeViewDescriptor, IViewContainersRegistry, Extensions as ViewContainerExtensions, TEST_VIEW_CONTAINER_ID, IViewDescriptor, ViewContainerLocation } from 'vs/workbench/common/views';
import { TreeViewPane, CustomTreeView } from 'vs/workbench/browser/parts/views/treeView'; import { TreeViewPane } from 'vs/workbench/browser/parts/views/treeView';
import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
import { coalesce, } from 'vs/base/common/arrays'; import { coalesce, } from 'vs/base/common/arrays';
import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions, IWorkbenchContribution } from 'vs/workbench/common/contributions'; import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions, IWorkbenchContribution } from 'vs/workbench/common/contributions';
...@@ -31,6 +31,7 @@ import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; ...@@ -31,6 +31,7 @@ import { SyncActionDescriptor } from 'vs/platform/actions/common/actions';
import { ViewPaneContainer } from 'vs/workbench/browser/parts/views/viewPaneContainer'; import { ViewPaneContainer } from 'vs/workbench/browser/parts/views/viewPaneContainer';
import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
import { Codicon } from 'vs/base/common/codicons'; import { Codicon } from 'vs/base/common/codicons';
import { CustomTreeView } from 'vs/workbench/contrib/views/browser/treeView';
export interface IUserFriendlyViewsContainerDescriptor { export interface IUserFriendlyViewsContainerDescriptor {
id: string; id: string;
......
...@@ -19,6 +19,8 @@ import { equals, coalesce } from 'vs/base/common/arrays'; ...@@ -19,6 +19,8 @@ import { equals, coalesce } from 'vs/base/common/arrays';
import { ILogService } from 'vs/platform/log/common/log'; import { ILogService } from 'vs/platform/log/common/log';
import { checkProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions'; import { checkProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions';
import { IExtensionDescription } from 'vs/platform/extensions/common/extensions'; import { IExtensionDescription } from 'vs/platform/extensions/common/extensions';
import { MarkdownString } from 'vs/workbench/api/common/extHostTypeConverters';
import { IMarkdownString } from 'vs/base/common/htmlContent';
type TreeItemHandle = string; type TreeItemHandle = string;
...@@ -486,6 +488,17 @@ class ExtHostTreeView<T> extends Disposable { ...@@ -486,6 +488,17 @@ class ExtHostTreeView<T> extends Disposable {
return node; return node;
} }
private getTooltip(tooltip?: string | vscode.MarkdownString): string | IMarkdownString | undefined {
if (typeof tooltip === 'string') {
return tooltip;
} else if (tooltip === undefined) {
return undefined;
} else {
checkProposedApiEnabled(this.extension);
return MarkdownString.from(tooltip);
}
}
private createTreeNode(element: T, extensionTreeItem: vscode.TreeItem2, parent: TreeNode | Root): TreeNode { private createTreeNode(element: T, extensionTreeItem: vscode.TreeItem2, parent: TreeNode | Root): TreeNode {
const disposable = new DisposableStore(); const disposable = new DisposableStore();
const handle = this.createHandle(element, extensionTreeItem, parent); const handle = this.createHandle(element, extensionTreeItem, parent);
...@@ -496,7 +509,7 @@ class ExtHostTreeView<T> extends Disposable { ...@@ -496,7 +509,7 @@ class ExtHostTreeView<T> extends Disposable {
label: toTreeItemLabel(extensionTreeItem.label, this.extension), label: toTreeItemLabel(extensionTreeItem.label, this.extension),
description: extensionTreeItem.description, description: extensionTreeItem.description,
resourceUri: extensionTreeItem.resourceUri, resourceUri: extensionTreeItem.resourceUri,
tooltip: typeof extensionTreeItem.tooltip === 'string' ? extensionTreeItem.tooltip : undefined, tooltip: this.getTooltip(extensionTreeItem.tooltip),
command: extensionTreeItem.command ? this.commands.toInternal(extensionTreeItem.command, disposable) : undefined, command: extensionTreeItem.command ? this.commands.toInternal(extensionTreeItem.command, disposable) : undefined,
contextValue: extensionTreeItem.contextValue, contextValue: extensionTreeItem.contextValue,
icon, icon,
......
...@@ -2101,7 +2101,7 @@ export class TreeItem { ...@@ -2101,7 +2101,7 @@ export class TreeItem {
iconPath?: string | URI | { light: string | URI; dark: string | URI; }; iconPath?: string | URI | { light: string | URI; dark: string | URI; };
command?: vscode.Command; command?: vscode.Command;
contextValue?: string; contextValue?: string;
tooltip?: string; tooltip?: string | vscode.MarkdownString;
constructor(label: string | vscode.TreeItemLabel, collapsibleState?: vscode.TreeItemCollapsibleState); constructor(label: string | vscode.TreeItemLabel, collapsibleState?: vscode.TreeItemCollapsibleState);
constructor(resourceUri: URI, collapsibleState?: vscode.TreeItemCollapsibleState); constructor(resourceUri: URI, collapsibleState?: vscode.TreeItemCollapsibleState);
......
...@@ -23,6 +23,7 @@ import { IProgressIndicator } from 'vs/platform/progress/common/progress'; ...@@ -23,6 +23,7 @@ import { IProgressIndicator } from 'vs/platform/progress/common/progress';
import Severity from 'vs/base/common/severity'; import Severity from 'vs/base/common/severity';
import { IPaneComposite } from 'vs/workbench/common/panecomposite'; import { IPaneComposite } from 'vs/workbench/common/panecomposite';
import { IAccessibilityInformation } from 'vs/platform/accessibility/common/accessibility'; import { IAccessibilityInformation } from 'vs/platform/accessibility/common/accessibility';
import { IMarkdownString } from 'vs/base/common/htmlContent';
export const TEST_VIEW_CONTAINER_ID = 'workbench.view.extension.test'; export const TEST_VIEW_CONTAINER_ID = 'workbench.view.extension.test';
...@@ -580,6 +581,7 @@ export interface ITreeView extends IDisposable { ...@@ -580,6 +581,7 @@ export interface ITreeView extends IDisposable {
setFocus(item: ITreeItem): void; setFocus(item: ITreeItem): void;
show(container: any): void;
} }
export interface IRevealOptions { export interface IRevealOptions {
...@@ -635,7 +637,7 @@ export interface ITreeItem { ...@@ -635,7 +637,7 @@ export interface ITreeItem {
resourceUri?: UriComponents; resourceUri?: UriComponents;
tooltip?: string; tooltip?: string | IMarkdownString;
contextValue?: string; contextValue?: string;
......
...@@ -7,7 +7,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; ...@@ -7,7 +7,7 @@ import { Registry } from 'vs/platform/registry/common/platform';
import { IViewsRegistry, Extensions, ITreeViewDescriptor, ITreeViewDataProvider, ITreeItem, TreeItemCollapsibleState, IViewsService, TreeViewItemHandleArg, ViewContainer, IViewDescriptorService } from 'vs/workbench/common/views'; import { IViewsRegistry, Extensions, ITreeViewDescriptor, ITreeViewDataProvider, ITreeItem, TreeItemCollapsibleState, IViewsService, TreeViewItemHandleArg, ViewContainer, IViewDescriptorService } from 'vs/workbench/common/views';
import { localize } from 'vs/nls'; import { localize } from 'vs/nls';
import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
import { TreeViewPane, TreeView } from 'vs/workbench/browser/parts/views/treeView'; import { TreeViewPane } from 'vs/workbench/browser/parts/views/treeView';
import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
import { ALL_SYNC_RESOURCES, SyncResource, IUserDataSyncService, ISyncResourceHandle, SyncStatus, IUserDataSyncResourceEnablementService, IUserDataAutoSyncService } from 'vs/platform/userDataSync/common/userDataSync'; import { ALL_SYNC_RESOURCES, SyncResource, IUserDataSyncService, ISyncResourceHandle, SyncStatus, IUserDataSyncResourceEnablementService, IUserDataAutoSyncService } from 'vs/platform/userDataSync/common/userDataSync';
import { registerAction2, Action2, MenuId } from 'vs/platform/actions/common/actions'; import { registerAction2, Action2, MenuId } from 'vs/platform/actions/common/actions';
...@@ -36,6 +36,7 @@ import { IUserDataSyncMachinesService, IUserDataSyncMachine } from 'vs/platform/ ...@@ -36,6 +36,7 @@ import { IUserDataSyncMachinesService, IUserDataSyncMachine } from 'vs/platform/
import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput'; import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput';
import { INotificationService } from 'vs/platform/notification/common/notification'; import { INotificationService } from 'vs/platform/notification/common/notification';
import { generateUuid } from 'vs/base/common/uuid'; import { generateUuid } from 'vs/base/common/uuid';
import { TreeView } from 'vs/workbench/contrib/views/browser/treeView';
export class UserDataSyncViewPaneContainer extends ViewPaneContainer { export class UserDataSyncViewPaneContainer extends ViewPaneContainer {
......
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册