Outils DSL: Créer un nouveau diagramme en code personnalisé
Question
J'utilise les outils DSL pour Visual Studio 2005.
J'ai un DSL où, à un moment donné, j'aimerais créer un nouveau diagramme en utilisant un code personnalisé.
Jusqu'à présent, j'ai pu créer un nouveau diagramme en écrasant le diagramme actuel déjà ouvert. Le code suit:
FEGeneratorDiagram diag = new FEGeneratorDiagram(ThisElem.Store);
diag.Associate(ThisElem);
FEGeneratorDiagram currentDiag = (FEGeneratorDiagram)ThisElem.Store.ElementDirectory.FindElements<FEGeneratorDiagram>(false)[0];
currentDiag = diag;
Mais, ce que j'aimerais vraiment faire serait,
créer un nouveau document DSL avec une nouvelle instance FEGeneratorDiagram, puis conserver ma logique d’ajout d’éléments et de définition des propriétés.
Avez-vous de l'aide?
La solution
//Create a Store
Type[] modelTypes = new Type[] { typeof(CoreDesignSurfaceDomainModel), typeof(FEGeneratorDomainModel) };
Store store = new Store(modelTypes);
RootElement root;
using (Transaction t =
store.TransactionManager.BeginTransaction("Create Elements"))
{
root = FEGeneratorSerializationHelper.Instance.LoadModel(store, diagramPath, null, null);
t.Commit();
}
//Do whatever custom things you want!
SerializationResult result = new SerializationResult();
//Save the file
FEGeneratorSerializationHelper.Instance.SaveModel(result, root, diagramPath);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow