/// <summary> /// Constructor. This view model constructed with 'bHookUpEvents=true' does react on model changes. /// </summary> /// <param name="viewModelStore">The store this view model belongs to.</param> /// <param name="diagramTreeNode">Element represented by this view model.</param> protected DiagramTreeNodeViewModel(ViewModelStore viewModelStore, DiagramTreeNode diagramTreeNode) : base(viewModelStore, diagramTreeNode.PresentationElementClass) { this.diagramTreeNode = diagramTreeNode; if (this.DiagramTreeNode != null) if (this.DiagramTreeNode.PresentationElementClass != null) { presentationElementClassId = this.DiagramTreeNode.PresentationElementClass.Id; this.EventManager.GetEvent<ModelElementLinkAddedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(ShapeClassReferencesDomainClass.DomainClassId), true, this.DiagramTreeNode.PresentationElementClass.Id, new Action<ElementAddedEventArgs>(OnShapeElementAdded)); this.EventManager.GetEvent<ModelElementLinkDeletedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(ShapeClassReferencesDomainClass.DomainClassId), true, this.DiagramTreeNode.PresentationElementClass.Id, new Action<ElementDeletedEventArgs>(OnShapeElementRemoved)); this.EventManager.GetEvent<ModelRolePlayerChangedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRole(ShapeClassReferencesDomainClass.DomainClassDomainRoleId), new Action<RolePlayerChangedEventArgs>(OnShapeElementChanged)); this.EventManager.GetEvent<ModelElementLinkAddedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(RelationshipShapeClassReferencesReferenceRelationship.DomainClassId), true, this.DiagramTreeNode.PresentationElementClass.Id, new Action<ElementAddedEventArgs>(OnRSShapeElementAdded)); this.EventManager.GetEvent<ModelElementLinkDeletedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(RelationshipShapeClassReferencesReferenceRelationship.DomainClassId), true, this.DiagramTreeNode.PresentationElementClass.Id, new Action<ElementDeletedEventArgs>(OnRSShapeElementRemoved)); this.EventManager.GetEvent<ModelRolePlayerChangedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRole(RelationshipShapeClassReferencesReferenceRelationship.DomainRelationshipDomainRoleId), new Action<RolePlayerChangedEventArgs>(OnRSShapeElementChanged)); if (this.DiagramTreeNode.PresentationElementClass is RelationshipShapeClass) AddRSShapeElement((this.DiagramTreeNode.PresentationElementClass as RelationshipShapeClass).ReferenceRelationship); else AddShapeElement((this.DiagramTreeNode.PresentationElementClass as PresentationDomainClassElement).DomainClass); } }
public override DataTemplate SelectTemplate(object item, DependencyObject container) { if (item is DiagramTreeNodeViewModel) { DiagramTreeNodeViewModel vm = item as DiagramTreeNodeViewModel; DiagramTreeNode node = vm.DiagramTreeNode; if (node.PresentationElementClass is MappingRelationshipShapeClass) { return(MappingRelationshipClassTemplate); } else if (node.PresentationElementClass is ShapeClass) { return(ShapeClassTemplate); } else if (node.PresentationElementClass is RelationshipShapeClass) { return(RelationshipClassTemplate); } else { return(null); } } else { return(null); } }
/// <summary> /// Constructor. This view model constructed with 'bHookUpEvents=true' does react on model changes. /// </summary> /// <param name="viewModelStore">The store this view model belongs to.</param> /// <param name="diagramTreeNode">Element represented by this view model.</param> protected DiagramTreeNodeViewModel(ViewModelStore viewModelStore, DiagramTreeNode diagramTreeNode) : base(viewModelStore, diagramTreeNode.PresentationElementClass) { this.diagramTreeNode = diagramTreeNode; if (this.DiagramTreeNode != null) { if (this.DiagramTreeNode.PresentationElementClass != null) { presentationElementClassId = this.DiagramTreeNode.PresentationElementClass.Id; this.EventManager.GetEvent <ModelElementLinkAddedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(ShapeClassReferencesDomainClass.DomainClassId), true, this.DiagramTreeNode.PresentationElementClass.Id, new Action <ElementAddedEventArgs>(OnShapeElementAdded)); this.EventManager.GetEvent <ModelElementLinkDeletedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(ShapeClassReferencesDomainClass.DomainClassId), true, this.DiagramTreeNode.PresentationElementClass.Id, new Action <ElementDeletedEventArgs>(OnShapeElementRemoved)); this.EventManager.GetEvent <ModelRolePlayerChangedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRole(ShapeClassReferencesDomainClass.DomainClassDomainRoleId), new Action <RolePlayerChangedEventArgs>(OnShapeElementChanged)); this.EventManager.GetEvent <ModelElementLinkAddedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(RelationshipShapeClassReferencesReferenceRelationship.DomainClassId), true, this.DiagramTreeNode.PresentationElementClass.Id, new Action <ElementAddedEventArgs>(OnRSShapeElementAdded)); this.EventManager.GetEvent <ModelElementLinkDeletedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(RelationshipShapeClassReferencesReferenceRelationship.DomainClassId), true, this.DiagramTreeNode.PresentationElementClass.Id, new Action <ElementDeletedEventArgs>(OnRSShapeElementRemoved)); this.EventManager.GetEvent <ModelRolePlayerChangedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRole(RelationshipShapeClassReferencesReferenceRelationship.DomainRelationshipDomainRoleId), new Action <RolePlayerChangedEventArgs>(OnRSShapeElementChanged)); if (this.DiagramTreeNode.PresentationElementClass is RelationshipShapeClass) { AddRSShapeElement((this.DiagramTreeNode.PresentationElementClass as RelationshipShapeClass).ReferenceRelationship); } else { AddShapeElement((this.DiagramTreeNode.PresentationElementClass as PresentationDomainClassElement).DomainClass); } } } }