/// <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="embeddingDiagramNode">Element represented by this view model.</param> public EmbeddingDiagramNodeViewModel(ViewModelStore viewModelStore, EmbeddingDiagramNode embeddingDiagramNode, EmbeddingDiagramNodeViewModel parent) : base(viewModelStore, embeddingDiagramNode) { this.parent = parent; this.embeddingNodeVMs = new ObservableCollection <EmbeddingDiagramNodeViewModel>(); this.embeddingNodeVMsRO = new ReadOnlyObservableCollection <EmbeddingDiagramNodeViewModel>(this.embeddingNodeVMs); if (this.EmbeddingDiagramNode != null) { foreach (EmbeddingDiagramNode node in this.EmbeddingDiagramNode.EmbeddingDiagramNodes) { this.AddEmbeddingDiagramNode(node); } this.EventManager.GetEvent <ModelElementPropertyChangedEvent>().Subscribe(this.EmbeddingDiagramNode.Id, new Action <ElementPropertyChangedEventArgs>(OnElementPropertyChanged)); this.EventManager.GetEvent <ModelElementLinkAddedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(EmbeddingDiagramNodeHasEmbeddingDiagramNodes.DomainClassId), true, this.EmbeddingDiagramNode.Id, new Action <ElementAddedEventArgs>(OnEmbeddingDiagramNodeAdded)); this.EventManager.GetEvent <ModelElementLinkDeletedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(EmbeddingDiagramNodeHasEmbeddingDiagramNodes.DomainClassId), true, this.EmbeddingDiagramNode.Id, new Action <ElementDeletedEventArgs>(OnEmbeddingDiagramNodeRemoved)); this.EventManager.GetEvent <ModelRolePlayerMovedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(EmbeddingDiagramNodeHasEmbeddingDiagramNodes.DomainClassId), this.EmbeddingDiagramNode.Id, new Action <RolePlayerOrderChangedEventArgs>(OnEmbeddingDiagramNodeMoved)); this.EventManager.GetEvent <ModelRolePlayerChangedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRole(EmbeddingDiagramNodeHasEmbeddingDiagramNodes.SourceEmbeddingDiagramNodeDomainRoleId), new Action <RolePlayerChangedEventArgs>(OnEmbeddingDiagramNodeChanged)); } expandCollapseTreeCommand = new DelegateCommand(ExpandCollapseTreeCommand_Executed); }
/// <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="embeddingDiagramNode">Element represented by this view model.</param> public EmbeddingDiagramNodeViewModel(ViewModelStore viewModelStore, EmbeddingDiagramNode embeddingDiagramNode, EmbeddingDiagramNodeViewModel parent) : base(viewModelStore, embeddingDiagramNode) { this.parent = parent; this.embeddingNodeVMs = new ObservableCollection<EmbeddingDiagramNodeViewModel>(); this.embeddingNodeVMsRO = new ReadOnlyObservableCollection<EmbeddingDiagramNodeViewModel>(this.embeddingNodeVMs); if (this.EmbeddingDiagramNode != null) { foreach (EmbeddingDiagramNode node in this.EmbeddingDiagramNode.EmbeddingDiagramNodes) this.AddEmbeddingDiagramNode(node); this.EventManager.GetEvent<ModelElementPropertyChangedEvent>().Subscribe(this.EmbeddingDiagramNode.Id, new Action<ElementPropertyChangedEventArgs>(OnElementPropertyChanged)); this.EventManager.GetEvent<ModelElementLinkAddedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(EmbeddingDiagramNodeHasEmbeddingDiagramNodes.DomainClassId), true, this.EmbeddingDiagramNode.Id, new Action<ElementAddedEventArgs>(OnEmbeddingDiagramNodeAdded)); this.EventManager.GetEvent<ModelElementLinkDeletedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(EmbeddingDiagramNodeHasEmbeddingDiagramNodes.DomainClassId), true, this.EmbeddingDiagramNode.Id, new Action<ElementDeletedEventArgs>(OnEmbeddingDiagramNodeRemoved)); this.EventManager.GetEvent<ModelRolePlayerMovedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRelationship(EmbeddingDiagramNodeHasEmbeddingDiagramNodes.DomainClassId), this.EmbeddingDiagramNode.Id, new Action<RolePlayerOrderChangedEventArgs>(OnEmbeddingDiagramNodeMoved)); this.EventManager.GetEvent<ModelRolePlayerChangedEvent>().Subscribe(this.Store.DomainDataDirectory.GetDomainRole(EmbeddingDiagramNodeHasEmbeddingDiagramNodes.SourceEmbeddingDiagramNodeDomainRoleId), new Action<RolePlayerChangedEventArgs>(OnEmbeddingDiagramNodeChanged)); } expandCollapseTreeCommand = new DelegateCommand(ExpandCollapseTreeCommand_Executed); }
/// <summary> /// Adds a new embedding view model for the given node. /// </summary> /// <param name="node">Node.</param> public void AddEmbeddingDiagramNode(EmbeddingDiagramNode node) { // verify that node hasnt been added yet foreach (EmbeddingDiagramNodeViewModel viewModel in this.embeddingNodeVMs) { if (viewModel.EmbeddingDiagramNode.Id == node.Id) { return; } } EmbeddingDiagramNodeViewModel vm = new EmbeddingDiagramNodeViewModel(this.ViewModelStore, node, this); this.embeddingNodeVMs.Add(vm); foreach (EmbeddingDiagramNodeViewModel viewModel in this.embeddingNodeVMs) { viewModel.UpdateNodePosition(); } OnPropertyChanged("HasEmbeddingNodes"); }
/// <summary> /// Adds a new embedding view model for the given node. /// </summary> /// <param name="node">Node.</param> public void AddEmbeddingDiagramNode(EmbeddingDiagramNode node) { // verify that node hasnt been added yet foreach (EmbeddingDiagramNodeViewModel viewModel in this.embeddingNodeVMs) if (viewModel.EmbeddingDiagramNode.Id == node.Id) return; EmbeddingDiagramNodeViewModel vm = new EmbeddingDiagramNodeViewModel(this.ViewModelStore, node, this); this.embeddingNodeVMs.Add(vm); foreach (EmbeddingDiagramNodeViewModel viewModel in this.embeddingNodeVMs) viewModel.UpdateNodePosition(); OnPropertyChanged("HasEmbeddingNodes"); }