public DependenciesData GetDependencies() { List <ModelElement> classes = new List <ModelElement>(); foreach (ModelContext m in this.MetaModel.ModelContexts) { foreach (DomainClass d in m.Classes) { classes.Add(d); classes.AddRange(d.Properties); classes.AddRange(d.RolesPlayed); } } List <ModelElement> metaModels = new List <ModelElement>(); metaModels.Add(this.MetaModel); return(LanguageDSLDependenciesItemsProvider.Instance.GetDependencies(classes, metaModels, LanguageDSLDependenciesItemsProvider.GetAllCategories())); }
protected override void ProcessOnMenuDeleteCommand() { if (this.SelectedElement is MetaModelLibrary) { if ((this.SelectedElement as MetaModelLibrary).ImportedLibrary == null) { using (Transaction transaction = this.ModelingDocData.Store.TransactionManager.BeginTransaction("Unload model library.")) { (this.SelectedElement as MetaModelLibrary).Delete(); transaction.Commit(); } return; } List <ModelElement> classes = new List <ModelElement>(); foreach (BaseModelContext mc in (this.SelectedElement as MetaModelLibrary).MetaModel.ModelContexts) { if (mc is LibraryModelContext) { LibraryModelContext m = mc as LibraryModelContext; foreach (DomainClass d in m.Classes) { classes.Add(d); classes.AddRange(d.Properties); } foreach (DomainRelationship r in m.Relationships) { classes.AddRange(r.Roles); } } if (mc is ExternModelContext) { classes.Add(mc); } } DependenciesViewModel vm = new DependenciesViewModel(LanguageDSLDocData.ViewModelStore, false); List <ModelElement> metaModels = new List <ModelElement>(); metaModels.Add((this.SelectedElement as MetaModelLibrary).MetaModel); System.Collections.ObjectModel.ReadOnlyCollection <ModelElement> libraries = this.SelectedElement.Store.ElementDirectory.FindElements(MetaModelLibrary.DomainClassId); foreach (ModelElement m in libraries) { if (m != this.SelectedElement) { if ((m as MetaModelLibrary).ImportedLibrary != null) { metaModels.Add((m as MetaModelLibrary).ImportedLibrary); } } } vm.Set(classes, metaModels, LanguageDSLDependenciesItemsProvider.GetAllCategories()); bool bDelete = true; if (vm.ActiveDependencies.Count > 0) { DeleteElementsPopup popup = new DeleteElementsPopup(); popup.DataContext = vm; if (popup.ShowDialog().Value != true) { bDelete = false; } } if (bDelete) { using (Transaction transaction = this.ModelingDocData.Store.TransactionManager.BeginTransaction("Unload model library.")) { (this.SelectedElement as MetaModelLibrary).FilePath = null; (this.SelectedElement as MetaModelLibrary).Delete(); transaction.Commit(); } } vm.Dispose(); GC.Collect(); return; } base.ProcessOnMenuDeleteCommand(); }