Contrôle de la visibilité d'une icône ou d'un élément décoratifControlling the Visibility of an Icon or Decorator

A decorator est une icône ou une ligne de texte qui apparaît sur la forme d’un langage spécifique à un domaine (DSL).A decorator is an icon or line of text that appears on a shape in a domain-specific language (DSL). Vous pouvez afficher l’élément décoratif et disparaissent en fonction de l’état des propriétés dans le modèle.You can make the decorator appear and disappear depending on the state of properties in the model. Par exemple, sur une forme représentant une personne, vous pourriez avoir différentes icônes qui s’affichent en fonction du sexe de la personne, nombre d’enfants et ainsi de suite.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.

Contrôle de la visibilité d’une icône ou d’un élément décoratifControlling the visibility of an icon or decorator

La procédure suivante suppose que vous avez déjà défini une forme et son mappage à une classe de domaine.The following procedure assumes that you have already defined a shape and its mapping to a domain class. Pour plus d’informations, consultez comment définir un langage spécifique à un domaine.For more information, see How to Define a Domain-Specific Language.

Pour contrôler la visibilité d’un decorator icône ou du texteTo control the visibility of an icon or text decorator

  1. Dans le schéma de définition DSL, ajouter à la classe de forme, les icônes ou les éléments décoratifs de texte que vous souhaitez voir apparaître.In the DSL Definition diagram, add to the shape class the icons or text decorators that you want to appear.

    1. Avec le bouton droit de la classe de forme, pointez sur ajouter, puis cliquez sur le type de decorator requis.Right-click the shape class, point to Add, and then click the required type of decorator.

    2. Définir le decorator Position propriété.Set the decorator's Position property. Plus d’un élément décoratif peut avoir la même position.More than one decorator can have the same position. Par exemple, vous pourriez avoir des icônes pour homme et Femme partage la même position.For example, you could have icons for male and female sharing the same position.

    3. Définir le icône par défaut propriété d’un élément décoratif icône.Set the Default Icon property of an icon decorator.

  2. Sélectionnez le mappage d’élément de diagramme, qui est la ligne grise entre la classe de forme et de la classe de domaine sur le diagramme de définition 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. Dans la fenêtre Détails DSL, dans le Decorator Maps , sélectionnez un élément décoratif.In the DSL Details window, in the Decorator Maps tab, select a decorator. Par exemple, le MaleDecorator.For example, the MaleDecorator.

  4. Vérifiez le filtre de visibilité boîte.Check the Visibility Filter box.

  5. Si la propriété de domaine qui doit-elle contrôler la visibilité est sur la classe de domaine immédiate, laissez chemin d’accès à la propriété Filter vide.If the domain property that should control visibility is on the immediate domain class, leave Path to Filter Property blank.

    Sinon, cliquez sur le menu déroulant et accédez à la classe où se trouve la propriété ou de relation.Otherwise, click the drop-down menu and navigate to the relationship or class where the property is located.

    • Pour éviter un rapport d’erreurs, vous ne devez pas naviguer via une relation marquée avec « * » dans l’outil de navigation.To avoid an error report, you should not navigate through a relationship marked with "*" in the navigation tool.
  6. Définir le propriété Filter à une propriété de domaine.Set the Filter Property to a domain property. Par exemple, le sexe.For example, Gender.

  7. Dans le visibilité entrées liste, ajouter des valeurs de cette propriété de domaine pour lequel le decorator doit être visible.In the Visibility Entries list, add values of this domain property for which the decorator should be visible. Par exemple, homme.For example, Male.

  8. Répétez les étapes pour chaque icône.Repeat the steps for each icon.

  9. Transformer tous les modèles, générer et exécuter et ouvrez un diagramme de test.Transform All Templates, build and run, and open a test diagram.

  10. Lorsque vous modifiez la valeur de propriété de contrôle, les éléments décoratifs doivent apparaissent et disparaissent.When you change the controlling property value, the decorators should appear and disappear.

    Fréquemment, vous souhaitez que la visibilité d’être contrôlés par une formule plus complexe qu’un simple ensemble de valeurs.Frequently, you want visibility to be controlled by a more complex formula than a simple set of values. Par exemple, une icône dépend du nombre de liens d’un type particulier ou pour le rendre dépendent si un nombre est dans une plage particulière.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. Dans ce cas, utilisez la procédure suivante.In that case, use the following procedure.

