提交 20f06ed0 编写于 作者: J Johannes Rieken

make OutlineGroup fit for being used with other things than providers, #95234

上级 88e98034
...@@ -120,14 +120,14 @@ export class OutlineGroup extends TreeElement { ...@@ -120,14 +120,14 @@ export class OutlineGroup extends TreeElement {
constructor( constructor(
readonly id: string, readonly id: string,
public parent: TreeElement | undefined, public parent: TreeElement | undefined,
readonly provider: DocumentSymbolProvider, readonly label: string,
readonly providerIndex: number, readonly order: number,
) { ) {
super(); super();
} }
adopt(parent: TreeElement): OutlineGroup { adopt(parent: TreeElement): OutlineGroup {
let res = new OutlineGroup(this.id, parent, this.provider, this.providerIndex); let res = new OutlineGroup(this.id, parent, this.label, this.order);
for (const [key, value] of this.children) { for (const [key, value] of this.children) {
res.children.set(key, value.adopt(res)); res.children.set(key, value.adopt(res));
} }
...@@ -320,7 +320,7 @@ export class OutlineModel extends TreeElement { ...@@ -320,7 +320,7 @@ export class OutlineModel extends TreeElement {
const promises = provider.map((provider, index) => { const promises = provider.map((provider, index) => {
let id = TreeElement.findId(`provider_${index}`, result); let id = TreeElement.findId(`provider_${index}`, result);
let group = new OutlineGroup(id, result, provider, index); let group = new OutlineGroup(id, result, provider.displayName ?? 'Unknown Outline Provider', index);
return Promise.resolve(provider.provideDocumentSymbols(result.textModel, cts.token)).then(result => { return Promise.resolve(provider.provideDocumentSymbols(result.textModel, cts.token)).then(result => {
for (const info of result || []) { for (const info of result || []) {
......
...@@ -32,7 +32,7 @@ export class OutlineNavigationLabelProvider implements IKeyboardNavigationLabelP ...@@ -32,7 +32,7 @@ export class OutlineNavigationLabelProvider implements IKeyboardNavigationLabelP
getKeyboardNavigationLabel(element: OutlineItem): { toString(): string; } { getKeyboardNavigationLabel(element: OutlineItem): { toString(): string; } {
if (element instanceof OutlineGroup) { if (element instanceof OutlineGroup) {
return element.provider.displayName || element.id; return element.label;
} else { } else {
return element.symbol.name; return element.symbol.name;
} }
...@@ -43,7 +43,7 @@ export class OutlineAccessibilityProvider implements IListAccessibilityProvider< ...@@ -43,7 +43,7 @@ export class OutlineAccessibilityProvider implements IListAccessibilityProvider<
getAriaLabel(element: OutlineItem): string | null { getAriaLabel(element: OutlineItem): string | null {
if (element instanceof OutlineGroup) { if (element instanceof OutlineGroup) {
return element.provider.displayName || element.id; return element.label;
} else { } else {
return element.symbol.name; return element.symbol.name;
} }
...@@ -102,7 +102,7 @@ export class OutlineGroupRenderer implements ITreeRenderer<OutlineGroup, FuzzySc ...@@ -102,7 +102,7 @@ export class OutlineGroupRenderer implements ITreeRenderer<OutlineGroup, FuzzySc
renderElement(node: ITreeNode<OutlineGroup, FuzzyScore>, index: number, template: OutlineGroupTemplate): void { renderElement(node: ITreeNode<OutlineGroup, FuzzyScore>, index: number, template: OutlineGroupTemplate): void {
template.label.set( template.label.set(
node.element.provider.displayName || localize('provider', "Outline Provider"), node.element.label,
createMatches(node.filterData) createMatches(node.filterData)
); );
} }
...@@ -324,7 +324,7 @@ export class OutlineItemComparator implements ITreeSorter<OutlineItem> { ...@@ -324,7 +324,7 @@ export class OutlineItemComparator implements ITreeSorter<OutlineItem> {
compare(a: OutlineItem, b: OutlineItem): number { compare(a: OutlineItem, b: OutlineItem): number {
if (a instanceof OutlineGroup && b instanceof OutlineGroup) { if (a instanceof OutlineGroup && b instanceof OutlineGroup) {
return a.providerIndex - b.providerIndex; return a.order - b.order;
} else if (a instanceof OutlineElement && b instanceof OutlineElement) { } else if (a instanceof OutlineElement && b instanceof OutlineElement) {
if (this.type === OutlineSortOrder.ByKind) { if (this.type === OutlineSortOrder.ByKind) {
......
...@@ -104,7 +104,7 @@ class Item extends BreadcrumbsItem { ...@@ -104,7 +104,7 @@ class Item extends BreadcrumbsItem {
} else if (this.element instanceof OutlineGroup) { } else if (this.element instanceof OutlineGroup) {
// provider // provider
let label = new IconLabel(container); let label = new IconLabel(container);
label.setLabel(this.element.provider.displayName || ''); label.setLabel(this.element.label);
this._disposables.add(label); this._disposables.add(label);
} else if (this.element instanceof OutlineElement) { } else if (this.element instanceof OutlineElement) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册