Interface utilisateur personnalisée (VSPackage de contrôle de code Source)Custom User Interface (Source Control VSPackage)

Un VSPackage déclare ses éléments de menu et leur état par défaut via le fichier Visual Studio Command Table (.vsct).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 utilisateur commande utilisateur, bien qu’en général, une contrôle de code source VSPackage doit charger à la demande au lieu de simplement passer à un contexte de l’interface utilisateur spécifique.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 clé de Registre AutoLoadPackages, consultez la gestion des VSPackages.For more information about the AutoLoadPackages registry key, see Managing 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 toute interface utilisateur requis pour définir des options spécifiques pour le contrôle de code source VSPackage.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 fichier .vsct et sont affichés 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 de l’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 le chargement différé des VSPackages.The visibility of dynamic UI elements complies with the strategy for delayed loading of VSPackages.

Contraintes d’interface utilisateur sur les packages de contrôle de SourceUI Constraints on Source Control VSPackages

Car le contrôle de code source VSPackage ne peut pas être supprimée à partir de l’IDE après le chargement, le VSPackage doit être en mesure de les 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 l’interaction externe de l’IDE.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 quand 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 la IVsSccProvider interface.Every source control VSPackage must implement the IVsSccProvider interface. Deux méthodes de 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 êtes abonné à différents é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 compatibles sur le Registre de rappel, tels que le IVsSolutionPersistence.Also, the VSPackage may have implemented registry-enabled callback interfaces, such as the IVsSolutionPersistence. Ces doivent tous être ignorés lorsqu’elle est inactive.These must all be ignored when inactive.

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

  • Suivre les événements de Documents du projet.Track Project Documents events.

  • Événements de la solution.Solution events.

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

  • Extensions de la propriété.Property extenders.

    Requis IVsQueryEditQuerySave2 et IVsSccManager2, et également les interfaces facultatif 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 VSPackage ID du contrôle de source de valeur par défaut en coursWhen 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 Suspend pour le VSPackage auprès Visual StudioVisual Studio via la IVsRegisterScciProvider avant qu’il effectue des appels pour le 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 initiaux de visibilité des menus et barre d’outils à l’ID de package de contrôle de code source dans le VisibilityConstraints section du fichier .vsct.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 contrôle de code source VSPackage masque toutes les fenêtres Outil qu'il est propriétaire lorsqu’il est rendu inactif.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 de définir 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 de l’interface utilisateur produit dans un contexte le VSPackage est inscrit auprès du contrôle de code source, le VSPackage sera 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
Gestion de VSPackagesManaging VSPackages