vscode插件开发之 - Treeview视图

  一些测试类插件,往往需要加载测试文件,并执行这些测试文件。以playwright vscode为例,该插件可以显示目录下所有的测试文件。如下图所示,显示了tests目录下的所有xxx.spec.js文件,那么如何在vscode插件开发中显示TreeView呢?主要有三个步骤

 步骤一:在package.json文件中配置TreeView

如下所示,在views中配置了explorer类型的view,含义是资源管理器是默认的视图容器,它显示工作区的文件和文件夹结构。在视图部分中的“explorer”键表示在这里定义的自定义视图将被添加到VS Code中的资源管理器视图容器中。自定义的视图名称是Sample,id是sample。

"contributes": {
    "views": {
      "explorer": [
        {
          "id": "sample",
          "name": "Sample"
        }
      ]
    },
    "commands": [
      {
        "command": "sampleExplorer.refresh",
        "title": "Refresh Sample Explorer"
      }
    ]
  },
在 VS Code 开发插件中,可以使用 Webview 来实现非树形的自定义视图。下面是一份示例代码: ``` // 首先需要创建一个 WebviewPanel let panel: vscode.WebviewPanel | undefined; function createMyView() { if (panel) { panel.reveal(); } else { panel = vscode.window.createWebviewPanel( 'myView', // 唯一标识符 'My View', // 标题 vscode.ViewColumn.One, // 显示位置 { // 可选配置项 enableScripts: true, retainContextWhenHidden: true } ); // 注册消息处理函数 panel.webview.onDidReceiveMessage( message => { // 处理返回的消息 }, undefined, context.subscriptions ); } // 加载 Webview 所需的 HTML、CSS、JS 文件 const htmlFile = panel.webview.asWebviewUri( vscode.Uri.file(path.join(context.extensionPath, 'view', 'index.html')) ); panel.webview.html = `<iframe src="${htmlFile}" style="width: 100%; height: 100%; border: none;"></iframe>`; } // 在 TreeView 中使用 WebviewPanel const provider = new MyTreeDataProvider(); const view = vscode.window.createTreeView('myTreeview', { treeDataProvider: provider }); view.onDidChangeSelection(event => { const [item] = event.selection; if (item instanceof MyTreeItem) { createMyView(); panel!.webview.postMessage({ item }); } }); // 在 Webview 中接收参数 window.addEventListener('message', event => { const message = event.data; console.log(message.item); }); ``` 在这个示例中,首先创建了一个 WebviewPanel,随后在 TreeView 的 `onDidChangeSelection` 事件处理函数中检测到选中了特定的 TreeItem,就会打开 Webview 并传递参数。在 Webview 中接收到参数后,就可以进行相关的操作并返回结果。注意,在 Webview 中需要使用 `window.postMessage` 方法来向插件传递消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

taoli-qiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值