Vscode API: когда 'case' показывает вклад - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь установить контекстное меню в TreeView для расширения ftp, которое я пишу.В package.json я могу добавить случай "when", в котором я пытаюсь проверить, является ли viewItem каталогом или файлом.

Я нашел эту ссылку , который показывает все "when" случаев.Я следую этому примеру.

Я пытаюсь сделать что-то вроде этого:

"view/item/context": [
    {
        "command": "liveworkspace.checkout",
        "when": "view == live-workspace-remote && viewItem == file"
    }
]

Я почти уверен, что делаю это неправильно, но не уверенправильного пути.

1 Ответ

0 голосов
/ 14 мая 2019

Алекс указал мне правильное направление в комментариях, так как я закончил делать это следующим образом:

Внутри моего TreeViewDataProvider Я добавил следующую строку

contextValue: element.isDirectory ? 'folder' : 'file'

Кдать перспективу, это был мой getTreeItem

    public getTreeItem(element: FtpNode): vscode.TreeItem {
    console.log(element.resource.path);

    return {
        resourceUri: element.resource,
        collapsibleState: element.isDirectory ? vscode.TreeItemCollapsibleState.Collapsed : void 0,
        command: element.isDirectory ? void 0 : {
            command: 'live-workspace.openFtpResource',
            arguments: [element.resource],
            title: 'Open File'
        },
        contextValue: element.isDirectory ? 'folder' : 'file'  //Here I am!
    };
}

contextValue - ожидаемое возвращение для treeItem, предоставляя ему дополнительную информацию для использования в package.json, теперь я могусделайте мое сравнение следующим образом:

"view/item/context": [
   {
       "command": "liveworkspace.checkout",
       "when": "view == live-workspace-remote && viewItem == file" // or viewItem == folder
   }
]
...