Vlastní nastavení nástroje a panelu nástrojů
Je nutné definovat položky panelu nástrojů pro prvky, které chcete uživatelům umožnit přidávat do jejich modely.Existují dva typy nástrojů: prvek nástroje a nástroje připojení.V Návrháři generované uživatele můžete vybrat nástroj prvku do diagramu přetažením obrazců a vybrat nástroj připojení ke kreslení propojení mezi obrazci.Obecně prvek nástroje umožňují uživatelům přidat instance tříd domény své modely a nástroje připojení umožňují jim přidat instance vztahů mezi doménami.
V tomto tématu:
Úprava panelu Tabulátory
Prvek nástroje
Vytváření skupin prvků z nástroje
Nástroje připojení
Změna pořadí položek v panelu nástrojů
Jak je definována soupravě nástrojů.
V aplikaci Explorer DSL rozbalte uzel editoru a uzly pod ním.Obvykle se zobrazí hierarchii podobná této:
Editor
Toobox Tabs
MyDsl //a tab
Tools
ExampleElement // an element tool
ExampleRelationship // a connection tool
V této části DSL Explorer můžete:
Vytvořte nové karty.Kartách definujte nadpisy oddílů v soupravě nástrojů.
Vytvořte nové nástroje.
Zkopírujte a vložte nástroje.
Přesunete nástroje nahoru nebo dolů v seznamu.
Odstranění záložky a nástroje.
Důležité |
---|
Chcete-li přidat nebo vložit položky v aplikaci Explorer DSL, klepněte pravým tlačítkem myši nadřazen nového uzlu.Například chcete-li přidat nástroj, klepněte pravým tlačítkem na kartu a ne Nástroje uzel.Chcete-li přidat záložku, klepněte pravým tlačítkem myši Editor uzel. |
Ikonu panelu nástrojů 16 x 16 rastrový soubor odkazuje na vlastnost každý nástroj.Tyto soubory jsou obvykle uloženy v Dsl\Resources složky.
Třídy vlastnost nástroj pro prvek odkazuje na konkrétní domény třídy.Ve výchozím nastavení bude nástroj vytvořit instance této třídy.Však můžete zapsat kód mít nástroj pro vytváření skupin prvky nebo prvky různých typů.
Připojení Tvůrce vlastnosti nástroje připojení odkazuje na tvůrce připojení definuje, jaké typy prvků nástroje můžete připojit a jaké vztahy vytvoří mezi nimi.Připojení počítačů jsou definovány jako uzly v aplikaci Explorer DSL.Připojení počítačů jsou vytvářeny automaticky definovat vztahy domény, ale můžete zapsat kód je přizpůsobit.
Nástroj přidat do panelu nástrojů
Po vytvoření třídy shape a mapovat na třída domény obvykle vytvořit nástroj pro prvek.
Po vytvoření třídy spojnice a mapované na referenční vztah obvykle vytvořit nástroj spojnice.
V aplikaci Explorer DSL, rozbalte Editor uzlu a Panel karet uzel.
Klepněte pravým tlačítkem na uzel kartu nástrojů a klepněte na tlačítko Přidat nový prvek nástroj nebo Nástroj Přidat nové připojení.
Nastavit Ikonu panelu nástrojů vlastnost odkazuje na rastrový obrázek 16 x 16.
Pokud chcete definovat novou ikonu, vytvořte rastrový soubor v aplikaci Solution Explorer v Dsl\Resources složky.Soubor by měl mít následující hodnoty vlastností: Sestavení akce = obsahu; Kopírovat do výstupní adresář = nekopírujte.
Pro nástroj prvek: nastavena třídy vlastnost nástroj odkázat na konkrétní domény třídy, která je namapována na obrazec.
Pro nástroj spojnice: nastavena Připojení Tvůrce vlastnost nástroj na jednu z položek, které jsou nabízeny v rozevíracím seznamu.Připojení počítačů jsou automaticky vytvořeny při mapování spojnice vztah domény.Pokud jste nedávno vytvořili spojnici, vyberte normálně Tvůrce přidružené připojení.
Vyzkoušejte modem DSL, stiskněte klávesu F5 nebo CTRL + F5 a experimentální instance Visual Studio, otevřete ukázkový soubor modelu.Na panelu nástrojů se zobrazí nový nástroj.Přetáhněte ji do diagramu, zkontrolujte, že vytváří nový prvek.
Pokud není nástroj, zastavit experimentální Visual Studio.V systému Windows Start nabídce spuštění Microsoft Visual Studio 2010 experimentální Instance obnovit.Na Visual Studiosestavení nabídky, klepněte na tlačítko Roztok znovu.Znovu vyzkoušejte modem DSL.
Vlastní nastavení nástroje prvek
Ve výchozím nastavení nástroj vytvoří jednu instanci určené třídy, ale to může kolísat dvěma způsoby:
Definujte prvek sloučení směrnic na jiných tříd jim přijímat nové instance této třídy a umožňují jim vytvářet další odkazy, když je vytvořen nový prvek.Nelze například umožnit uživateli zrušit poznámku do jiného prvku a tím vytvořit odkaz propojení mezi dvěma.
Tyto úpravy také ovlivnit, co se stane, pokud uživatel vloží nebo přetáhne klesne prvek.
Další informace naleznete v tématu Přizpůsobení vytvoření prvku a pohyb.
Napište kód upravit nástroje tak, aby jej můžete vytvořit skupiny prvků.Nástroj je inicializována pomocí metod v ToolboxHelper.cs, který lze přepsat.Další informace naleznete v tématu Vytváření skupin z prvků z nástroje.
Vytváření skupin prvků z nástroje
Nástroj pro každý prvek obsahuje prvky, které by měly vytvořit prototyp.Standardně každý prvek nástroj vytvoří jediný prvek, ale je také možné vytvořit skupinu souvisejících objektů pomocí jednoho nástroje.Provést inicializaci nástroje se ElementGroupPrototype , který obsahuje související položky.
Následující příklad je převzat z DSL, ve kterém je typ tranzistorové.Každá tranzistorové má tři pojmenované terminály.Prvek nástroj pro tranzistory ukládá prototypu obsahující čtyři prvky modelu a tři odkazy vztah.Když uživatel přetáhne nástroj do diagramu, je vytvořena instance a spojen s model root prototyp.
Tento kód přepíše metodu, která je definována v Dsl\GeneratedCode\ToolboxHelper.cs.
Další informace o přizpůsobení modelu pomocí kódu programu viz Navigace a aktualizace modelu v kódu programu.
using Microsoft.VisualStudio.Modeling;
using Microsoft.VisualStudio.Modeling.Diagrams;
public partial class CircuitsToolboxHelper
{
/// <summary>
/// Toolbox initialization, called for each element tool on the toolbox.
/// This version deals with each Component subtype separately.
/// </summary>
/// <param name="store"></param>
/// <param name="domainClassId">Identifies the domain class this tool should instantiate.</param>
/// <returns>prototype of the object or group of objects to be created by tool</returns>
protected override ElementGroupPrototype CreateElementToolPrototype(Store store, Guid domainClassId)
{
if (domainClassId == Transistor.DomainClassId)
{
Transistor transistor = new Transistor(store);
transistor.Base = new ComponentTerminal(store);
transistor.Collector = new ComponentTerminal(store);
transistor.Emitter = new ComponentTerminal(store);
transistor.Base.Name = "base";
transistor.Collector.Name = "collector";
transistor.Emitter.Name = "emitter";
// Create an ElementGroup for the Toolbox.
ElementGroup elementGroup = new ElementGroup(store.DefaultPartition);
elementGroup.AddGraph(transistor, true);
// AddGraph includes the embedded parts
return elementGroup.CreatePrototype();
}
else
{
return base.CreateElementToolPrototype(store, domainClassId);
} } }
Vlastní nastavení nástroje připojení
Nástroj prvek se obvykle vytvoříte při vytvoření nové třídy konektor.Alternativně může přetížit jeden nástroj povolením typy oba konce určit typ vztahu.Je například definovat jeden nástroj připojení nelze vytvořit vztahy osoba osoby a osoby městě vztahy.
Nástroje připojení k vyvolání připojení počítačů.Připojení počítačů použijte k určení, jak uživatelé můžete propojit prvky generované návrháře.Připojení počítačů určit prvky, které lze propojit a typ propojení, který je vytvořen mezi nimi.
Při vytváření odkazu vztah mezi třídami domény Tvůrce připojení automaticky vytvořen.Při mapování nástroj připojení, můžete použít Tvůrce tohoto připojení.Další informace o vytvoření nástroje připojení, viz Vlastní nastavení nástroje a panelu nástrojů.
Tvůrce výchozí připojení můžete upravit tak, aby se zabývat jinou oblast zdrojových a cílových druhů a vytvořit různé typy vztahů.
Můžete také napsat vlastní kód pro sestavovatele připojení zadat zdrojové a cílové třídy pro připojení, určují typ připojení a jiným akcím přidružené k vytvoření připojení.
Struktura připojení počítačů
Připojení počítačů obsahovat jednu nebo připojit další odkaz směrnicemi, které určují vztah domény a prvky zdroj a cíl.Například v šabloně řešení tok úkolů uvidíte CommentReferencesSubjectsBuilder v DSL Explorer.Tvůrce tohoto připojení obsahuje jeden odkaz připojit směrnice s názvem CommentReferencesSubjects, který je mapován na vztah domény CommentReferencesSubjects.Připojit tento odkaz směrnice obsahuje role směrnice zdroj, který odkazuje na Comment třídy domény a směrnice cílové role, která odkazuje na FlowElement třídy domény.
Připojení počítačů pomocí omezení zdrojové a cílové role
Připojení počítačů můžete omezit výskyt určitých tříd v roli zdrojové nebo cílové role vztahu dané domény.Například máte domény základní třídy, která má vztah domény do jiné domény třídy, ale nechcete, aby všechny odvozené třídy základní třídy mají stejné role v relaci.V řešení úkolů toku jsou čtyři třídy konkrétní domény (StartPoint, koncový bod, MergeBranch a synchronizace), které dědí třídu abstraktní domény FlowElement a dvě třídy konkrétní domény (úkol a ObjectInState), které dědí nepřímo.Je také vztah referenční toku, který trvá třídy domény FlowElement v roli zdrojové i cílové role.Instance třídy koncový bod domény by neměl být zdroj instance vztahu průtoku ani instanci třídy StartPoint být cílové instance vztahu průtoku.Tvůrce FlowBuilder připojení má odkaz připojit směrnice s názvem toku, který určuje, které domény můžete přehrát tříd role zdroje (úkol, MergeBranch, StartPoint a synchronizace) a které přehrát cílovou roli (MergeBranch koncového bodu a synchronizace).
Připojení počítačů s více propojení připojit směrnic
Můžete přidat více než jeden odkaz připojit k připojení Tvůrce směrnice.Můžete skrýt některé složitosti modelu domény uživatelů a ponechat nástrojů zahlcen příliš.Můžete přidat odkaz připojit směrnic pro několik různých domén vztahy Tvůrce jediného připojení.By však kombinovat vztahů domény při pokusu přibližně stejnou funkci.
Řešení úkolu toku toku nástroj připojení lze nakreslit instance toku a domény vztahy Tok_objektů.FlowBuilder připojení Tvůrce má, připojit k propojení toku směrnice popsané výše, propojení dvou připojení s názvem Tok_objektů směrnic.Tyto směrnice určit, že instance vztahu Tok_objektů mohou být vypracovány mezi instancemi třídy ObjectInState domény, nebo instance ObjectInState k instanci úlohy, ale není mezi dva výskyty úkolu nebo instanci úlohy k instanci ObjectInState.Instance vztahu toku však mohou být vypracovány mezi dva výskyty úkolu.Kompilace a spuštění řešení úkolu toku, uvidíte výkres toku z instance ObjectInState instance úlohy vytvoří instanci Tok_objektů, ale výkres toku mezi dvě instance úlohy vytvoří instanci toku.
Vlastní kód pro připojení počítačů
Existují čtyři políček v uživatelském rozhraní, které definují různé typy úprav připojení počítačů:
přijímat vlastní políčko na zdroj nebo cíl směrnice role
Připojit vlastní políčko na zdroj nebo cíl směrnice role
používá vlastní připojit políčko Připojit směrnice
Je vlastní vlastnost Tvůrce připojení
Musíte zadat kód programu tyto úpravy provádět.Chcete-li zjistit, jaký kód, je nutné zadat jeden z těchto polí a transformovat všechny šablony potom sestavte řešení.Zpráva o chybě nebude.Poklepejte na zprávy o chybě poznámku, která vysvětluje, jaké že měla přidat.
[!POZNÁMKA]
Chcete-li přidat vlastní kód vytvořte definici dílčí třídy v kódu souboru odděleně od kódu souborů ve složkách GeneratedCode.Chcete-li předejít ztrátě práce, neměli upravovat soubory generovaný kód.Další informace naleznete v tématu Přepsání a rozšiřování generované třídy.
Vytvoření připojení vlastní kód
Každý odkaz připojit směrnice, směrnic role zdroje definuje kartu z jaké typy můžete přetáhnout.Podobně směrnic cílové role kartě definuje jaké typy můžete přetáhnout.Pro každý typ můžete dále určit, zda povolit připojení nastavením (pro tento odkaz připojit směrnice) Přijímat vlastní příznak a potom poskytováním dodatečný kód.
Co se stane po navázání připojení můžete také přizpůsobit.Můžete například upravit pouze v případě, kde dojde k tažení z určité třídy nebo připojit tento jedno propojení všech případech směrnice upravuje, nebo celé Tvůrce FlowBuilder připojení.Pro každou z těchto možností můžete nastavit vlastní příznaky na vhodné úrovni.Při transformaci všechny šablony a zkuste vytvořit řešení chybové zprávy můžete přímo poznámky, které jsou do generovaného kódu.Tyto komentáře identifikovat, je nutné zadat.
V ukázce diagramu komponent je omezit připojení, provedené mezi přístavy přizpůsobit Tvůrce připojení relace připojení domény.Následující obrázek ukazuje, že lze provádět připojení pouze z OutPort prvky InPort prvky, ale můžete vnořovat komponenty uvnitř navzájem.
Připojení přicházejících OutPort z vnořené komponenty
Proto můžete určit, že připojení mohou pocházet z vnořených komponent do OutPort.Chcete-li toto připojení, nastavte Používá vlastní přijmout na InPort typu jako zdrojovou roli a OutPort typu jako cílovou roli v Podrobnosti DSL okna, jak je znázorněno na následujícím obrázku:
Odkaz připojit směrnice v aplikaci Explorer DSL
Odkaz připojit směrnice v okně podrobností DSL
Poté musíte zadat metody ConnectionBuilder třídy:
public partial class ConnectionBuilder
{
/// <summary>
/// OK if this component has children
/// </summary>
private static bool CanAcceptInPortAsSource(InPort candidate)
{
return candidate.Component.Children.Count > 0;
}
/// <summary>
/// Only if source is on parent of target.
/// </summary>
private static bool CanAcceptInPortAndInPortAsSourceAndTarget (InPort sourceInPort, InPort targetInPort)
{
return sourceInPort.Component == targetInPort.Component.Parent;
}
// And similar for OutPorts…
Další informace o přizpůsobení modelu pomocí kódu programu viz Navigace a aktualizace modelu v kódu programu.
Podobné kódu můžete použít například zabránit uživatelům ve vytváření smyček s odkazy na nadřazený podřízený.Tato omezení jsou považovány za "pevný" omezení, protože uživatelé nemohou poruší kdykoli.Můžete také vytvořit kontroly platnosti "měkké", které uživatelé mohou dočasně obejít vytvořením neplatná konfigurace, které nelze-li uložit.
Dobré praxe při definování připojení počítačů
Měli byste definovat jeden Tvůrce připojení pouze v případě, že je koncepčně příbuzný vytvořit různé typy vztahů.V toku vzorku úloh pomocí stejného tvůrce vytvořit toků mezi úkoly a mezi úkoly a objekty.Však je vytvořit vztahy mezi poznámky a úkoly pomocí stejného tvůrce matoucí.
Pokud definujete Tvůrce připojení pro více typů vztahů, by měly zajistit, že neodpovídá více než jeden typ stejné dvojice zdrojové a cílové objekty.Jinak nebudou výsledky nepředvídatelné.
Je "pevný" omezení použití vlastního kódu, ale měli byste zvážit, zda uživatelé budou moci provádět dočasně neplatné připojení.Pokud by měly můžete upravit omezení tak, aby připojení nebyl ověřen, dokud se uživatelé pokusí uložit změny.
Viz také
Koncepty
Přizpůsobení vytvoření prvku a pohyb
Jak: Přidat ukazatel a přetažení
Navigace a aktualizace modelu v kódu programu