Partager via


Personnalisation et extension d'un langage spécifique à un domaine

la modélisation et la visualisation Kit de développement logiciel (VMSDK) de Visual Studio fournit plusieurs niveaux auxquels vous pouvez définir des outils de modélisation :

  1. Définissez un langage spécifique au domaine (DSL) à l'aide de le schéma de définition de langage spécifique à un domaine. Vous pouvez rapidement créer un DÉSOLÉ avec une notation schématique, un formulaire lisible XML, et les outils de base requis pour générer du code et d'autres artefacts.

    Pour plus d'informations, consultez Comment : définir un langage spécifique à un domaine.

  2. Affiner le domaine (en utilisant des fonctionnalités les plus avancées de la définition de langage spécifique à un domaine. Par exemple, vous pouvez faire des liens supplémentaires s'afficher lorsque l'utilisateur crée un élément. Ces techniques sont principalement accomplies dans la définition DÉSOLÉ, et certains ont des lignes de code du programme.

  3. Étendre vos outils de modélisation à l'aide de le code de programme. VMSDK est conçu spécifiquement pour aider à intégrer vos extensions avec le code qui est généré de la définition de langage spécifique à un domaine. Pour plus d'informations, consultez Écriture de code pour personnaliser un langage spécifique à un domaine.

Notes

Lorsque vous mettez à jour le fichier de définitions DÉSOLÉ, n'oubliez pas de cliquer sur Transformer tous les modèles dans la barre d'outils de l'explorateur de solutions avant de régénérer votre solution.

Dans cette section

Pour atteindre cet effet

Reportez -vous à cette rubrique

Permettez à l'utilisateur de définir les propriétés de style et la couleur d'une forme.

Cliquez avec le bouton droit sur la forme ou de la classe connecteur, pointez sur ajoutez exposé, puis cliquez sur un élément.

Consultez Personnalisation de la présentation d'un diagramme.

Différentes classes de sembler d'élément de modèle similaires sur le diagramme, le partage des propriétés telles que la hauteur et la largeur initiales, couleur, info-bulles.

utilisez l'héritage entre les formes ou les classes de connecteur. Les mappages entre les formes dérivées et les classes dérivées de domaine héritent des coordonnées de mappage des parents.

ou, mappez les différentes classes de domaine à la même classe de forme.

une classe d'élément de modèle est affichée par différents contextes de formes.

Mappez plusieurs classes de forme à la même classe de domaine. Lorsque vous générez la solution, suivez le rapport d'erreurs et fournissez le code demandé pour déterminer quelle forme à utiliser.

La couleur de la forme ou d'autres fonctionnalités telles que la police indiquent l'état actuel.

Consultez Mise à jour des formes et des connecteurs pour refléter le modèle.

créez une règle qui met à jour les propriétés exposées. Consultez Propagation de modifications dans le modèle par des règles.

Ou, utilisez OnAssociatedPropertyChanged() mettre à jour les fonctionnalités non-exposées telles que les flèches ou la police de lien.

Icône aux modifications de forme pour indiquer l'état.

Définissez la visibilité du mappage de décorateur dans la fenêtre de détails DÉSOLÉ. Localisez plusieurs éléments décoratifs d'image sur la même position. Consultez Mise à jour des formes et des connecteurs pour refléter le modèle.

ou, substitution ImageField.GetDisplayImage(). Consultez l'exemple dans ImageField.

Définissez une image d'arrière-plan sur toute forme

substitution InitializeInstanceResources() pour ajouter un ImageField ancré. Consultez Personnalisation de la présentation d'un diagramme.

Formes d'imbrication à une profondeur

installez une arborescence récursive d'incorporation. définissez BoundsRules pour contenir les formes. Consultez Personnalisation de la présentation d'un diagramme.

Connecteurs d'attachement à des points fixes sur la limite d'un élément.

Define la incorpore des éléments terminaux, représentés par des petits ports sur le diagramme. utilisation BoundsRules de résoudre les ports en place. Consultez l'exemple de schéma de membre dans Visualization and Modeling SDK.

le champ de texte affiche une valeur dérivée d'autres valeurs.

Mappez de décorateur de texte à une propriété de domaine calculée ou personnalisée de stockage. Pour plus d'informations, consultez Propriétés de stockage calculées et personnalisées.

la propagation change entre les éléments de modèle, ou entre les formes

Consultez Validation dans un langage spécifique à un domaine.

La propagation se transforme en ressources telles que d'autres extensions de Visual Studio à l'extérieur de le magasin.

Consultez Propagation de modifications en dehors du modèle par des gestionnaires d'événements.

La fenêtre propriétés affiche les propriétés d'un élément associé.

transférer de propriété d'installation. Consultez Personnalisation de la fenêtre Propriétés.

catégories de propriété

La fenêtre de propriétés est divisé en sections appelées des catégories. définissez Category de vos propriétés de domaine. Les propriétés portant le même nom de catégorie apparaîtront dans la même section. vous pouvez également définir Category d'un rôle de relation.

Contrôler l'accès utilisateur aux propriétés de domaine

Définissez Peut être exploré false pour empêcher une propriété de domaine d'apparaître dans la fenêtre Propriétés au moment de l'exécution. Vous pouvez toujours le mapper à du texte les éléments décoratifs.

Est l'interface utilisateur en lecture seule empêché les utilisateurs de modifier une propriété de domaine.

Accéder par programme à la propriété de domaine n'est pas affecté.

Modifiez le nom, l'icône, et la visibilité des nœuds dans l'explorateur du modèle de votre DÉSOLÉ.

Consultez Personnalisation de l'Explorateur de modèles.

activez la copie, couper-coller

Définissez la propriété d' activez le collage de copie du nœud d' Éditeur dans l'explorateur DÉSOLÉ.

Liens de la référence de copie et leurs cibles chaque fois qu'un élément est copié. Par exemple, les commentaires de copie joints à un élément.

Définissez la propriété de copie de propagations du rôle de source (représenté par la ligne sur un côté de la relation de domaine dans le diagramme de définition DÉSOLÉ).

Écrivez le code pour substituer ProcessOnCopy pour obtenir des effets plus complexes.

Consultez Personnalisation du comportement de la commande copier.

Supprimez, reparent, ou reconnecter les éléments associés lorsqu'un élément est supprimé.

définissez la valeur de suppression de propagations d'un rôle de relation. Pour les effets plus complexes, substituez ShouldVisitRelationship et les méthodes d' ShouldVisitRolePlayer dans la classe d' MyDslDeleteClosure , définie dans DomainModel.cs

Consultez Personnalisation du comportement de la commande de suppression.

Conservez la disposition et l'apparence de formes sur la copie et glisser-déplacer.

Ajoutez des formes et des connecteurs à ElementGroupPrototypecopié. La méthode la plus pratique à substituer est ElementOperations.CreateElementGroupPrototype()

Consultez Personnalisation du comportement de la commande copier.

collez les formes dans un emplacement choisi, tel que la position du curseur actuelle.

La substitution ClipboardCommandSet.ProcessOnCopy() pour utiliser la version d'emplacement-détail d' ElementOperations.Merge(). consultez Personnalisation du comportement de la commande copier.

Créez des liens supplémentaires sur le collage

substituez ClipboardCommandSet.ProcessOnPasteCommand()

Vérifiez le glisser-déplacer de ce diagramme, d'autres éléments de langages spécifiques à un domaine ou de diagrammes UML et windows

Consultez Comment : ajouter un gestionnaire glisser-déplacer.

Autorisez une forme ou un outil à faire glisser sur une forme enfant, telle qu'un port, comme s'il était glissés vers le parent.

Définissez une directive de fusion d'élément supérieure sur la classe d'objets cible, transférer l'objet supprimé au parent. Consultez Personnalisation de la création et du mouvement des éléments.

Autorisez une forme ou un outil à faire glisser sur une forme et ont des liens supplémentaires ou les objets créés. Par exemple, pour permettre un commentaire à déposer sur un élément auquel il doit être lié.

Définissez une directive de fusion d'élément supérieure sur la classe de domaine cible, et définissez des liens à générer. Dans des cas plus complexes, vous pouvez ajouter du code personnalisé. Consultez Personnalisation de la création et du mouvement des éléments.

créez un groupe d'éléments avec un outil. Par exemple, un composant à un ensemble fixe de ports.

Substituez la méthode d'initialisation de la boîte à outils dans ToolboxHelper.cs. créez un prototype de groupe d'élément (EGP) contenant les éléments et leurs liens de relation. Consultez Personnalisation des outils et de la boîte à outils.

Incluez l'entité et déplacez les formes dans l'EGP, ou affectez BoundsRules pour positionner les formes de port lorsque l'EGP est instancié. Consultez Définition de l'emplacement et de la taille de la forme par la classe BoundsRules.

Utilisez un outil de connexion pour instancier plusieurs types de relations.

ajoutez le lien connectent des directives (LCD) au générateur de connexion qui est appelé par l'outil. Les LCD déterminent le type de la relation à partir de les types des deux éléments. Pour ce faire dépendre des rapports d'éléments, vous pouvez ajouter du code personnalisé. Consultez Personnalisation des outils et de la boîte à outils.

Outils en évidence - l'utilisateur peut double-cliquer sur un outil pour créer plusieurs formes ou de connecteurs à la suite.

Dans l'explorateur DÉSOLÉ, sélectionnez le nœud d' Editor . Dans la fenêtre Propriétés, affectez Éléments en évidence de boîte à outils en charge.

Définissez des commandes de menu

Consultez Comment : modifier une commande de menu standard dans un langage spécifique à un domaine.

contraignez le modèle avec des règles de validation

Consultez Validation dans un langage spécifique à un domaine.

Générer du code, les fichiers de configuration, ou les documents d'un langage spécifique à un domaine.

Génération de code à partir d'un langage spécifique à un domaine

Personnaliser la façon dont les modèles sont enregistrés dans le fichier.

Consultez Personnalisation du stockage de fichiers et de la sérialisation XML.

Enregistrez les modèles aux bases de données ou d'autres média.

substitution YourLanguageDocData

Consultez Personnalisation du stockage de fichiers et de la sérialisation XML.

Intégrez plusieurs langages spécifiques à un domaine afin qu'ils s'exécutent dans le cadre d'une application.

Consultez Intégration de modèles à l'aide de Visual Studio Modelbus.

Permettez à votre DÉSOLÉ à étendre par des tiers, et contrôler l'extension.

Extension de votre DSL à l'aide de MEF

Partage de classes entre plusieurs DSL à l'aide d'une bibliothèque DSL

Définition d'une stratégie de verrouillage pour créer des segments en lecture seule

Voir aussi

Concepts

Comment : définir un langage spécifique à un domaine

Kit de développement logiciel de modélisation pour Visual Studio - Langages spécifiques à un domaine

Autres ressources

Écriture de code pour personnaliser un langage spécifique à un domaine