Skip to content

Commit 232309b

Browse files
authored
fix: Use context value to identify the node types (#646)
Signed-off-by: Sheng Chen <[email protected]>
1 parent d5d02ca commit 232309b

File tree

6 files changed

+31
-11
lines changed

6 files changed

+31
-11
lines changed

src/constants.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export namespace Explorer {
1919
File = "file",
2020
Type = "type",
2121
Folder = "folder",
22+
Symbol = "symbol",
2223
}
2324

2425
export enum Mime {

src/views/DragAndDropController.ts

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export class DragAndDropController implements TreeDragAndDropController<Explorer
3737
this.addInternalDragDataTransfer(dragItem, treeDataTransfer);
3838
sendInfo("", {
3939
dndType: "drag",
40-
dragFrom: dragItem.constructor.name,
40+
dragFrom: dragItem.computeContextValue() || "unknown",
4141
});
4242
}
4343

@@ -121,8 +121,8 @@ export class DragAndDropController implements TreeDragAndDropController<Explorer
121121
if (!this.isDraggableNode(source)) {
122122
sendInfo("", {
123123
dndType: "drop",
124-
dragFrom: source ? source.constructor.name : "undefined",
125-
dropTo: target ? target.constructor.name : "undefined",
124+
dragFrom: source?.computeContextValue() || "unknown",
125+
dropTo: target?.computeContextValue() || "unknown",
126126
draggable: "false",
127127
});
128128
return;
@@ -131,8 +131,8 @@ export class DragAndDropController implements TreeDragAndDropController<Explorer
131131
if (!this.isDroppableNode(target)) {
132132
sendInfo("", {
133133
dndType: "drop",
134-
dragFrom: source ? source.constructor.name : "undefined",
135-
dropTo: target ? target.constructor.name : "undefined",
134+
dragFrom: source?.computeContextValue() || "unknown",
135+
dropTo: target?.computeContextValue() || "unknown",
136136
draggable: "true",
137137
droppable: "false",
138138
});
@@ -149,7 +149,7 @@ export class DragAndDropController implements TreeDragAndDropController<Explorer
149149
|| !(target.getParent() as ProjectNode).isUnmanagedFolder()) {
150150
sendInfo("", {
151151
dndType: "drop",
152-
dragFrom: source ? source.constructor.name : "undefined",
152+
dragFrom: source?.computeContextValue() || "unknown",
153153
dropTo: "Referenced Libraries",
154154
draggable: "true",
155155
droppable: "false",
@@ -160,7 +160,7 @@ export class DragAndDropController implements TreeDragAndDropController<Explorer
160160
this.addReferencedLibraries([source?.uri!]);
161161
sendInfo("", {
162162
dndType: "drop",
163-
dragFrom: source ? source.constructor.name : "undefined",
163+
dragFrom: source?.computeContextValue() || "unknown",
164164
dropTo: "Referenced Libraries",
165165
draggable: "true",
166166
droppable: "true",
@@ -170,8 +170,8 @@ export class DragAndDropController implements TreeDragAndDropController<Explorer
170170
await this.move(Uri.parse(source!.uri!), Uri.parse(target.uri!));
171171
sendInfo("", {
172172
dndType: "drop",
173-
dragFrom: source ? source.constructor.name : "undefined",
174-
dropTo: target ? target.constructor.name : "undefined",
173+
dragFrom: source?.computeContextValue() || "unknown",
174+
dropTo: target?.computeContextValue() || "unknown",
175175
draggable: "true",
176176
droppable: "true",
177177
});
@@ -188,7 +188,7 @@ export class DragAndDropController implements TreeDragAndDropController<Explorer
188188
sendInfo("", {
189189
dndType: "drop",
190190
dragFrom: "File Explorer",
191-
dropTo: target ? target.constructor.name : "undefined",
191+
dropTo: target?.computeContextValue() || "unknown",
192192
draggable: "true",
193193
droppable: "false",
194194
});
@@ -224,7 +224,7 @@ export class DragAndDropController implements TreeDragAndDropController<Explorer
224224
sendInfo("", {
225225
dndType: "drop",
226226
dragFrom: "File Explorer",
227-
dropTo: target ? target.constructor.name : "undefined",
227+
dropTo: target?.computeContextValue() || "unknown",
228228
draggable: "true",
229229
droppable: "true",
230230
});
@@ -294,6 +294,8 @@ export class DragAndDropController implements TreeDragAndDropController<Explorer
294294
return false;
295295
} else if (parent instanceof PackageRootNode) {
296296
return parent.isSourceRoot();
297+
} else if (parent instanceof PackageNode) {
298+
return parent.isSourcePackage();
297299
} else if (parent instanceof ContainerNode) {
298300
if (parent.getContainerType() === ContainerType.ReferencedLibrary) {
299301
return (parent.getParent() as ProjectNode).isUnmanagedFolder();

src/views/documentSymbolNode.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the MIT license.
33

44
import { DocumentSymbol, Range, TreeItem, TreeItemCollapsibleState } from "vscode";
5+
import { Explorer } from "../constants";
56
import { BaseSymbolNode } from "./baseSymbolNode";
67
import { ExplorerNode } from "./explorerNode";
78
import { PrimaryTypeNode } from "./PrimaryTypeNode";
@@ -35,4 +36,8 @@ export class DocumentSymbolNode extends BaseSymbolNode {
3536
// Using `selectionRange` instead of `range` to make sure the cursor will be pointing to the codes, not the comments
3637
return (<DocumentSymbol>this.symbolInfo).selectionRange;
3738
}
39+
40+
public computeContextValue(): string | undefined {
41+
return `java:${Explorer.ContextValueType.Symbol}`;
42+
}
3843
}

src/views/explorerNode.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,6 @@ export abstract class ExplorerNode {
3131
public abstract getChildren(): ProviderResult<ExplorerNode[]>;
3232

3333
public abstract getTreeItem(): TreeItem | Promise<TreeItem>;
34+
35+
public abstract computeContextValue(): string | undefined;
3436
}

src/views/packageNode.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ export class PackageNode extends DataNode {
1919
super(nodeData, parent);
2020
}
2121

22+
public isSourcePackage(): boolean {
23+
const parentData = <IPackageRootNodeData> this._rootNode.nodeData;
24+
return parentData.entryKind === PackageRootKind.K_SOURCE || parentData.kind === NodeKind.Project;
25+
}
26+
2227
protected async loadData(): Promise<INodeData[]> {
2328
return Jdtls.getPackageData({
2429
kind: NodeKind.Package,

src/views/symbolNode.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the MIT license.
33

44
import { Range, SymbolInformation, TreeItem, TreeItemCollapsibleState } from "vscode";
5+
import { Explorer } from "../constants";
56
import { ITypeRootNodeData } from "../java/typeRootNodeData";
67
import { BaseSymbolNode } from "./baseSymbolNode";
78
import { ExplorerNode } from "./explorerNode";
@@ -39,4 +40,8 @@ export class SymbolNode extends BaseSymbolNode {
3940
public get range(): Range {
4041
return (<SymbolInformation>this.symbolInfo).location.range;
4142
}
43+
44+
public computeContextValue(): string | undefined {
45+
return `java:${Explorer.ContextValueType.Symbol}`;
46+
}
4247
}

0 commit comments

Comments
 (0)