protected override void OnMouseUp(MouseButtonEventArgs e) { if (sourceItem != null) { ModelTreeViewModel vm = this.diagramDesigner.DataContext as ModelTreeViewModel; if (sourceItem.SelectedData is TreeNodeViewModel) { if ((sourceItem.SelectedData as TreeNodeViewModel).Element is DomainClass) { List <DomainClass> domainClassesSrc = new List <DomainClass>(); domainClassesSrc.Add((sourceItem.SelectedData as TreeNodeViewModel).Element as DomainClass); bool bDone = false; if (hitItem != null) { if (hitItem.SelectedData is TreeNodeViewModel) { if ((hitItem.SelectedData as TreeNodeViewModel).Element is DomainClass) { bDone = true; // reference or embedding? if (Keyboard.Modifiers == ModifierKeys.Shift) { ModelTreeOperations.AddNewEmbeddingRelationship(domainClassesSrc, (hitItem.SelectedData as TreeNodeViewModel).Element as DomainClass); } else if (Keyboard.Modifiers == ModifierKeys.Control) { ModelTreeOperations.AddNewReferenceRelationship(domainClassesSrc, (hitItem.SelectedData as TreeNodeViewModel).Element as DomainClass); } else { Forms.RelationshipTypeSelector dlg = new Forms.RelationshipTypeSelector(); if (dlg.ShowDialog() == true) { if (dlg.EmbeddedRelationshipSelected == true) { ModelTreeOperations.AddNewEmbeddingRelationship(domainClassesSrc, (hitItem.SelectedData as TreeNodeViewModel).Element as DomainClass); } else if (dlg.EmbeddedRelationshipSelected == false) { ModelTreeOperations.AddNewReferenceRelationship(domainClassesSrc, (hitItem.SelectedData as TreeNodeViewModel).Element as DomainClass); } } } } } } if (!bDone) { ModelTreeOperations.AddNewEmbeddingRelationship(domainClassesSrc); } } } } if (this.IsMouseCaptured) { this.ReleaseMouseCapture(); } AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this.diagramDesigner); if (adornerLayer != null) { adornerLayer.Remove(this); } }
/// <summary> /// Constuctor. /// </summary> /// <param name="viewModelStore">The store this view model belongs to.</param> public ModelContextViewModel(ViewModelStore viewModelStore, BaseModelContext baseModelContext, bool isLocked) : base(viewModelStore) { this.modelContext = baseModelContext; this.copyCommand = new DelegateCommand(CopyCommand_Executed, CopyCommand_CanExecute); this.pasteCommand = new DelegateCommand(PasteCommand_Executed, PasteCommand_CanExecute); this.copyAllTreeCommand = new DelegateCommand(CopyAllTreeCommand_Executed, CopyAllTreeCommand_CanExecute); this.copyEmbeddingTreeCommand = new DelegateCommand(CopyEmbeddingTreeCommand_Executed, CopyAllTreeCommand_CanExecute); this.copyReferenceTreeCommand = new DelegateCommand(CopyReferenceTreeCommand_Executed, CopyAllTreeCommand_CanExecute); //this.cutCommand = new DelegateCommand(CutCommand_Executed, CutCommand_CanExecute); this.optimizeCommand = new DelegateCommand(OptimizeCommand_Executed); if (baseModelContext is ModelContext) { ModelContext modelContext = baseModelContext as ModelContext; this.modelTreeViewModel = new ModelTreeViewModel(viewModelStore, this, modelContext.ViewContext.DomainModelTreeView); this.modelTreeViewModel.IsLocked = isLocked; this.diagramViewModel = new DiagramViewModel(viewModelStore, this, modelContext.ViewContext.DiagramView); this.serializationViewModel = new SerializationViewModel(viewModelStore, modelContext.SerializationModel); this.modelContextType = ModelContextViewType.ModelContext; } else if (baseModelContext is ExternModelContext) { ExternModelContext modelContext = baseModelContext as ExternModelContext; if (modelContext.ModelContext != null) { this.AddModelContext(modelContext.ModelContext); } this.EventManager.GetEvent <ModelElementLinkAddedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(ExternModelContextReferencesModelContext.DomainClassId), true, this.modelContext.Id, new System.Action <ElementAddedEventArgs>(OnModelContextAdded)); this.EventManager.GetEvent <ModelElementLinkDeletedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(ExternModelContextReferencesModelContext.DomainClassId), true, this.modelContext.Id, new System.Action <ElementDeletedEventArgs>(OnModelContextRemoved)); this.EventManager.GetEvent <ModelRolePlayerChangedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRole(ExternModelContextReferencesModelContext.ExternModelContextDomainRoleId), new System.Action <RolePlayerChangedEventArgs>(OnModelContextChanged)); this.EventManager.GetEvent <ModelRolePlayerChangedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRole(ExternModelContextReferencesModelContext.ModelContextDomainRoleId), new System.Action <RolePlayerChangedEventArgs>(OnModelContextChanged)); this.modelContextType = ModelContextViewType.ExternModelContext; } else if (baseModelContext is LibraryModelContext) { LibraryModelContext modelContext = baseModelContext as LibraryModelContext; this.modelTreeViewModel = new ModelTreeViewModel(viewModelStore, this, modelContext.ViewContext.DomainModelTreeView); this.modelTreeViewModel.IsLocked = isLocked; this.diagramViewModel = new DiagramViewModel(viewModelStore, this, modelContext.ViewContext.DiagramView); this.modelContextType = ModelContextViewType.LibraryContext; this.serializationViewModel = new SerializationViewModel(viewModelStore, modelContext.SerializationModel); } this.selectedItem = this.ModelTreeViewModel; if (this.ModelContext != null) { this.EventManager.GetEvent <ModelElementPropertyChangedEvent>().Subscribe( this.Store.DomainDataDirectory.GetDomainProperty(BaseModelContext.NameDomainPropertyId), this.ModelContext.Id, new System.Action <ElementPropertyChangedEventArgs>(NamePropertyChanged)); } }
/// <summary> /// Constuctor. /// </summary> /// <param name="viewModelStore">The store this view model belongs to.</param> /// <param name="rootNode">Root node.</param> /// <param name="parent">Parent.</param> public RootNodeViewModel(ViewModelStore viewModelStore, RootNode rootNode, ModelTreeViewModel parent) : base(viewModelStore, rootNode, null) { this.parentVM = parent; }