Interface utilisateur personnalisée (contrôle de source de package Visual Studio)Custom user interface (source control VSPackage)

Un VSPackage déclare ses éléments de menu et leurs États par défaut par le biais du tableau de commandes de Visual Studio (.vsct) fichier.A VSPackage declares its menu items and their default states through the Visual Studio command table (.vsct) file. Le Visual StudioVisual Studio l’environnement de développement intégré (IDE) affiche les éléments de menu dans leur état par défaut jusqu'à ce que le VSPackage est chargé.The Visual StudioVisual Studio integrated development environment (IDE) displays the menu items in their default states until the VSPackage is loaded. Par la suite, le QueryStatus méthode est appelée pour activer ou désactiver des éléments de menu.Subsequently, the QueryStatus method is called to enable or disable menu items.

Un VSPackage peut définir une clé de Registre pour le VSPackage peut être chargé automatiquement en fonction d’un contexte d’interface (UI) de commande utilisateur, bien que généralement un contrôle de source VSPackage doit se charger à la demande au lieu de simplement passer à un contexte particulier de l’interface utilisateur.A VSPackage can set a registry key so the VSPackage can be automatically loaded depending on a command user interface (UI) context, although typically a source control VSPackage should load on demand instead of just switching to a particular UI context. Pour plus d’informations sur la AutoLoadPackages Registre clé, consultez gérer les VSPackages.For more information about the AutoLoadPackages registry key, see Manage VSPackages.

Interface utilisateur du VSPackageVSPackage UI

Un package de contrôle de code source est implémenté comme un VSPackage et n’utilise pas d’interface utilisateur à partir de Visual StudioVisual Studio.A source control package is implemented as a VSPackage and does not use any UI from Visual StudioVisual Studio. Chaque contrôle de code source VSPackage doit spécifier ses propres éléments d’interface utilisateur tels que les éléments de menu, les groupes de menus, les fenêtres Outil, les barres d’outils et les toute interface utilisateur requis pour définir des options spécifiques pour le VSPackage de contrôle de code source.Each source control VSPackage must specify its own UI elements such as menu items, menu groups, tool windows, toolbars, and any required UI for setting options specific to the source control VSPackage. Ces éléments d’interface utilisateur peuvent être activées de manière statique ou dynamique.These UI elements can be enabled statically or dynamically. Éléments d’interface utilisateur statiques sont définis dans un .vsct fichier et s’affichent si le VSPackage est chargé ou non.Static UI elements are defined in a .vsct file and are displayed whether the VSPackage is loaded or not. Éléments d’interface utilisateur dynamiques peuvent être visibles en fonction d’un contexte d’interface utilisateur de commande particulière, tel que vsContextNoSolution, ou en tant que le résultat d’un appel à la QueryStatus (méthode).Dynamic UI elements may be visible depending on a particular command UI context, such as vsContextNoSolution, or as the result of a call to the QueryStatus method. La visibilité des éléments d’interface utilisateur dynamiques est conforme à la stratégie pour un chargement différé de VSPackages.The visibility of dynamic UI elements complies with the strategy for delayed loading of VSPackages.

Contraintes d’interface utilisateur sur le contrôle de code source VSPackagesUI constraints on source control VSPackages

Étant donné que le VSPackage de contrôle de code source ne peut pas être supprimé à partir de l’IDE après que qu’il est chargé, le VSPackage doit être en mesure d’entrer dans un état inactif.Because the source control VSPackage cannot be removed from the IDE after it is loaded, the VSPackage must be able to enter an inactive state. Quand un VSPackage reçoit une notification qu’il n’est plus active, le VSPackage désactive son interface utilisateur et ignore toute interaction IDE externe.When a VSPackage receives notification that it is no longer active, the VSPackage disables its UI and ignores any external IDE interaction. Implémentation du VSPackage de la QueryStatus méthode doit masquer les commandes lorsque le VSPackage n’est pas actif.The VSPackage's implementation of the QueryStatus method should hide commands when the VSPackage is not active.

Chaque contrôle de code source VSPackage doit implémenter le IVsSccProvider interface.Every source control VSPackage must implement the IVsSccProvider interface. Deux méthodes sur l’interface, SetActive et SetInactive, doit être implémentée par le VSPackage.Two methods on the interface, SetActive and SetInactive, must be implemented by the VSPackage.

Le contrôle de code source VSPackage peut-être être abonnés à divers événements IDE, qui sont implémentées par le IVsSolutionEvents3, IVsTrackProjectDocumentsEvents2, et ainsi de suite.The source control VSPackage may have subscribed to various IDE events, which are implemented by the IVsSolutionEvents3, IVsTrackProjectDocumentsEvents2, and so on. En outre, le VSPackage a peut-être implémenté les interfaces de rappel prenant en charge le Registre, tel que le IVsSolutionPersistence.Also, the VSPackage may have implemented registry-enabled callback interfaces, such as the IVsSolutionPersistence. Ces interfaces doivent être tous ignorés lorsqu’elle est inactive.These interfaces must all be ignored when inactive.

