From 1f75fcdc9d2152754c3e9c687c83b8953df60aa7 Mon Sep 17 00:00:00 2001 From: xqzlgy2 Date: Fri, 30 Oct 2020 12:30:07 +0800 Subject: [PATCH 1/2] Add context value for folder --- package.json | 8 ++++---- src/constants.ts | 1 + src/explorerCommands/utils.ts | 8 ++++---- src/views/folderNode.ts | 5 +++++ test/explorer/contextValue.test.ts | 11 +++++++++++ 5 files changed, 25 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 8b961032..e3fb886d 100644 --- a/package.json +++ b/package.json @@ -382,12 +382,12 @@ }, { "command": "java.view.package.renameFile", - "when": "view == javaProjectExplorer && viewItem =~ /java:file(?=.*?\\b\\+uri\\b)/", + "when": "view == javaProjectExplorer && viewItem =~ /java:packageRoot(?=.*?\\b\\+resource\\b)(?=.*?\\b\\+uri\\b)/", "group": "7_modification@10" }, { "command": "java.view.package.renameFile", - "when": "view == javaProjectExplorer && viewItem =~ /java:type(?=.*?\\b\\+uri\\b)/", + "when": "view == javaProjectExplorer && viewItem =~ /java:(file|type|folder)(?=.*?\\b\\+uri\\b)/", "group": "7_modification@10" }, { @@ -397,12 +397,12 @@ }, { "command": "java.view.package.moveFileToTrash", - "when": "view == javaProjectExplorer && viewItem =~ /java:file(?=.*?\\b\\+uri\\b)/", + "when": "view == javaProjectExplorer && viewItem =~ /java:packageRoot(?=.*?\\b\\+resource\\b)(?=.*?\\b\\+uri\\b)/", "group": "7_modification@20" }, { "command": "java.view.package.moveFileToTrash", - "when": "view == javaProjectExplorer && viewItem =~ /java:type(?=.*?\\b\\+uri\\b)/", + "when": "view == javaProjectExplorer && viewItem =~ /java:(file|type|folder)(?=.*?\\b\\+uri\\b)/", "group": "7_modification@20" }, { diff --git a/src/constants.ts b/src/constants.ts index 5cc5031b..0cd11895 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -16,6 +16,7 @@ export namespace Explorer { Jar = "jar", File = "file", Type = "type", + Folder = "folder", } } diff --git a/src/explorerCommands/utils.ts b/src/explorerCommands/utils.ts index 3bf4a4ab..62a71e26 100644 --- a/src/explorerCommands/utils.ts +++ b/src/explorerCommands/utils.ts @@ -5,10 +5,10 @@ import { DataNode } from "../views/dataNode"; export function isMutable(node: DataNode): boolean { // avoid modify dependency files - const packageExp = /java:(package|packageRoot)(?=.*?\b\+source\b)(?=.*?\b\+uri\b)/; - const fileExp = /java:file(?=.*?\b\+uri\b)/; - const typeExp = /java:type(?=.*?\b\+uri\b)/; + const sourcePackageExp = /java:(package|packageRoot)(?=.*?\b\+source\b)(?=.*?\b\+uri\b)/; + const resourcePackageExp = /java:packageRoot(?=.*?\b\+resource\b)(?=.*?\b\+uri\b)/; + const resourceOrTypeExp = /java:(file|type|folder)(?=.*?\b\+uri\b)/; const contextValue = node.computeContextValue(); - return packageExp.test(contextValue) || fileExp.test(contextValue) || typeExp.test(contextValue); + return sourcePackageExp.test(contextValue) || resourcePackageExp.test(contextValue) || resourceOrTypeExp.test(contextValue); } diff --git a/src/views/folderNode.ts b/src/views/folderNode.ts index 69e7ce8e..5b3d6a8c 100644 --- a/src/views/folderNode.ts +++ b/src/views/folderNode.ts @@ -2,6 +2,7 @@ // Licensed under the MIT license. import { ThemeIcon } from "vscode"; +import { Explorer } from "../constants"; import { Jdtls } from "../java/jdtls"; import { INodeData, NodeKind } from "../java/nodeData"; import { DataNode } from "./dataNode"; @@ -41,4 +42,8 @@ export class FolderNode extends DataNode { protected get iconPath(): ThemeIcon { return new ThemeIcon("folder"); } + + protected get contextValue(): string { + return Explorer.ContextValueType.Folder; + } } diff --git a/test/explorer/contextValue.test.ts b/test/explorer/contextValue.test.ts index 44b040c0..3059cc3a 100644 --- a/test/explorer/contextValue.test.ts +++ b/test/explorer/contextValue.test.ts @@ -7,6 +7,7 @@ import { INodeData, NodeKind, TypeKind } from "../../src/java/nodeData"; import { PackageRootKind } from "../../src/java/packageRootNodeData"; import { ContainerNode } from "../../src/views/containerNode"; import { FileNode } from "../../src/views/fileNode"; +import { FolderNode } from "../../src/views/folderNode"; import { PackageNode } from "../../src/views/packageNode"; import { PackageRootNode } from "../../src/views/packageRootNode"; import { PrimaryTypeNode } from "../../src/views/PrimaryTypeNode"; @@ -84,6 +85,10 @@ suite("Context Value Tests", () => { test("test interface type node", async function() { assert.equal((await interfaceType.getTreeItem()).contextValue, "java:type+interface+uri"); }); + + test("test folder node", async function() { + assert.equal((await folder.getTreeItem()).contextValue, "java:folder+uri"); + }); }); // below are faked nodes only for test purpose @@ -211,3 +216,9 @@ const interfaceType: PrimaryTypeNode = new PrimaryTypeNode({ TypeKind: TypeKind.Interface, }, }, sourcePackage); + +const folder: FolderNode = new FolderNode({ + name: "static", + uri: Uri.file(__dirname).toString(), + kind: NodeKind.Package, +}, resourceRoot, mavenProject, resourceRoot); From 2a7a3c1cf6a756e6945fed03bef3616810cf2035 Mon Sep 17 00:00:00 2001 From: xqzlgy2 Date: Fri, 30 Oct 2020 14:29:39 +0800 Subject: [PATCH 2/2] Refactoring condition --- package.json | 14 ++------------ src/explorerCommands/utils.ts | 5 ++--- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index e3fb886d..57997f69 100644 --- a/package.json +++ b/package.json @@ -377,12 +377,7 @@ }, { "command": "java.view.package.renameFile", - "when": "view == javaProjectExplorer && viewItem =~ /java:(package|packageRoot)(?=.*?\\b\\+source\\b)(?=.*?\\b\\+uri\\b)/", - "group": "7_modification@10" - }, - { - "command": "java.view.package.renameFile", - "when": "view == javaProjectExplorer && viewItem =~ /java:packageRoot(?=.*?\\b\\+resource\\b)(?=.*?\\b\\+uri\\b)/", + "when": "view == javaProjectExplorer && viewItem =~ /java:(package|packageRoot)(?=.*?\\b\\+(source|resource)\\b)(?=.*?\\b\\+uri\\b)/", "group": "7_modification@10" }, { @@ -392,12 +387,7 @@ }, { "command": "java.view.package.moveFileToTrash", - "when": "view == javaProjectExplorer && viewItem =~ /java:(package|packageRoot)(?=.*?\\b\\+source\\b)(?=.*?\\b\\+uri\\b)/", - "group": "7_modification@20" - }, - { - "command": "java.view.package.moveFileToTrash", - "when": "view == javaProjectExplorer && viewItem =~ /java:packageRoot(?=.*?\\b\\+resource\\b)(?=.*?\\b\\+uri\\b)/", + "when": "view == javaProjectExplorer && viewItem =~ /java:(package|packageRoot)(?=.*?\\b\\+(source|resource)\\b)(?=.*?\\b\\+uri\\b)/", "group": "7_modification@20" }, { diff --git a/src/explorerCommands/utils.ts b/src/explorerCommands/utils.ts index 62a71e26..8fd3019a 100644 --- a/src/explorerCommands/utils.ts +++ b/src/explorerCommands/utils.ts @@ -5,10 +5,9 @@ import { DataNode } from "../views/dataNode"; export function isMutable(node: DataNode): boolean { // avoid modify dependency files - const sourcePackageExp = /java:(package|packageRoot)(?=.*?\b\+source\b)(?=.*?\b\+uri\b)/; - const resourcePackageExp = /java:packageRoot(?=.*?\b\+resource\b)(?=.*?\b\+uri\b)/; + const packageExp = /java:(package|packageRoot)(?=.*?\b\+(source|resource)\b)(?=.*?\b\+uri\b)/; const resourceOrTypeExp = /java:(file|type|folder)(?=.*?\b\+uri\b)/; const contextValue = node.computeContextValue(); - return sourcePackageExp.test(contextValue) || resourcePackageExp.test(contextValue) || resourceOrTypeExp.test(contextValue); + return packageExp.test(contextValue) || resourceOrTypeExp.test(contextValue); }