Compartilhar via


Personalizar e estender uma linguagem específica de domínio

Visual Studio de modelagem e visualização SDK (VMSDK) fornece vários níveis em que você pode definir as ferramentas de modelagem:

  1. Defina uma linguagem específica de domínio (DSL) usando o diagrama de definição de DSL.Você pode criar rapidamente uma DSL com uma notação diagramáticas, uma forma legível do XML e as ferramentas básicas que são necessários para gerar o código e outros artefatos.

    Para obter mais informações, consulte Como definir uma linguagem específica de domínio.

  2. Ajuste a DSL, usando os recursos mais avançados da definição de DSL.Por exemplo, você pode fazer com que links adicionais aparecem quando o usuário cria um elemento.Essas técnicas são atingidas principalmente na definição de DSL e alguns requerem algumas linhas de código de programa.

  3. Estenda suas ferramentas de modelagem usando o código de programa.VMSDK foi projetado especificamente para facilitar a integração de suas extensões com o código que é gerado a partir da definição de DSL.Para obter mais informações, consulte Escrever código para personalizar uma linguagem específica de domínio.

ObservaçãoObservação

Quando você atualizar o arquivo de definições de DSL, não se esqueça clique Transformar todos os modelos de na barra de ferramentas do Solution Explorer antes de recriar a sua solução.

Nesta seção

Para obter esse efeito.

Consulte este tópico.

Permitir ao usuário definir as propriedades de estilo e a cor de uma forma.

A classe shape ou conector de atalho, aponte para Adicionar expostose clique em um item.

Consulte Personalizando a apresentação no diagrama.

Classes diferentes de elemento de modelo semelhante no diagrama, o compartilhamento de propriedades como inicial altura e largura, cor, dicas de ferramentas.

Use a herança entre classes de conector ou formas.Mapeamentos entre formas derivadas e classes de domínio derivadas herdam os detalhes de mapeamento dos pais.

Ou então, mapear classes de domínio diferente para a mesma classe de forma.

Uma classe de elemento de modelo é exibida por contextos de formas diferentes.

Mapear mais de uma classe de forma para a mesma classe de domínio.Quando você compila a solução, execute o relatório de erros e forneça o código solicitado para decidir qual forma será usada.

Cor da forma ou outros recursos, como fonte indicam o estado atual.

Consulte Atualizando formas e conectores para refletir o modelo.

Crie uma regra que atualiza as propriedades expostas.Consulte Regras de propagam alterações dentro do modelo.

Ou, use OnAssociatedPropertyChanged() para atualizar os recursos não-exposto como, por exemplo, setas de link ou a fonte.

Ícone de alterações de forma para indicar o estado.

Defina a visibilidade do decorador mapeamento na janela de detalhes de DSL.Localize vários decoradores de imagem na mesma posição.See Atualizando formas e conectores para refletir o modelo.

Ou então, substituir ImageField.GetDisplayImage().Veja exemplo na ImageField.

Definir uma imagem de plano de fundo em qualquer forma

Substitua InitializeInstanceResources() para adicionar um ImageField ancorado.Consulte Personalizando a apresentação no diagrama.

Formas de aninhar a qualquer profundidade

Configure uma recursiva a incorporação de árvore.Defina BoundsRules para conter as formas.Consulte Personalizando a apresentação no diagrama.

Anexe conectores em pontos fixos no limite de um elemento.

Defina elementos incorporados de terminal, representados por pequenas portas no diagrama.Use BoundsRules para corrigir as portas no lugar.Consulte exemplo de diagrama de circuito em SDK de modelagem e visualização.

Campo de texto exibe um valor derivado de outros valores.

Mapear o decorador de texto para uma propriedade de domínio calculado ou armazenamento personalizado.Para obter mais informações, consulte Propriedades de armazenamento de calculado e personalizadas.

Propagar alterações entre elementos de modelo ou entre formas

Consulte Validação em um idioma específico do domínio.

Propagar alterações para recursos como outros Visual Studio extensões para fora do armazenamento.

Consulte Manipuladores de eventos propagam alterações fora do modelo.

Janela de propriedades exibe as propriedades de um elemento relacionado.

Configure o encaminhamento de propriedade.Consulte Personalizando a janela de propriedades.

Categorias de propriedade

A janela Propriedades é dividida em seções chamadas categorias.Definir o categoria de suas propriedades de domínio.As propriedades com o mesmo nome de categoria serão exibidas na mesma seção.Você também pode definir o categoria de uma função de relacionamento.

Controle o acesso do usuário para propriedades de domínio

Definir É navegável false para impedir que uma propriedade de domínio que aparecem na janela Propriedades em tempo de execução.Você ainda poderá mapeá-lo para decoradores de texto.

É somente leitura da interface do usuário impede que os usuários alterem uma propriedade de domínio.

Programa acesse a propriedade de domínio não é afetado.

Altere o nome, ícone e visibilidade de nós no Gerenciador de modelos do seu DSL.

Consulte Personalizando o Gerenciador de modelos.