Pour contrôler la visibilité d’un élément décoratif basée sur une formuleTo control the visibility of a decorator based on a formula

  1. Ajouter une propriété de domaine calculée à la classe de domaine.Add a calculated domain property to the domain class. Dans le propriétés fenêtre, définissez les valeurs suivantes :In the Properties window, set the following values:

    IsBrowsable =False-cela masque la propriété à partir de l’utilisateur IsBrowsable = False - this hides the property from the user

    Type =Calculated-cela signifie que vous fournissez le code qui calcule sa valeur Kind = Calculated - this means that you will provide code that calculates its value

    Nom par exemple DecoratorControlName for example DecoratorControl

    Type = BooleanType = Boolean

    Pour plus d’informations, consultez calculé et les propriétés de stockage personnalisé.For more information, see Calculated and Custom Storage Properties.

  2. Vérifiez la nouvelle propriété de contrôler la visibilité decorator.Make the new property control the decorator visibility.

    1. Sélectionnez le mappage d’élément de diagramme, qui est la ligne grise à partir de la classe de domaine à la forme.Select the diagram element map, which is the gray line from the domain class to the shape. Dans le détails DSL fenêtre, ouvrez le DecoratorMap onglet.In the DSL Details window, open the DecoratorMap tab.

    2. Vérifiez le filtre de visibilité boîte.Check the Visibility Filter box.

    3. Dans propriété Filter, sélectionnez la propriété du contrôle DecoratorControl.In Filter Property, select the control property DecoratorControl.

    4. Sous visibilité entrées, entrez True.Under Visibility Entries, enter True.

  3. Cliquez sur transformer tous les modèles dans la barre d’outils de l’Explorateur de solutions.Click Transform All Templates in the Solution Explorer toolbar.

  4. Cliquez sur générer la Solution sur la générer menu.Click Build Solution on the Build menu.

  5. Double-cliquez sur le rapport d’erreurs est apparu : «YourClass ne contient pas de définition pour GetDecoratorControlValue... ».Double-click the error report that has appeared: "YourClass does not contain a definition for GetDecoratorControlValue ...".

    L’éditeur de texte s’ouvre sur Dsl\GeneratedCode\DomainClasses.cs.The text editor opens on Dsl\GeneratedCode\DomainClasses.cs. L’erreur en surbrillance est un commentaire qui vous permet d’ajouter une méthode de demande.Above the highlighted error is a comment that requests you to add a method.

  6. Notez l’espace de noms, classes et des méthodes qui sont manquants.Note the namespace, class and method that are missing. Par exemple, Company.FamilyTree.Person.GetDecoratorControlValue().For example, Company.FamilyTree.Person.GetDecoratorControlValue().

  7. Dans un fichier de code distinct, écrivez une définition de classe partielle qui contient la méthode manquante.In a separate code file, write a partial class definition that contains the missing method. Par exemple :For example:

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

    Pour plus d’informations sur la personnalisation du modèle avec le code de programme, consultez navigation et la mise à jour d’un modèle de Code de programme.For more information about customizing the model with program code, see Navigating and Updating a Model in Program Code.

  8. Régénérer et exécuter la solution.Rebuild and run the solution.

Voir aussiSee Also

Définition des formes et connecteurs Defining Shapes and Connectors
Définition d’une Image d’arrière-plan sur un diagramme Setting a Background Image on a Diagram
Navigation et la mise à jour d’un modèle de Code de programme Navigating and Updating a Model in Program Code
Écriture de code pour personnaliser un langage spécifique à un domaineWriting Code to Customise a Domain-Specific Language