public override void UpdateOperations() { base.Operations = new Collection <MenuItemViewModel>(); if (this.SelectedItems.Count == 1) { TreeNodeViewModel node = this.SelectedItems[0] as TreeNodeViewModel; if (node != null) { // bring tree here MenuItemViewModel mvBTH = new MenuItemViewModel(this.ViewModelStore, "Bring tree here"); mvBTH.Command = BringTreeHereCommand; mvBTH.IsEnabled = ModelTreeOperations.CanBringTreeHere(node.TreeNode); base.Operations.Add(mvBTH); // split tree MenuItemViewModel mvSplit = new MenuItemViewModel(this.ViewModelStore, "Split tree"); mvSplit.Command = SplitTreeCommand; mvSplit.IsEnabled = ModelTreeOperations.CanSplitTree(node.TreeNode); base.Operations.Add(mvSplit); } } this.OnPropertyChanged("Operations"); }
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); } }