Controlar la visibilidad de un icono o un elemento Decorator

Un elemento Decorator es un icono o una línea de texto que aparece en una forma de un lenguaje específico del dominio (DSL). Puede hacer que el elemento Decorator aparezca y desaparezca en función del estado de las propiedades del modelo. Por ejemplo, en una forma que representa a una persona, podría tener iconos diferentes que aparecen, según el género de la persona, el número de niños, etc.

En los siguientes procedimientos se supone que ya ha definido una forma y su asignación a una clase de dominio. Para más información, consulte Cómo definir lenguajes específicos de dominio.

Controlar la visibilidad de un icono o un elemento Decorator de texto

  1. En el diagrama de definición de DSL, agregue a la clase de forma los iconos o elementos Decorator de texto que desee que aparezcan.

    1. Haga clic con el botón derecho en la clase de forma, seleccione Agregar y, a continuación, seleccione el tipo necesario de elemento Decorator.

    2. Establezca la propiedad Position del elemento Decorator. Más de un elemento Decorator puede tener la misma posición. Por ejemplo, podría tener iconos para hombres y mujeres compartiendo la misma posición.

    3. Establezca la propiedad Default Icon de un elemento Decorator de iconos.

  2. Seleccione la asignación de elemento de diagrama, que es la línea gris entre la clase de dominio y la clase de forma en el diagrama de definición DSL.

  3. En la ventana Detalles de DSL, en la pestaña Asignación de elemento Decorator, seleccione un elemento Decorator. Por ejemplo, MaleDecorator.

  4. Active la casilla Filtro de visibilidad.

  5. Si la propiedad de dominio que debe controlar la visibilidad está en la clase de dominio inmediata, deje ruta de acceso a la propiedad Filter en blanco.

    De lo contrario, seleccione el menú desplegable y vaya a la relación o clase donde se encuentra la propiedad.

    • Para evitar un informe de errores, no navegue por una relación marcada con "*" en la herramienta de navegación.
  6. Establezca la propiedad Filter en una propiedad de dominio. Por ejemplo, Gender.

  7. En la lista Entradas de visibilidad, agregue valores de esta propiedad de dominio para la que el elemento Decorator debe estar visible. Por ejemplo, Male.

  8. Repita los pasos para cada icono.

  9. Seleccione Transformar todas las plantillas, compilar y ejecutar. Abra un diagrama de prueba.

    Al cambiar el valor de la propiedad de control, los elementos Decorator deben aparecer y desaparecer.

Lo normal es que quiera controlar la visibilidad mediante una fórmula más compleja que un conjunto simple de valores. Por ejemplo, hacer que un icono dependa del número de vínculos de un tipo determinado, o hacer que dependa de si un número está en un intervalo determinado. En ese caso, use el siguiente procedimiento.

Controlar la visibilidad de un elemento Decorator en función de una fórmula

  1. Agregue una propiedad de dominio calculada a la clase de dominio. En la ventana Propiedades, establezca los siguientes valores:

    1. IsBrowsable = False. Este valor oculta la propiedad del usuario.

    2. Tipo = Calculado. Este valor significa que se proporciona código que calcula su valor.

    3. Nombre, por ejemplo , DecoratorControl.

    4. Tipo = booleano.

    Para obtener más información, consulte Propiedades de almacenamiento calculadas y personalizadas.

  2. Haga que la nueva propiedad controle la visibilidad del elemento Decorator.

    1. Seleccione el mapa de elementos de diagrama, que es la línea gris de la clase de dominio a la forma. En la ventana Detalles de DSL, abra la pestaña DecoratorMap.

    2. Active la casilla Filtro de visibilidad.

    3. En Propiedad de filtro, seleccione la propiedad de control DecoratorControl.

    4. En Entradas de visibilidad, escriba True.

  3. Seleccione Transformar todas las plantillas en la barra de herramientas del Explorador de soluciones.

  4. Seleccione Compilar solución en el menú Compilar.

  5. Haga doble clic en el informe de errores que ha aparecido: "YourClass no contiene una definición para GetDecoratorControlValue ...".

    El editor de texto se abre en Dsl\GeneratedCode\DomainClasses.cs. Sobre el error resaltado hay un comentario que solicita que agregue un método.

  6. Anote el espacio de nombres, la clase y el método que faltan. Por ejemplo, Company.FamilyTree.Person.GetDecoratorControlValue().

  7. En un archivo de código independiente, escriba una definición de clase parcial que contenga el método que falta. Por ejemplo:

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

    Para obtener más información sobre cómo personalizar el modelo con código de programa, consulte Navegar y actualizar un modelo en código de programa.

  8. Recompile y ejecute la solución.