Habilitar a copiar, recortar e colar

Definir o Permitem copiar colar propriedade da Editor nó no Explorer DSL.

Copie os links de referência e seus destinos, sempre que um elemento é copiado.Por exemplo, copie os comentários anexados a um item.

Definir o Propaga Copy a propriedade da função de origem (representada pela linha em um dos lados da relação de domínio no diagrama de definição de DSL).

Escreva código para substituir o ProcessOnCopy para obter efeitos mais complexos.

Consulte Personalizar o comportamento de cópia.

Excluir, reassociar ou vincular novamente os elementos relacionados quando um elemento é excluído.

Definir o Propaga excluir o valor de uma função de relacionamento.Para obter efeitos mais complexos, substituir ShouldVisitRelationship e ShouldVisitRolePlayer métodos na MyDslDeleteClosure classe, definida naDomainModel.cs

Consulte Personalizar o comportamento de exclusão.

Preserve o layout de forma e a aparência em copiar e arrastar e soltar.

Adicionar as formas e conectores para o copiada ElementGroupPrototype.O método mais conveniente para substituir éElementOperations.CreateElementGroupPrototype()

Consulte Personalizar o comportamento de cópia.

Colar formas em um local escolhido, como, por exemplo, a posição atual do cursor.

Substituir ClipboardCommandSet.ProcessOnCopy() para usar a versão específica do local do ElementOperations.Merge(). consulte Personalizar o comportamento de cópia.

Criar links adicionais ao colar

Substituir ClipboardCommandSet.ProcessOnPasteCommand()

Habilitar arrastar e soltar neste diagrama, outras DSLs ou UML diagramas e elementos do Windows

Consulte Como: adicionar um manipulador de arrastar-e-soltar.

Permitir que uma forma ou a ferramenta sejam arrastados para uma forma filho, como, por exemplo, uma porta, como se ele foram arrastado para o pai.

Defina uma diretiva de mesclagem do elemento da classe de objeto de destino, para encaminhar o objeto solto ao pai.Consulte Personalizando a movimentação e criação de elemento.

Permitir que uma forma ou a ferramenta sejam arrastados para uma forma e ter o links adicionais ou objetos criados.Por exemplo, para permitir que um comentário para ser solto sobre um item ao qual é a ser vinculado.

Definir uma diretiva de mesclagem do elemento na classe de domínio de destino e defina os vínculos a serem gerados.Em casos complexos, você pode adicionar código personalizado.Consulte Personalizando a movimentação e criação de elemento.

Crie um grupo de elementos com uma ferramenta.Por exemplo, um componente com um conjunto fixo de portas.

Substitua o método de inicialização da caixa de ferramentas em ToolboxHelper.cs.Crie um protótipo de grupo de elemento (EGP) que contém os elementos e os links de relacionamento.Consulte Personalizando as ferramentas e a caixa de ferramentas..

Incluir as formas entidade e a porta no EGP, ou definir o BoundsRules ao posicionar as formas de porta quando o EGP é instanciado.Consulte BoundsRules restringir o tamanho e a localização de forma.

Use uma ferramenta de conexão para criar uma instância de vários tipos de relacionamento.

Adicione diretivas de conectar-se de Link (LCD) para o construtor de conexão que é invocado pela ferramenta.Os LCDs determinam o tipo da relação dos tipos de dois elementos.Para fazer isso dependem os estados dos elementos, você pode adicionar código personalizado.Consulte Personalizando as ferramentas e a caixa de ferramentas..

Ferramentas de auto-adesivas – o usuário pode clicar duas vezes qualquer ferramenta para criar muitas formas ou conectores em sucessão.

No Explorer DSL, selecione o Editor nó.Na janela Properties, defina Usa itens de caixa de ferramentas de auto-adesivas.

Definir os comandos de menu

Consulte Como: modificar um comando de Menu padrão em um idioma específico do domínio.

Restringir o modelo com as regras de validação

Consulte Validação em um idioma específico do domínio.

Gere código, documentos ou arquivos de configuração a partir de uma DSL.

Gerando código a partir de uma linguagem específica de domínio

Personalizar a forma como os modelos são salvas em arquivo.

Consulte Personalizando a serialização de XML e armazenamento de arquivos.

Salve modelos para bancos de dados ou outra mídia.

Substituir YourLanguageDocData

Consulte Personalizando a serialização de XML e armazenamento de arquivos.

Integre diversas DSLs para que funcionem como parte de um aplicativo.

Consulte A integração de modelos usando o Modelbus de Visual Studio.

Permitir que seu DSL para serem estendidos por terceiros e controlar a extensão.

Estender seu DSL usando MEF

Compartilhamento de Classes entre DSLs usando uma biblioteca de DSL

Definir uma diretiva de bloqueio para criar segmentos de somente leitura

Consulte também

Conceitos

Como definir uma linguagem específica de domínio

Visualização e modelagem SDK - linguagens específicas de domínio

Outros recursos

Escrever código para personalizar uma linguagem específica de domínio