Controlar la visibilidad de un icono o un objeto DecoratorControlling the Visibility of an Icon or Decorator

A decorador es un icono o una línea de texto que aparece en una forma de un lenguaje específico de dominio (DSL).A decorator is an icon or line of text that appears on a shape in a domain-specific language (DSL). Puede que aparezca la decorador y desaparecen según el estado de las propiedades en el modelo.You can make the decorator appear and disappear depending on the state of properties in the model. Por ejemplo, en una forma que representa a una persona, podría tener diferentes iconos que aparecen según el sexo de la persona, número de elementos secundarios y así sucesivamente.For example, on a shape representing a Person, you could have different icons that appear depending on the person's gender, number of children, and so on.

Controlar la visibilidad de un icono o elemento decoratorControlling the visibility of an icon or decorator

El siguiente procedimiento se supone que ya se han definido una forma y su asignación a una clase de dominio.The following procedure assumes that you have already defined a shape and its mapping to a domain class. Para obtener más información, consulte cómo definir un lenguaje específico de dominio.For more information, see How to Define a Domain-Specific Language.

Para controlar la visibilidad de un elemento decorator de icono o textoTo control the visibility of an icon or text decorator

  1. En el diagrama de definición DSL, agregue a la clase de forma los iconos o decoradores de texto que desea que aparezca.In the DSL Definition diagram, add to the shape class the icons or text decorators that you want to appear.

    1. Haga clic en la clase shape, seleccione agregary, a continuación, haga clic en el tipo de elemento decorator necesario.Right-click the shape class, point to Add, and then click the required type of decorator.

    2. Establecer el decorador posición propiedad.Set the decorator's Position property. Más de un elemento decorator puede tener la misma posición que él.More than one decorator can have the same position. Por ejemplo, podría tener iconos para hombre y mujer compartir la misma posición que él.For example, you could have icons for male and female sharing the same position.

    3. Establecer el icono predeterminado propiedad de un elemento decorator de icono.Set the Default Icon property of an icon decorator.

  2. Seleccione la asignación de elemento de diagrama, que es la línea gris entre la clase shape y la clase de dominio en el diagrama de definición DSL.Select the diagram element map, which is the gray line between the shape class and the domain class on the DSL Definition diagram.

  3. En la ventana Detalles de DSL, en la decorador mapas ficha, seleccione un decorador.In the DSL Details window, in the Decorator Maps tab, select a decorator. Por ejemplo, el MaleDecorator.For example, the MaleDecorator.

  4. Compruebe el filtro de visibilidad cuadro.Check the Visibility Filter box.

  5. Si la propiedad de dominio que debe controlar la visibilidad está en la clase de dominio inmediato, deje ruta de acceso a la propiedad Filter en blanco.If the domain property that should control visibility is on the immediate domain class, leave Path to Filter Property blank.

    En caso contrario, haga clic en el menú desplegable y navegue a la clase donde se encuentra la propiedad o relación.Otherwise, click the drop-down menu and navigate to the relationship or class where the property is located.

    • Para evitar un informe de errores, no debe navegar a través de una relación marcada con "*" en la herramienta de exploración.To avoid an error report, you should not navigate through a relationship marked with "*" in the navigation tool.
  6. Establecer el propiedad Filter a una propiedad de dominio.Set the Filter Property to a domain property. Por ejemplo, sexo.For example, Gender.

  7. En el entradas de visibilidad lista, agregue los valores de esta propiedad de dominio para el que el elemento decorator debería estar visible.In the Visibility Entries list, add values of this domain property for which the decorator should be visible. Por ejemplo, hombre.For example, Male.

  8. Repita los pasos para cada icono.Repeat the steps for each icon.

  9. Transformar todas las plantillas, compilar y ejecutar y abrir un diagrama de pruebas.Transform All Templates, build and run, and open a test diagram.

  10. Cuando se cambia el valor de la propiedad de control, el decoradores deben aparecen y desaparecen.When you change the controlling property value, the decorators should appear and disappear.

    Con frecuencia, desea visibilidad esté controlada por una fórmula más compleja de un sencillo conjunto de valores.Frequently, you want visibility to be controlled by a more complex formula than a simple set of values. Por ejemplo, para tener un icono dependen del número de vínculos de un tipo determinado, o para facilitar dependen de un si es un número en un intervalo determinado.For example, to have an icon depend on the number of links of a particular type, or to make it depend on a whether a number is in a particular range. En ese caso, utilice el procedimiento siguiente.In that case, use the following procedure.

Para controlar la visibilidad de un elemento decorator según una fórmulaTo control the visibility of a decorator based on a formula

  1. Agregar una propiedad de dominio calculada a la clase de dominio.Add a calculated domain property to the domain class. En el propiedades ventana, establezca los siguientes valores:In the Properties window, set the following values:

    IsBrowsable =False-Esto oculta la propiedad del usuario IsBrowsable = False - this hides the property from the user

    Tipo =Calculated-Esto significa que se va a proporcionar código que calcula su valor Kind = Calculated - this means that you will provide code that calculates its value

    Nombre como DecoratorControlName for example DecoratorControl

    tipo de = BooleanType = Boolean

    Para obtener más información, consulte calculadas y las propiedades de almacenamiento personalizada.For more information, see Calculated and Custom Storage Properties.

  2. Asegúrese de controlar la visibilidad decorador la nueva propiedad.Make the new property control the decorator visibility.

    1. Seleccione la asignación de elemento de diagrama, que es la línea gris de la clase de dominio a la forma.Select the diagram element map, which is the gray line from the domain class to the shape. En el detalles de DSL ventana, abra el DecoratorMap ficha.In the DSL Details window, open the DecoratorMap tab.

    2. Compruebe el filtro de visibilidad cuadro.Check the Visibility Filter box.

    3. En propiedad Filter, seleccione la propiedad de control DecoratorControl.In Filter Property, select the control property DecoratorControl.

    4. En visibilidad entradas, escriba True.Under Visibility Entries, enter True.

  3. Haga clic en Transformar todas las plantillas en la barra de herramientas del explorador de soluciones.Click Transform All Templates in the Solution Explorer toolbar.

  4. Haga clic en generar solución en el generar menú.Click Build Solution on the Build menu.

  5. Haga doble clic en el informe de errores que ha aparecido: "YourClass no contiene ninguna definición para GetDecoratorControlValue...".Double-click the error report that has appeared: "YourClass does not contain a definition for GetDecoratorControlValue ...".

    Se abrirá el editor de texto en Dsl\GeneratedCode\DomainClasses.cs.The text editor opens on Dsl\GeneratedCode\DomainClasses.cs. Antes del error resaltado es un comentario que le pedirá que agregue un método.Above the highlighted error is a comment that requests you to add a method.

  6. Tenga en cuenta el espacio de nombres, clase y método que faltan.Note the namespace, class and method that are missing. Por ejemplo, Company.FamilyTree.Person.GetDecoratorControlValue().For example, Company.FamilyTree.Person.GetDecoratorControlValue().

  7. En un archivo de código independiente, escribir una definición de clase parcial que contiene el método que falta.In a separate code file, write a partial class definition that contains the missing method. Por ejemplo:For example:

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

    Para obtener más información acerca de cómo personalizar el modelo de código de programa, consulte navegar y actualizar un modelo de código de programa.For more information about customizing the model with program code, see Navigating and Updating a Model in Program Code.

  8. Volver a generar y ejecutar la solución.Rebuild and run the solution.

Vea tambiénSee Also