Расширение VSCode с древовидным представлением и пользовательским контекстным меню - PullRequest
0 голосов
/ 13 июня 2019

Я реализую расширение кода Visual Studio, которое предоставляет настраиваемое представление дерева, и в представлении дерева я показываю настраиваемые команды в контекстном меню, используя следующую настройку contributes:

"contributes": {
    ...
    "menus": {
        "view/item/context": [
            {
                "command": "myExtension.uploadFile",
                "when": "view == myBucketExplorer"
            }
        ]
    }
    ...
}

Теперь, есть ли способ показать эту команду только для корневых узлов в виде дерева? Может быть, есть предложение when, которое может помочь с этим, или мне нужно каким-то образом отключить команду программно, когда меню действительно вызывается?

1 Ответ

1 голос
/ 13 июня 2019

Вы можете установить contextValue для вашего TreeItem.

export class Something extends vscode.TreeItem {
    // ...
    constructor(
        isRoot: boolean
    ) {
        this.contextValue = isRoot ? 'YOUR_CONTEXT' : undefined;
    }

}

async getChildren(element?: Something): Promise<Something[]> {
    if (element) {
        // NOT root
    } else {
        // ROOT -- Use different context for items
    }
}

А затем используйте "view == myBucketExplorer && viewItem == YOUR_CONTEXT"

Я не знаю, работает ли этот код или нет ... но это должно быть примерно так.

...