Skip to content

Commit 2ba3227

Browse files
authored
feat: Support showing Gradle sub-menu for BSP Gradle projects (#786)
Signed-off-by: Sheng Chen <sheche@microsoft.com>
1 parent 903b88c commit 2ba3227

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -617,12 +617,12 @@
617617
},
618618
{
619619
"submenu": "javaProject.maven",
620-
"when": "view == javaProjectExplorer && viewItem =~ /java:project(?=.*?\\b\\+uri\\b)(?=.*?\\b\\+(maven)\\b)/",
620+
"when": "view == javaProjectExplorer && viewItem =~ /java:project(?=.*?\\b\\+uri\\b)(?=.*?\\b\\+maven\\b)/",
621621
"group": "9_configuration@10"
622622
},
623623
{
624624
"submenu": "javaProject.gradle",
625-
"when": "view == javaProjectExplorer && viewItem =~ /java:project(?=.*?\\b\\+uri\\b)(?=.*?\\b\\+(gradle)\\b)/",
625+
"when": "view == javaProjectExplorer && viewItem =~ /java:project(?=.*?\\b\\+uri\\b)(?=.*?\\b\\+(?:bsp-)?gradle\\b)/",
626626
"group": "9_configuration@10"
627627
}
628628
],

src/views/projectNode.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@ import { NodeFactory } from "./nodeFactory";
1414

1515
export class ProjectNode extends DataNode {
1616

17-
constructor(nodeData: INodeData, parent?: DataNode) {
18-
super(nodeData, parent);
19-
}
20-
2117
public async revealPaths(paths: INodeData[]): Promise<DataNode | undefined> {
2218
if (!this.uri) {
2319
return undefined;
@@ -65,7 +61,7 @@ export class ProjectNode extends DataNode {
6561
protected createChildNodeList(): ExplorerNode[] {
6662
const result: (ExplorerNode | undefined)[] = [];
6763
const packageData: any[] = [];
68-
if (this.nodeData.children && this.nodeData.children.length) {
64+
if (this.nodeData.children?.length) {
6965
this.nodeData.children.forEach((nodeData) => {
7066
if (nodeData.kind === NodeKind.Package) {
7167
packageData.push(nodeData);
@@ -123,6 +119,8 @@ function getProjectType(natureId: string): string {
123119
return ReadableNature.Maven;
124120
case NatureId.Gradle:
125121
return ReadableNature.Gradle;
122+
case NatureId.BspGradle:
123+
return ReadableNature.BspGradle;
126124
case NatureId.UnmanagedFolder:
127125
return ReadableNature.UnmanagedFolder;
128126
default:
@@ -133,13 +131,15 @@ function getProjectType(natureId: string): string {
133131
enum NatureId {
134132
Maven = "org.eclipse.m2e.core.maven2Nature",
135133
Gradle = "org.eclipse.buildship.core.gradleprojectnature",
134+
BspGradle = "com.microsoft.gradle.bs.importer.GradleBuildServerProjectNature",
136135
UnmanagedFolder = "org.eclipse.jdt.ls.core.unmanagedFolder",
137136
Java = "org.eclipse.jdt.core.javanature",
138137
}
139138

140139
enum ReadableNature {
141140
Maven = "maven",
142141
Gradle = "gradle",
142+
BspGradle = "bsp-gradle",
143143
UnmanagedFolder = "unmanagedFolder",
144144
Java = "java",
145145
}

test/suite/contextValue.test.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ suite("Context Value Tests", () => {
2828
assert.ok(/java:project(?=.*?\b\+java\b)(?=.*?\b\+gradle\b)(?=.*?\b\+uri\b)/.test((await gradleProject.getTreeItem()).contextValue || ""));
2929
});
3030

31+
test("test BSP Gradle project node", async function() {
32+
assert.ok(/java:project(?=.*?\b\+java\b)(?=.*?\b\+bsp-gradle\b)(?=.*?\b\+uri\b)/.test((await bspGradleProject.getTreeItem()).contextValue || ""));
33+
});
34+
3135
test("test unmanaged folder node", async function() {
3236
assert.ok(/java:project(?=.*?\b\+java\b)(?=.*?\b\+unmanagedFolder\b)(?=.*?\b\+uri\b)/
3337
.test((await unmanagedFolder.getTreeItem()).contextValue || ""));
@@ -134,6 +138,15 @@ const gradleProject: ProjectNode = new ProjectNode({
134138
},
135139
}, workspace);
136140

141+
const bspGradleProject: ProjectNode = new ProjectNode({
142+
name: "bspGradleProject",
143+
uri: Uri.file(__dirname).toString(),
144+
kind: NodeKind.Project,
145+
metaData: {
146+
NatureId: ["org.eclipse.jdt.core.javanature", "com.microsoft.gradle.bs.importer.GradleBuildServerProjectNature"],
147+
},
148+
}, workspace);
149+
137150
const unmanagedFolder: ProjectNode = new ProjectNode({
138151
name: "unmanagedFolder",
139152
uri: Uri.file(__dirname).toString(),

0 commit comments

Comments
 (0)