Přidání příkazů a gesta diagramy vrstvy
Můžete definovat příkazy kontextové nabídky a speciálního tahu obsluhy na vrstvu diagramy v Visual Studio Ultimate.Tato rozšíření lze balíček do aplikace Visual Studio integrace rozšíření (VSIX) rozdělovat do jiných Visual Studio uživatelů.
Můžete definovat několik příkazů a speciálního obsluhy ve stejném Visual Studio projektu, pokud chcete.Můžete také kombinovat několik projektů do jednoho VSIX.Můžete například definovat jedné VSIX, která obsahuje příkazy vrstvy, domény specifické pro jazyk a příkazy pro diagramy UML.
[!POZNÁMKA]
Architektura ověření, které uživatelé zdroje kódu je ve srovnání s diagramy vrstvy můžete také přizpůsobit.Architektura ověření by měla definovat v samostatném Visual Studio projektu.Můžete jej přidat do stejné VSIX jako další rozšíření.Další informace naleznete v tématu Přidání vlastní ověření architektura diagramy vrstvy.
Požadavky pro vytváření rozšíření vrstvy
Musíte mít následující nainstalovaný v počítači, kam chcete vyvíjet rozšíření vašeho vrstvy:
Visual Studio Ultimate
Visual Studio – sada SDK
Vizualizace a modelování SDK
Definování příkazu nebo speciálního tahu v nových VSIX
Nejrychlejší způsob vytvoření rozšíření je šablona projektu.Tento kód a VSIX manifestu umístí do stejného projektu.
Definování rozšíření pomocí šablony projektu
Projekt pomocí vytvořit nové řešení Nový projekt na příkaz soubor nabídce.
V Nový projekt dialogovém okně vyberte v seznamu Projektů pro modelování, vyberte buď Rozšíření příkazu Návrhář vrstvy nebo Vrstvy Návrhář gesto rozšíření.
Projekt, který obsahuje malý fungující příklad vytvoří šablona.
Testování rozšíření stisknutím CTRL + F5 nebo F5.
Experimentální instance Visual Studio spustí.V této instanci vytvořte diagram vrstvy.Vaše rozšíření příkazu nebo gesto by měly fungovat v tomto diagramu.
Zavřete experimentální instance a ukázkový kód změnit.Další informace naleznete v tématu Navigace a aktualizaci vrstvy modely v kódu programu.
Můžete přidat další popisovače příkazu nebo gesto na stejném projektu.Další informace naleznete v následujících částech:
Definování příkazu nabídky
Definování popisovač gesto
Instalace rozšíření v instanci hlavní Visual Studio, nebo v jiném počítači najít .vsix v souboru bin\*.Zkopírovat do počítače, které chcete nainstalovat a poklepejte na něj.Chcete-li jej odinstalovat pomocí Extension Manager na Nástroje nabídce.
Přidání příkazu nebo gesto do samostatných VSIX
Pokud chcete vytvořit jeden VSIX obsahující příkazy, validátory vrstvy a dalších rozšíření, doporučujeme vytvořit jeden projekt VSIX definovat a obslužných rutin pro samostatné projekty.Informace o dalších typech modelování rozšíření, viz Rozšíření modelů UML a diagramů.
Přidání rozšíření vrstvě do samostatných VSIX
Vytvoření knihovny tříd projektu do nové nebo existující Visual Studio Ultimate roztoku.V Nový projekt dialogové okno, klepněte na tlačítko Visual C# a klepněte na tlačítko Knihovna tříd.Tento projekt bude obsahovat příkaz nebo speciálního tahu pro obsluhu tříd.
[!POZNÁMKA]
Můžete definovat více než jedné třídy popisovač příkazu nebo speciálního tahu v knihovně jedné třídy, ale měla definovat vrstvy ověření třídy v knihovně samostatné třídy.
Identifikovat nebo vytvoření projektu VSIX řešení.VSIX projektu obsahuje soubor s názvem source.extension.vsixmanifest.Přidání VSIX projektu:
V Nový projekt dialogovém okně pole, rozbalte položku Visual C#, klepněte na tlačítko rozšířenía klepněte na tlačítko VSIX projektu.
V aplikaci Solution Explorer klepněte pravým tlačítkem na VSIX projektu a klepněte na tlačítko nastavit spuštění projektu jako.
Klepněte na tlačítko Vyberte vydání a ujistěte se, že Visual Studio Ultimate je kontrolována.
V source.extension.vsixmanifestpod majetku, přidejte příkaz nebo zpracování projektu jako součást MEF speciálního tahu.
V majetku.tab, zvolte Nový.
Na typu, vyberte Microsoft.VisualStudio.MefComponent.
Na zdroje, vyberte projektu v aktuální řešení a vyberte název příkazu nebo speciálního projektu popisovač.
Uložte soubor.
Vrátit do projektu popisovač příkazu nebo gesto a přidejte následující odkazy projektu.
Odkaz |
Co můžete dělat |
---|---|
Program Files\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\ExtensibilityRuntime\Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer.dll |
Vytvářet a upravovat vrstvy |
Microsoft.VisualStudio.UML.Interfaces |
Vytvářet a upravovat vrstvy |
Microsoft.VisualStudio.ArchitectureTools.Extensibility |
Upravit obrazce v diagramech |
System.ComponentModel.Composition |
Definovat spravované rozšiřitelnosti Framework (MEF) pomocí součásti |
Microsoft.VisualStudio.Modeling.SDK.11.0 |
Definování rozšíření modelování |
Microsoft.VisualStudio.Modeling.SDK.Diagrams.11.0 |
Aktualizovat obrazce a diagramy |
Upravte soubor třídy v projektu knihovny třídy C# obsahuje kód pro vaše rozšíření.Další informace naleznete v následujících částech:
Definování příkazu nabídky
Definování popisovač gesto
See also Navigace a aktualizaci vrstvy modely v kódu programu.
Chcete-li otestovat funkci, stiskněte CTRL + F5 nebo F5.Experimentální instance Visual Studio otevře.V této instanci vytvořte nebo otevřete diagram vrstvy.
V instanci hlavní instalaci VSIX Visual Studio, nebo v jiném počítači najít .vsix v souboru bin adresáře projektu VSIX.Zkopírujte jej do počítače, které chcete nainstalovat VSIX.Poklepejte na soubor VSIX v aplikaci Windows Explorer (Průzkumník Windows 8).
Chcete-li jej odinstalovat pomocí Extension Manager na Nástroje nabídce.
Definování příkazu nabídky
Další definice příkazu nabídky můžete přidat k existující tah nebo příkaz projekt.Každý příkaz je definována třída, která má následující vlastnosti:
Třída je deklarován takto:
[LayerDesignerExtension]
[Export(typeof(ICommandExtension))]
public class MyLayerCommand : ICommandExtension { ... }
Obor názvů a název třídy jsou důležité.
Metody, které implementují ICommandExtension jsou následující:
string Text {get;}-Popisek, který se zobrazí v nabídce.
void QueryStatus(IMenuCommand command)-volána, když uživatel klepne pravým tlačítkem myši na diagram a určuje, zda má být příkaz, viditelné a povoleno pro uživatele aktuální výběr.
void Execute(IMenuCommand command)-volána, když uživatel vybere příkaz.
Chcete-li zjistit aktuální výběr importovat IDiagramContext:
[Import]
public IDiagramContext DiagramContext { get; set; }
...
DiagramContext.CurrentDiagram.SelectedShapes.Count()...
Další informace naleznete v tématu Navigace a aktualizaci vrstvy modely v kódu programu.
Chcete-li přidat nový příkaz vytvořte nový kód souboru, který obsahuje následující ukázka.Vyzkoušejte a upravit.
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation;
using Microsoft.VisualStudio.Modeling.Diagrams.ExtensionEnablement;
using Microsoft.VisualStudio.Modeling.ExtensionEnablement;
using System.ComponentModel.Composition;
using System.Linq;
namespace MyLayerExtension // Change to your preference.
{
// This is a feature for Layer diagrams:
[LayerDesignerExtension]
// This feature is a menu command:
[Export(typeof(ICommandExtension))]
// Change the class name to your preference:
public class MyLayerCommand : ICommandExtension
{
[Import]
public IDiagramContext DiagramContext { get; set; }
[Import]
public ILinkedUndoContext LinkedUndoContext { get; set; }
// Menu command label:
public string Text
{
get { return "Duplicate layers"; }
}
// Called when the user right-clicks the diagram.
// Defines whether the command is visible and enabled.
public void QueryStatus(IMenuCommand command)
{
command.Visible =
command.Enabled = DiagramContext.CurrentDiagram
.SelectedShapes.Count() > 0;
}
// Called when the user selects the command.
public void Execute(IMenuCommand command)
{
// A selection of starting points:
IDiagram diagram = this.DiagramContext.CurrentDiagram;
ILayerModel lmodel = diagram.GetLayerModel();
foreach (ILayer layer in lmodel.Layers)
{ // All layers in model.
}
// Updates should be performed in a transaction:
using (ILinkedUndoTransaction t =
LinkedUndoContext.BeginTransaction("copy selection"))
{
foreach (ILayer layer in
diagram.SelectedShapes
.Select(shape=>shape.GetLayerElement())
.Where(element => element is ILayer))
{
ILayer copy = lmodel.CreateLayer(layer.Name + "+");
// Position the shapes:
IShape originalShape = layer.GetShape();
copy.GetShape().Move(
originalShape.XPosition + originalShape.Width * 1.2,
originalShape.YPosition);
}
t.Commit();
}
}
}
}
Definování popisovač gesto
Gesto pro obsluhu reaguje přetažena položky diagramu vrstvy a při poklepání kamkoli v diagramu.
Existující příkaz nebo gesto popisovač VSIX projektu můžete přidat soubor kód, který definuje speciální tah pro obsluhu:
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation;
using Microsoft.VisualStudio.Modeling.Diagrams.ExtensionEnablement;
using Microsoft.VisualStudio.Modeling.ExtensionEnablement;
using System.ComponentModel.Composition;
using System.Linq;
namespace MyLayerExtensions // change to your preference
{
[LayerDesignerExtension]
[Export(typeof(IGestureExtension))]
public class MyLayerGestureHandler : IGestureExtension
{
}
}
Oznámení o gesto obslužné body:
Členové IGestureExtension jsou následující:
OnDoubleClick -volána, když uživatel poklepe kdekoli v diagramu.
CanDragDrop - nazývané opakovaně jako uživatel přesune ukazatel myši při přetažení položky do diagramu.Je třeba pracovat rychle.
OnDragDrop -volána, když uživatel umístí zboží do diagramu.
První argument každá metoda je IShape, z níž lze získat prvek vrstvy.Příklad:
public void OnDragDrop(IShape target, IDataObject data) { ILayerElement element = target.GetLayerElement(); if (element is ILayer) { // ... } }
Obslužné rutiny pro některé typy přetažená položka již definován.Například uživatel můžete přetáhnout položky z aplikaci Solution Explorer diagramu vrstvy.Nelze definovat přetažením popisovač pro tyto typy položek.V těchto případech vaše DragDrop metody nemohou být uplatňovány.
Další informace o dekódování dalších položek při přetažení diagramu Postup: definovat speciální tah pro modelování diagramu.
Viz také
Koncepty
Navigace a aktualizaci vrstvy modely v kódu programu