La liste suivante présente les interfaces affectés par l’état actif d’un VSPackage de contrôle de code source :The following list shows the interfaces affected by the active state of a source control VSPackage:

  • Suivre les événements de documents de projet.Track project documents events.

  • Événements de solution.Solution events.

  • Interfaces de persistance de solution.Solution persistence interfaces. Lorsqu’elle est inactive, les packages ne doivent pas écrire dans .sln et .suo fichiers.When inactive, packages should not write to .sln and .suo files.

  • Extendeurs de propriété.Property extenders.

    Requis IVsQueryEditQuerySave2 et IVsSccManager2, et également toutes les interfaces facultatifs associés au contrôle de code source, ne sont pas appelés lorsque le contrôle de code source VSPackage est inactif.The required IVsQueryEditQuerySave2 and IVsSccManager2, and also any optional interfaces associated with source control, are not called when the source control VSPackage is inactive.

    Lorsque le Visual StudioVisual Studio IDE démarre, Visual StudioVisual Studio définit le contexte de l’interface utilisateur de commande à l’ID du contrôle de source par défaut actuel ID de package Visual Studio.When the Visual StudioVisual Studio IDE starts, Visual StudioVisual Studio sets the command UI context to the ID of the current default source control VSPackage ID. Cela entraîne l’interface utilisateur statique du contrôle source active VSPackage apparaissent dans l’IDE sans réellement charger le VSPackage.This causes the static UI of the active source control VSPackage to appear in the IDE without actually loading the VSPackage. Visual StudioVisual Studio met en pause pour le VSPackage à inscrire avec Visual StudioVisual Studio via la IVsRegisterScciProvider avant qu’il effectue des appels au VSPackage. pauses for the VSPackage to register with Visual StudioVisual Studio through the IVsRegisterScciProvider before it makes any calls to the VSPackage.

    Le tableau suivant décrit les détails spécifiques sur la façon dont Visual StudioVisual Studio IDE masque les différents éléments d’interface utilisateur.The following table describes specific details about how the Visual StudioVisual Studio IDE hides different UI items.

Élément d’interface utilisateurUI item DescriptionDescription
Menus et barres d’outilsMenus and toolbars Le package de contrôle de code source doit définir les États de visibilité initiales de menu et barre d’outils à l’ID de package de contrôle de source dans le VisibilityConstraints section de la .vsct fichier.The source control package must set the initial menu and toolbar visibility states to the source control package ID in the VisibilityConstraints section of the .vsct file. Cela permet la Visual StudioVisual Studio IDE pour définir l’état des éléments de menu de manière appropriée sans charger le VSPackage et appeler une implémentation de la QueryStatus (méthode).This enables the Visual StudioVisual Studio IDE to set the state of the menu items appropriately without loading the VSPackage and calling an implementation of the QueryStatus method.
Fenêtres d’outilTool windows Le VSPackage de contrôle de code source masque toutes les fenêtres Outil qu’il détient lorsqu’elle est convertie inactive.The source control VSPackage hides any tool windows it owns when it is made inactive.
Pages d’options de contrôle de code source spécifiques VSPackageSource control VSPackage-specific options pages La clé de Registre HKLM\SOFTWARE\Microsoft\VisualStudio\X.Y\ToolsOptionsPages\VisibilityCmdUIContexts permet un VSPackage définie les contextes dans lesquels il requiert ses pages d’options à afficher.The registry key HKLM\SOFTWARE\Microsoft\VisualStudio\X.Y\ToolsOptionsPages\VisibilityCmdUIContexts lets a VSPackage set the contexts in which it requires its options pages to be displayed. Une entrée de Registre sous cette clé devra être créée à l’aide de l’ID (SID) du service de contrôle de source de service et lui assigner une valeur DWORD de 1.A registry entry under this key would have to be created by using the service ID (SID) of the source control service and assigning it a DWORD value of 1. Chaque fois qu’un événement d’interface utilisateur produit dans un contexte VSPackage est inscrit avec le contrôle de code source, le VSPackage est appelé si elle est active.Whenever a UI event occurs in a context the source control VSPackage is registered with, the VSPackage will be called if it is active.

Voir aussiSee also

QueryStatus
IVsQueryEditQuerySave2
IVsSccManager2
IVsRegisterScciProvider
vsContextNoSolution
Gérer les packages VSManage VSPackages