Seleção e moeda no IDE

O ambiente de desenvolvimento integrado (IDE) do Visual Studio mantém informações sobre os objetos atualmente selecionados dos usuários usando o contexto de seleção. Com o contexto de seleção, os VSPackages podem participar do rastreamento de moeda de duas maneiras:

  • Propagando informações de moeda sobre os VSPackages para o IDE.

  • Monitorando as seleções atualmente ativas dos usuários no IDE.

Contexto de seleção

O IDE do Visual Studio controla globalmente a moeda do IDE em seu próprio objeto de contexto de seleção global. A tabela a seguir mostra os elementos que compõem o contexto de seleção.

Element Descrição
Hierarquia atual Normalmente o projeto atual; uma hierarquia atual NULL indica que a solução como um todo é atual.
ItemID atual O item selecionado dentro da hierarquia atual; Quando há várias seleções em uma janela de projeto, pode haver vários itens atuais.
Atual SelectionContainer Mantém um ou mais objetos para os quais a janela Propriedades deve exibir propriedades.

Além disso, o ambiente mantém duas listas globais:

  • Uma lista de identificadores de comando de interface do usuário ativos

  • Uma lista de tipos de elementos ativos no momento.

Tipos de janela e seleção

O IDE do Visual Studio organiza as janelas em dois tipos gerais:

  • Janelas do tipo hierarquia

  • Janelas de quadro, como janelas de ferramentas e documentos

    O IDE controla a moeda de forma diferente para cada um desses tipos de janela.

    A janela de tipo de projeto mais comum é o gerenciador de soluções, que o IDE controla. Uma janela de tipo de projeto controla a hierarquia global e ItemID do contexto de seleção global, e a janela depende da seleção do usuário para determinar a hierarquia atual. Para janelas do tipo projeto, o ambiente fornece o serviço SVsShellMonitorSelectionglobal , por meio do qual os VSPackages podem monitorar os valores atuais para elementos abertos. A navegação de propriedades no ambiente é impulsionada por esse serviço global.

    As janelas de quadro, por outro lado, usam o DocObject dentro da janela de quadro para enviar por push o valor SelectionContext (o trio hierarchy/ItemID/SelectionContainer). . As janelas de moldura usam o serviço SVsShellMonitorSelection para essa finalidade. O DocObject pode enviar por push somente valores para o contêiner de seleção, deixando os valores locais para hierarquia e ItemID inalterados, como é típico para documentos filho MDI.

Eventos e Moeda

Dois tipos de eventos podem ocorrer que afetam a noção de moeda do ambiente:

  • Eventos que são propagados para o nível global e alteram o contexto de seleção de quadro de janela. Exemplos desse tipo de evento incluem uma janela filho MDI sendo aberta, uma janela de ferramenta global sendo aberta ou uma janela de ferramenta do tipo projeto sendo aberta.

  • Eventos que alteram os elementos rastreados no contexto de seleção de quadro de janela. Exemplos incluem alterar a seleção em um DocObject ou alterar a seleção em uma janela de tipo de projeto.