Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Add 'delete' into the view context menu #343

Merged
merged 16 commits into from
Oct 13, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
feat: Add 'delete' to context menu (#207)
  • Loading branch information
xqzlgy2 committed Sep 28, 2020
commit 195ebc35fbd562ba29e02c3c46eaa75fb9b0d70e
24 changes: 24 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,11 @@
"command": "java.view.package.newPackage",
"title": "%contributes.commands.java.view.package.newPackage%",
"category": "Java"
},
{
"command": "java.view.package.moveFileToTrash",
"title": "%contributes.commands.java.view.package.moveFileToTrash%",
"category": "Java"
}
],
"configuration": {
Expand Down Expand Up @@ -233,6 +238,10 @@
"command": "java.view.package.newPackage",
"when": "never"
},
{
"command": "java.view.package.moveFileToTrash",
"when": "never"
},
{
"command": "java.project.build.workspace",
"when": "never"
Expand Down Expand Up @@ -326,6 +335,21 @@
"when": "view == javaProjectExplorer && viewItem =~ /java:(package|packageRoot)(?=.*?\\b\\+source\\b)(?=.*?\\b\\+uri\\b)/",
"group": "new@20"
},
{
"command": "java.view.package.moveFileToTrash",
"when": "view == javaProjectExplorer && viewItem =~ /java:(package|packageRoot)(?=.*?\\b\\+source\\b)(?=.*?\\b\\+uri\\b)/",
"group": "delete@10"
},
{
"command": "java.view.package.moveFileToTrash",
"when": "view == javaProjectExplorer && viewItem =~ /java:file(?=.*?\\b\\+uri\\b)/",
"group": "delete@10"
},
{
"command": "java.view.package.moveFileToTrash",
"when": "view == javaProjectExplorer && viewItem =~ /java:sourceFile(?=.*?\\b\\+uri\\b)/",
"group": "delete@10"
},
{
"command": "java.project.addLibraries",
"when": "view == javaProjectExplorer && viewItem =~ /java:container(?=.*?\\b\\+referencedLibrary\\b)/",
Expand Down
1 change: 1 addition & 0 deletions package.nls.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"contributes.commands.java.view.package.copyRelativeFilePath": "Copy Relative Path",
"contributes.commands.java.view.package.newJavaClass": "New Java Class",
"contributes.commands.java.view.package.newPackage": "New Package",
"contributes.commands.java.view.package.moveFileToTrash": "Delete",
"configuration.java.dependency.showMembers": "Show the members in the explorer",
"configuration.java.dependency.syncWithFolderExplorer": "Synchronize Java Projects explorer selection with folder explorer",
"configuration.java.dependency.autoRefresh": "Synchronize Java Projects explorer with changes",
Expand Down
1 change: 1 addition & 0 deletions package.nls.zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"contributes.commands.java.view.package.copyRelativeFilePath": "复制相对路径",
"contributes.commands.java.view.package.newJavaClass": "创建 Java 类",
"contributes.commands.java.view.package.newPackage": "创建包",
"contributes.commands.java.view.package.moveFileToTrash": "删除",
"configuration.java.dependency.showMembers": "在 Java 项目管理器中显示成员",
"configuration.java.dependency.syncWithFolderExplorer": "在 Java 项目管理器中同步关联当前打开的文件",
"configuration.java.dependency.autoRefresh": "在 Java 项目管理器中自动同步修改",
Expand Down
2 changes: 2 additions & 0 deletions src/commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ export namespace Commands {

export const VIEW_PACKAGE_NEW_JAVA_PACKAGE = "java.view.package.newPackage";

export const VIEW_PACKAGE_MOVE_FILE_TO_TRASH = "java.view.package.moveFileToTrash";

export const VIEW_PACKAGE_REVEAL_IN_PROJECT_EXPLORER = "java.view.package.revealInProjectExplorer";

export const JAVA_PROJECT_CREATE = "java.project.create";
Expand Down
2 changes: 2 additions & 0 deletions src/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,7 @@ export namespace Explorer {
PackageRoot = "packageRoot",
Package = "package",
Jar = "jar",
File = "file",
SourceFile = "sourceFile"
}
}
39 changes: 39 additions & 0 deletions src/explorerCommands/delete.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.

import { window, workspace, Uri } from "vscode";
import { DataNode } from "../views/dataNode";

const deleteOptions = {
recursive: true,
useTrash: true
}

const userActions = {
confirm: "Move to Recycle Bin",
cancel: "Cancel"
}

function getInformationMessage(name: string, isFolder: boolean): string {
const folderMsg = isFolder ? " and its contents" : "";
const msg = `Are you sure you want to delete \'${name}\'${folderMsg}? `;
const additionMsg = "You can restore from the Recycle Bin.";
return msg + additionMsg;
}

export async function deleteFiles(node: DataNode): Promise<void> {
const children = await node.getChildren();
const isFolder = children && children.length !== 0;
const message = getInformationMessage(node.name, isFolder);
const actions = [userActions.confirm, userActions.cancel];

let answer: string | undefined = await window.showInformationMessage(message, ...actions);

if (!answer) {
return;
}

if (answer == userActions.confirm) {
workspace.fs.delete(Uri.parse(node.uri), deleteOptions);
}
}
15 changes: 15 additions & 0 deletions src/views/PrimaryTypeNode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { Settings } from "../settings";
import { DataNode } from "./dataNode";
import { DocumentSymbolNode } from "./documentSymbolNode";
import { ExplorerNode } from "./explorerNode";
import { Explorer } from "../constants";

export class PrimaryTypeNode extends DataNode {

Expand Down Expand Up @@ -88,4 +89,18 @@ export class PrimaryTypeNode extends DataNode {
arguments: [this.uri],
};
}

protected get contextValue(): string {
let context: string = Explorer.ContextValueType.SourceFile;
const type = this.nodeData.metaData[PrimaryTypeNode.K_TYPE_KIND];

if (type === TypeKind.Enum) {
context += "+enum";
} else if (type === TypeKind.Interface) {
context += "+interface";
} else {
context += "+class";
}
return context;
}
}
2 changes: 2 additions & 0 deletions src/views/dependencyDataProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
import { instrumentOperation, instrumentOperationAsVsCodeCommand } from "vscode-extension-telemetry-wrapper";
import { Commands } from "../commands";
import { newJavaClass, newPackage } from "../explorerCommands/new";
import { deleteFiles } from "../explorerCommands/delete";
import { createJarFile } from "../exportJarFileCommand";
import { isLightWeightMode, isSwitchingServer } from "../extension";
import { Jdtls } from "../java/jdtls";
Expand Down Expand Up @@ -36,6 +37,7 @@ export class DependencyDataProvider implements TreeDataProvider<ExplorerNode> {
context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_EXPORT_JAR, (node: INodeData) => createJarFile(node)));
context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_NEW_JAVA_CLASS, (node: DataNode) => newJavaClass(node)));
context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_NEW_JAVA_PACKAGE, (node: DataNode) => newPackage(node)));
context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_MOVE_FILE_TO_TRASH, (node: DataNode) =>deleteFiles(node)));
context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_REVEAL_FILE_OS, (node?: INodeData) =>
commands.executeCommand("revealFileInOS", Uri.parse(node.uri))));
context.subscriptions.push(instrumentOperationAsVsCodeCommand(Commands.VIEW_PACKAGE_COPY_FILE_PATH, (node: INodeData) =>
Expand Down
5 changes: 5 additions & 0 deletions src/views/fileNode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { Commands } from "../commands";
import { INodeData } from "../java/nodeData";
import { DataNode } from "./dataNode";
import { ExplorerNode } from "./explorerNode";
import { Explorer } from "../constants";

export class FileNode extends DataNode {
constructor(nodeData: INodeData, parent: DataNode) {
Expand Down Expand Up @@ -35,4 +36,8 @@ export class FileNode extends DataNode {
arguments: [this.uri],
};
}

protected get contextValue(): string {
return Explorer.ContextValueType.File;
}
}