Sdílet prostřednictvím


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

  1. Projekt pomocí vytvořit nové řešení Nový projekt na příkaz soubor nabídce.

  2. 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.

  3. 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.

  4. 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.

  5. 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

  6. 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

  1. 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.

  2. Identifikovat nebo vytvoření projektu VSIX řešení.VSIX projektu obsahuje soubor s názvem source.extension.vsixmanifest.Přidání VSIX projektu:

    1. 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.

    2. 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.

    3. Klepněte na tlačítko Vyberte vydání a ujistěte se, že Visual Studio Ultimate je kontrolována.

  3. V source.extension.vsixmanifestpod majetku, přidejte příkaz nebo zpracování projektu jako součást MEF speciálního tahu.

    1. V majetku.tab, zvolte Nový.

    2. Na typu, vyberte Microsoft.VisualStudio.MefComponent.

    3. Na zdroje, vyberte projektu v aktuální řešení a vyberte název příkazu nebo speciálního projektu popisovač.

    4. Uložte soubor.

  4. 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

  1. 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.

  2. 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.

  3. 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

Přidání vlastní ověření architektura diagramy vrstvy

Postup: definovat a nainstalujte rozšíření modelování