public CreateReferenceDlg(CreateReferenceDlgViewModel dlgVm) { InitializeComponent(); Loaded += (sender, args) => { var hwnd = new WindowInteropHelper(this).Handle; WindowHelper.SetWindowAsDialog(hwnd); DataContext = dlgVm; }; }
public TagsManagerMainViewModel(ITagsManager tagsManager, IBlockManager blockManager, EventAggregator eventAggregator, IReferenceManager referenceManager, IRelationManager relationManager, IIdeaManager ideaManager, ISharedService shared, IMaterialManager materialManager, IParticlesManager particlesManager) { _eventAggregator = eventAggregator; _shared = shared; _db = new AllDb() { TagsManager = tagsManager, RelationManager = relationManager, IdeaManager = ideaManager, BlockManager = blockManager, MaterialManager = materialManager, ParticlesManager = particlesManager }; _eventAggregator.GetEvent<BlockAddedEvent>().Subscribe(guid => { var block = _db.BlockManager.GetBlockById(guid); if (block is Idea) { var ideaDto = IdeaDto.FromBase(block as Idea, _db); OnNodeAdded(ideaDto); } if (block is Relation) { var relDto = RelationDto.FromBase(block as Relation, _db); OnNodeAdded(relDto); } if (block is Comment) { var commDto = CommentDto.FromBase(block as Comment, _db); OnNodeAdded(commDto); } }); _eventAggregator.GetEvent<DatabaseImportedEvent>().Subscribe(s => OnRefresh()); _eventAggregator.GetEvent<MaterialUpdatedEvent>().Subscribe(guid => { var mat = _db.MaterialManager.GetMaterialById(guid); var matDto = MaterialDto.FromBase(mat, _db); OnMaterialUpdate(matDto as MaterialDto); }); NewTagCommand = new DelegateCommand<TreeItemDto>((dto) => { if (dto == null || dto is TagDto) { var added = _db.TagsManager.AddTag(dto == null ? null : (Guid?) dto.Id, "New tag"); var addedDto = TagDto.FromBase(added, _db); OnNodeAdded(addedDto); OnRenameTag(addedDto); } }); NewIdeaCommand = new DelegateCommand<TreeItemDto>(dto => { /*var added = _ideaManager.CreateIdea("New idea"); var addedDto = _map.Map<IdeaDto>(added); OnNodeAdded(addedDto); OnRenameTag(addedDto);*/ }); AddReferenceCommand = new DelegateCommand<TreeItemDto>(dto => { if (dto is IdeaDto || dto is RelationDto) { var dlgVm = new CreateReferenceDlgViewModel(_db.BlockManager, dto); if (shared.SelectedParticle != Guid.Empty) { var pis = _db.ParticlesManager.GetParticleInplacesForParticle(shared.SelectedParticle); if (pis != null && pis.Any()) { var block = _db.BlockManager.GetBlockById(pis.First().BlockId) as Idea; if (block != null) dlgVm.Block2 = new NamedGuid() {Caption = block.Caption, Uid = block.Id}; } } var dlg = new CreateReferenceDlg(dlgVm); var res = dlg.ShowDialog(); if (res.HasValue && res.Value) { if (dlgVm.IsTo || dlgVm.IsBoth) { var refer = referenceManager.CreateReference(dlgVm.Block1.Uid, dlgVm.Block2.Uid); OnNodeAdded(ReferenceDto.FromBase(refer, _db)); } if (dlgVm.IsFrom || dlgVm.IsBoth) { var refer = referenceManager.CreateReference(dlgVm.Block2.Uid, dlgVm.Block1.Uid); OnNodeAdded(ReferenceDto.FromBase(refer, _db)); } } } }); ClearCommand = new DelegateCommand(() => { tagsManager.DeleteAllTAgs(); OnRefresh(); }); OpenIdeaCommand = new DelegateCommand<TreeItemDto>(dto => { if (dto is IdeaDto) Interfaces.CompositeCommands.OpenBlockCommand.Execute(dto.Id); if (dto is MaterialDto) Interfaces.CompositeCommands.OpenSourceCommand.Execute(dto.Id); }); RenameCommand = new DelegateCommand<TreeItemDto>(OnRenameTag); AddCurrentMaterialCommand = new DelegateCommand<TagDto>(dto => { if (_shared.CurrentMaterial.HasValue) { _db.TagsManager.ApplyTagToMaterial(_shared.CurrentMaterial.Value, dto.Id); var m = _db.MaterialManager.GetMaterialById(_shared.CurrentMaterial.Value); var addedDto = MaterialDto.FromBase(m, _db); OnNodeAdded(addedDto); } }); DeleteCommand = new DelegateCommand<TreeItemDto>(dto => { if (dto is IdeaDto) { _db.IdeaManager.DeleteIdea((dto as IdeaDto).Id); NodeAnnihilated(dto); } }); }