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:
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.
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.
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çã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. |
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 |
|
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 |
|
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. |
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