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

Un 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 selon 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 pouvez avoir des icônes différentes 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’é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 élément décoratif icône ou du texteTo control the visibility of an icon or text decorator

  1. Dans le diagramme de définition DSL, vous devez ajouter à la classe shape 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 d’élément décoratif nécessaire.Right-click the shape class, point to Add, and then click the required type of decorator.

    2. Valeur de l’élément décoratif Position propriété.Set the decorator's Position property. Plusieurs éléments décoratifs 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 d’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 mappages de décorateurs , 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érifier 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é de filtre 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 entrées de visibilité liste, ajoutez les valeurs de cette propriété de domaine pour lequel l’élément décoratif 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 apparaître et disparaître.When you change the controlling property value, the decorators should appear and disappear.

    Fréquemment, vous souhaitez visibilité pour être contrôlé 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 varient selon un qu’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, procédez comme suit.In that case, use the following procedure.

Pour contrôler la visibilité d’un décorateur selon 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 fournirez 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ées 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é de décorateur.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érifier 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 entrées de visibilité, entrez True.Under Visibility Entries, enter True.

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

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

  5. Double-cliquez sur le rapport d’erreurs qui s’affiche : «Votre_classe 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. Au-dessus de l’erreur en surbrillance est un commentaire que vous êtes invité à ajouter une méthode.Above the highlighted error is a comment that requests you to add a method.

  6. Notez l’espace de noms, classe et méthode 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 séparé, é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. 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 un modèle dans le 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érez et exécutez la solution.Rebuild and run the solution.

Voir aussiSee Also