Compartilhar via


Controlar a visibilidade de um ícone ou de um decorador

Um decorador é um ícone ou linha de texto que aparece em uma forma em um DSL (idioma específico do domínio). Você pode fazer com que o decorador apareça e desapareça dependendo do estado das propriedades no modelo. Por exemplo, em uma forma que representa uma Pessoa, você pode ter ícones diferentes que aparecem, dependendo do sexo da pessoa, do número de filhos e assim por diante.

Os procedimentos a seguir pressupõem que você já definiu uma forma e seu mapeamento para uma classe de domínio. Para obter mais informações, confira Como definir uma Linguagem Específica de Domínio.

Controlar a visibilidade de um ícone ou de um decorador de texto

  1. No diagrama definição de DSL, adicione à classe de forma os ícones ou decoradores de texto que você deseja exibir.

    1. Clique com o botão direito do mouse na classe de forma, selecione Adicionar e, em seguida, selecione o tipo de decorador necessário.

    2. Defina a propriedade Posição do decorador. Mais de um decorador pode ter a mesma posição. Por exemplo, você pode ter ícones para homens e mulheres compartilhando a mesma posição.

    3. Defina a propriedade Ícone Padrão de um decorador de ícone.

  2. Selecione o mapa do elemento de diagrama, que é a linha cinza entre a classe de forma e a classe de domínio no diagrama definição de DSL.

  3. Na janela Detalhes da DSL, na guia Mapas do Decorador, selecione um decorador. Por exemplo, o MaleDecorator.

  4. Marque a caixa de seleção Filtro de Visibilidade.

  5. Se a propriedade de domínio que deve controlar a visibilidade estiver na classe de domínio imediata, deixe Caminho à propriedade de filtro em branco.

    Caso contrário, selecione o menu suspenso e navegue até a relação ou classe em que a propriedade está localizada.

    • Para evitar um relatório de erros, não navegue por uma relação marcada com "*" na ferramenta de navegação.
  6. Defina a Propriedade de Filtro como uma propriedade de domínio. Por exemplo, Gênero.

  7. Na lista Entradas de Visibilidade, adicione valores dessa propriedade de domínio para a qual o decorador deve estar visível. Por exemplo, Masculino.

  8. Repita as etapas para cada ícone.

  9. Selecione Transforme Todos os Modelos, compile e execute. Abra um diagrama de teste.

    Quando você altera o valor da propriedade de controle, os decoradores devem aparecer e desaparecer.

Com frequência, você deseja que a visibilidade seja controlada por uma fórmula mais complexa do que um conjunto simples de valores. Por exemplo, ter um ícone depende do número de links de um tipo específico ou fazê-lo depender se um número está em um intervalo específico. Nesse caso, use o procedimento a seguir.

Controlar a visibilidade de um decorador com base em uma fórmula

  1. Adicione uma propriedade de domínio calculada à classe de domínio. Na janela Propriedades, defina os valores a seguir.

    1. IsBrowsable = False. Esse valor oculta a propriedade do usuário.

    2. Kind = Calculated. Esse valor significa que você fornece um código que calcula seu valor.

    3. Name, por exemplo DecoratorControl.

    4. Type = Boolean.

    Para obter mais informações, confira Propriedades de armazenamento calculado e personalizado.

  2. Faça com que a nova propriedade controle a visibilidade do decorador.

    1. Selecione o mapa do elemento de diagrama, que é a linha cinza da classe de domínio para a forma. Na janela Detalhes de DSL, abra a guia Mapas de Decoradores.

    2. Marque a caixa de seleção Filtro de Visibilidade.

    3. Em Propriedade de Filtro, selecione a propriedade de controle DecoratorControl.

    4. Em Entradas de Visibilidade, insiraTrue.

  3. Selecione Transformar Todos os Modelos na barra de ferramentas do Gerenciador de Soluções.

  4. Selecione Solução de Build no menu Build.

  5. Clique duas vezes no relatório de erros exibido: "YourClass não contém uma definição para GetDecoratorControlValue ...".

    O editor de texto é aberto em Dsl\GeneratedCode\DomainClasses.cs. Acima do erro realçado está um comentário que solicita que você adicione um método.

  6. Observe o namespace, a classe e o método ausentes. Por exemplo, Company.FamilyTree.Person.GetDecoratorControlValue().

  7. Em um arquivo de código separado, escreva uma definição de classe parcial que contém o método ausente. Por exemplo:

    namespace Company.FamilyTree
    {
      partial class Person
      {
        bool GetDecoratorControlValue()
        {
          return this.Children.Count > 0;
        }
      }
    }
    

    Para obter mais informações sobre como personalizar o modelo com o código do programa, confira Navegando e atualizando um modelo no código do programa.

  8. Recompile e execute a solução.