-
Notifications
You must be signed in to change notification settings - Fork 83
Register Command onto the Nodes of Project View
Start from version 0.13.0, we refined the context value of each node in the Project view, so other extensions can register their commands onto the nodes if they want to.
java:<node type>[+<attribute>]*
Currently, available node types are:
workspaceFolder
project
container
packageRoot
package
-
type
(class, enum, interface,...) jar
file
folder
Below picture illustrates the different node types
For each node type, it may have some attributes. Every attribute will start with a +
.
-
+uri
: The node has uri
Project Node:
-
+java
: Java project -
+maven
: Maven project -
+gradle
: Gradle project
Container Node:
-
+jre
: Container for JRE -
+maven
: Container for Maven -
+gradle
: Container for Gradle -
+referencedLibrary
: Container for Referenced Libraries
Package Root Node:
-
+source
: Source package root. -
+resource
: Resource package root -
+test
: Is on test source path
Package Node:
-
+source
: Source package -
+test
: Is on test source path -
+binary
: Binary package (Expanded inside a binary jar)
Type Node
-
+enum
: An enum -
+interface
: An interface -
+class
: A class -
+test
: Is on test source path
Jar Node:
-
+referencedLibrary
: Referenced Library jar
Menu items can be sorted into groups. They are sorted in lexicographical order with the following defaults/rules. You can add menu items to these groups or add new groups of menu items in between, below, or above.
The Project explorer context menu has these default groups:
-
1_new
: Commands related to create something, like Java class, package, etc... -
6_copypath
: Commands related to copying file paths. -
7_modification
: Commands related to the modification of file. -
8_execution
: Commands related to execution, like run and debug.
For example, A node for a Maven project may have the following context value:
java:project+maven+uri
If you want to register a command on that node, you can write your when clause in package.json
as:
"contributes": {
...
"menus": {
...
"view/item/context": [
{
"command": "...",
"when": "view == javaProjectExplorer && viewItem =~ /java:project(?=.*?\\b\\+maven\\b)(?=.*?\\b\\+uri\\b)/",
"group": "...
}
]
}
}