Personalizando e estendendo uma linguagem específica do 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 do 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 Escrevendo código para personalizar uma linguagem específica do domínio.
Dica
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 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 calculadas e de armazenamento personalizado. |
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 Personalizando o comportamento da operação de copiar. |
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 Personalizando o comportamento da operação de excluir. |
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 Personalizando o comportamento da operação de copiar. |
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 Personalizando o comportamento da operação de copiar. |
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 evento 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 criação e o movimento de elementos. |
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 criação e o movimento de elementos. |
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 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 restringem o local e o tamanho de uma 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 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 uma linguagem específica 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 do domínio |
Personalizar a forma como os modelos são salvas em arquivo. |
Consulte Personalizando o armazenamento de arquivos e a serialização XML. |
Salve modelos para bancos de dados ou outra mídia. |
Substituir YourLanguageDocData Consulte Personalizando o armazenamento de arquivos e a serialização XML. |
Integre diversas DSLs para que funcionem como parte de um aplicativo. |
Consulte Integrando modelos por meio do Visual Studio Modelbus. |
Permitir que seu DSL para serem estendidos por terceiros e controlar a extensão. |
Compartilhando classes entre DSLs por meio de uma biblioteca de DSLs Definindo uma política de bloqueio para criar segmentos somente leitura |
Consulte também
Conceitos
Como definir uma linguagem específica do domínio
SDK de Modelagem para Visual Studio - linguagens específicas ao domínio
Outros recursos
Escrevendo código para personalizar uma linguagem específica do domínio