Partager via


Prise en charge de vues de document multiples

Vous pouvez fournir plusieurs vues d’un document en créant des données de document et des objets de vue de document distincts pour votre éditeur. Certains cas dans lesquels une vue de document supplémentaire serait utile sont les suivants :

  • Prise en charge de la nouvelle fenêtre : vous souhaitez que votre éditeur fournisse deux vues ou plus du même type, afin qu’un utilisateur qui dispose déjà d’une fenêtre ouverte dans l’éditeur puisse ouvrir une nouvelle fenêtre en sélectionnant la commande Nouvelle fenêtre dans le menu Fenêtre.

  • Prise en charge de la vue de formulaire et de code : vous souhaitez que votre éditeur fournisse différents types de vues. Visual Basic, par exemple, fournit à la fois une vue de formulaire et une vue de code.

    Pour plus d’informations, consultez la procédure CreateEditorInstance dans le fichier EditorFactory.cs, dans le projet d’éditeur personnalisé créé par le modèle de package Visual Studio. Pour plus d’informations, consultez Procédure pas à pas : création d'un éditeur personnalisé.

Synchronisation des vues

Lorsque vous implémentez plusieurs vues, l’objet de données de document est responsable de synchroniser toutes les vues avec les données. Vous pouvez utiliser les interfaces de gestion des événements dans VsTextBuffer pour synchroniser plusieurs vues avec les données.

Si vous n’utilisez pas l’objet VsTextBuffer pour synchroniser plusieurs vues, vous devez implémenter votre propre système d’événements pour gérer les modifications apportées à l’objet de données de document. Vous pouvez utiliser différents niveaux de granularité pour maintenir plusieurs vues à jour. Avec un paramètre de granularité maximale, à mesure que vous tapez dans une vue, le reste des vues sont mises à jour immédiatement. Avec une granularité minimale, le reste des vues ne sont pas mises à jour jusqu’à leur activation.

Déterminer si les données de document sont déjà ouvertes

La table de documents en cours d’exécution (RDT) dans l’environnement de développement intégré (IDE) permet de déterminer si les données d’un document sont déjà ouvertes, comme illustré dans le diagramme suivant.

Graphique DocDataView

Plusieurs vues

Par défaut, chaque vue (objet de vue de document) est contenue dans son propre cadre de la fenêtre (IVsWindowFrame). Comme indiqué précédemment, toutefois, les données de document peuvent être affichées dans plusieurs vues. Pour l’activer, Visual Studio vérifie le RDT pour déterminer si le document en question est déjà ouvert dans un éditeur. Lorsque l’IDE appelle CreateEditorInstance pour créer l’éditeur, une valeur non NULLE retournée dans le paramètre punkDocDataExisting indique que le document est déjà ouvert dans un autre éditeur. Pour plus d’informations sur la façon dont les fonctions RDT s’affichent, consultez Exécution d’une table de document.

Dans votre implémentation IVsEditorFactory, examinez l’objet de données de document retourné dans punkDocDataExisting pour déterminer si les données de document sont appropriées pour votre éditeur. (Par exemple, seules les données HTML doivent être affichées par un éditeur HTML.) S’il est approprié, votre fabrique d’éditeur doit fournir une deuxième vue des données. Si le paramètre punkDocDataExisting n’est pas NULL, il est possible que l’objet de données de document soit ouvert dans un autre éditeur, ou, plus probablement, que les données de document soient déjà ouvertes dans une autre vue avec le même éditeur. Si les données de document sont ouvertes dans un autre éditeur que votre fabrique d’éditeur ne prend pas en charge, Visual Studio ne parvient pas à ouvrir votre fabrique d’éditeur. Pour plus d’informations, consultez Attacher des vues aux données de document.