public ParticlePropertiesViewModel(IEventAggregator eventAggregator,
            IParticlesManager particlesManager, IBlockManager blockManager)
        {
            _particleGuid = Guid.Empty;
            _eventAggregator = eventAggregator;
            _particlesManager = particlesManager;
            _blockManager = blockManager;
            ParticleInplaces = new ObservableCollection<ParticleInplaceBlock>();

            _eventAggregator.GetEvent<BookmarkSelected>().Subscribe(BookmarkSelected);

            DeleteParticleInplaceCommand = new DelegateCommand<ParticleInplaceBlock>(pi =>
            {
                _particlesManager.DeleteParticleInplace(pi.ParticleInplace);
                ParticleInplaces.Remove(pi);
            });

            DeleteParticleCommand = new DelegateCommand(() =>
            {
                if (_particleGuid != Guid.Empty)
                {
                    var result = _particlesManager.DeleteParticle(_particleGuid);
                    if (result)
                    {
                        _eventAggregator.GetEvent<MaterialUpdatedEvent>().Publish(_materialId);
                        _eventAggregator.GetEvent<BookmarkSelected>().Publish(Guid.Empty);
                    }
                }
            });
        }
        public AddParticleDlgViewModel(IParticlesManager particleManager, Type targetType, IBlockManager blockManager)
        {
            _particleManager = particleManager;
            _blockManager = blockManager;
            AddParticleVm = new AddParticleViewViewModel(_particleManager, Visibility.Collapsed);
            OkCommand = new DelegateCommand<Window>((wnd) =>
            {
                if (AddParticleVm.UseNewParticle)
                {
                    var particle = _particleManager.CreateParticle(AddParticleVm.NewParticle.Material,
                        AddParticleVm.NewParticle.Begin, AddParticleVm.NewParticle.End);
                    _blockManager.AddParticleToBlock(_block, particle);
                }
                else if (AddParticleVm.UseExistParticle && AddParticleVm.ExistParticle.HasValue)
                {
                    var particle = _particleManager.GetParticleById(AddParticleVm.ExistParticle.Value);
                    _blockManager.AddParticleToBlock(_block, particle);
                }

                wnd.DialogResult = true;
                wnd.Close();
            }, wnd => _block != null && (AddParticleVm.UseNewParticle || AddParticleVm.UseExistParticle));

            SelectIdeaCommand = new DelegateCommand(() =>
            {
                var dlg = new SelectTagDlg(targetType);
                var res = dlg.ShowDialog();
                if (res.HasValue && res.Value && dlg.Id.HasValue)
                {
                    _block = _blockManager.GetBlockById(dlg.Id.Value);
                    BlockCaption = _block.Caption;
                    OkCommand.RaiseCanExecuteChanged();
                }
            });
        }
        public CreateCommentDlgViewModel(IParticlesManager particlesManager, IBlockManager blockManager,
            ICommentManager commentManager, IEventAggregator eventAggregator)
        {
            _particlesManager = particlesManager;
            _blockManager = blockManager;
            _commentManager = commentManager;
            _eventAggregator = eventAggregator;
            AddParticleVm = new AddParticleViewViewModel(particlesManager);

            SelectBlockCommand = new DelegateCommand(() =>
            {
                var dlg = new SelectTagDlg(typeof (Guidable));
                var res = dlg.ShowDialog();
                if (res.HasValue && res.Value && dlg.Id.HasValue)
                {
                    _myGuidable = _blockManager.GetGuidableById(dlg.Id.Value);
                    OkCommand.RaiseCanExecuteChanged();
                    if (_myGuidable is Material)
                        GuidableCaption = (_myGuidable as Material).Name;
                    else if (_myGuidable is Block)
                        GuidableCaption = (_myGuidable as Block).Caption;
                }
            });

            OkCommand = new DelegateCommand<Window>((wnd) =>
            {
                var comment = _commentManager.CreateComment(Caption, _myGuidable);

                if (AddParticleVm.AddParticle)
                    if (AddParticleVm.UseNewParticle)
                    {
                        var particle = _particlesManager.CreateParticle(AddParticleVm.NewParticle.Material,
                            AddParticleVm.NewParticle.Begin, AddParticleVm.NewParticle.End);
                        _blockManager.AddParticleToBlock(comment, particle);
                        ParticleId = particle.Id;
                    }
                    else if (AddParticleVm.UseExistParticle && AddParticleVm.ExistParticle.HasValue)
                    {
                        var particle = _particlesManager.GetParticleById(AddParticleVm.ExistParticle.Value);
                        _blockManager.AddParticleToBlock(comment, particle);
                        ParticleId = particle.Id;
                    }

                _eventAggregator.GetEvent<BlockAddedEvent>().Publish(comment.Id);
                wnd.DialogResult = true;
                wnd.Close();
            }, wnd => !String.IsNullOrWhiteSpace(Caption) && _myGuidable != null);
        }
        public ConspEditorMainViewModel(IIdeaManager ideaManager, IMaterialManager materialManager,
            ITagsManager tagsManager, IParticlesManager particlesManager, IBlockManager blockManager,
            IEventAggregator eventAggregator, IRelationManager relationManager, ICommentManager commentManager)
        {
            _ideaManager = ideaManager;
            _materialManager = materialManager;
            _tagsManager = tagsManager;
            _particlesManager = particlesManager;
            _blockManager = blockManager;
            _eventAggregator = eventAggregator;
            _relationManager = relationManager;
            _commentManager = commentManager;
            Bookmarks = new List<string>();

            _eventAggregator.GetEvent<MaterialUpdatedEvent>().Subscribe(MaterialUpdated);
        }
Ejemplo n.º 5
0
        public TextModel(IEventAggregator eventAggregator, IMaterialManager materialManager, Guid materialId,
            IBlockManager blockManager, IParticlesManager particlesManager, TextEditor textEditor,
            IUnityContainer container, ISettingsService settingsService)
        {
            _eventAggregator = eventAggregator;
            _materialManager = materialManager;
            _materialId = materialId;
            _blockManager = blockManager;
            _particlesManager = particlesManager;
            _textEditor = textEditor;
            _container = container;
            _settingsService = settingsService;

            Contstruct();
            LoadToEditor();
        }
        public ConspEditorFastMainView(IMaterialManager materialManager,
            IParticlesManager particlesManager, IEventAggregator eventAggregator, ConspEditorFastMainViewModel model, IBlockManager blockManager, IUnityContainer container, ISettingsService settingsService)
        {
            _materialManager = materialManager;
            _particlesManager = particlesManager;
            _eventAggregator = eventAggregator;
            _blockManager = blockManager;
            _container = container;
            _settingsService = settingsService;
            InitializeComponent();
            DataContext = model;
            textEditor.VerticalScrollBarVisibility = ScrollBarVisibility.Visible;
            textEditor.Options.InheritWordWrapIndentation = false;
            _eventAggregator.GetEvent<MaterialUpdatedEvent>().Subscribe(MaterialUpdated);

            CreateMenu();
        }
        public CreateIdeaDlgViewModel(ITagsManager tagsManager, IParticlesManager particleManager,
            IIdeaManager ideaManager, IBlockManager blockManager, IEventAggregator eventAggregator)
        {
            _tagsManager = tagsManager;
            _particleManager = particleManager;
            _ideaManager = ideaManager;
            _blockManager = blockManager;
            _eventAggregator = eventAggregator;
            AddParticleVm = new AddParticleViewViewModel(_particleManager);
            OkCommand = new DelegateCommand<Window>((wnd) =>
            {
                var idea = _ideaManager.CreateIdea(Caption);
                if (_parentTag != null)
                    _ideaManager.AddTagToIdea(idea, _parentTag);

                if (AddParticleVm.AddParticle)
                    if (AddParticleVm.UseNewParticle)
                    {
                        var particle = _particleManager.CreateParticle(AddParticleVm.NewParticle.Material,
                            AddParticleVm.NewParticle.Begin, AddParticleVm.NewParticle.End);
                        _blockManager.AddParticleToBlock(idea, particle);
                    }
                    else if (AddParticleVm.UseExistParticle && AddParticleVm.ExistParticle.HasValue)
                    {
                        var particle = _particleManager.GetParticleById(AddParticleVm.ExistParticle.Value);
                        _blockManager.AddParticleToBlock(idea, particle);
                    }

                _eventAggregator.GetEvent<BlockAddedEvent>().Publish(idea.Id);
                wnd.DialogResult = true;
                wnd.Close();
            }, wnd => !String.IsNullOrWhiteSpace(Caption));

            SelectTagCommand = new DelegateCommand(() =>
            {
                var dlg = new SelectTagDlg(typeof (Tag));
                var res = dlg.ShowDialog();
                if (res.HasValue && res.Value && dlg.Id.HasValue)
                {
                    _parentTag = _tagsManager.GetTagById(dlg.Id.Value);
                    TagCaption = _parentTag.Caption;
                    AddToTag = true;
                }
            });
        }
        public CreateIdeaDlgViewModel(ITagsManager tagsManager, IParticlesManager particleManager,
            IIdeaManager ideaManager, IBlockManager blockManager, IEventAggregator eventAggregator, ISettingsService settingsService)
        {
            _tagsManager = tagsManager;
            _particleManager = particleManager;
            _ideaManager = ideaManager;
            _blockManager = blockManager;
            _eventAggregator = eventAggregator;
            _settingsService = settingsService;

            RecentTags = new List<RecentTag>();
            RecentTags.AddRange(
                settingsService.GetRecentTags()
                    .Select(a => new RecentTag() {Id = a.Id, TagLong = a.Name,
                                                  TagShort = a.Name.Substring(0, Math.Min(a.Name.Length, 20)) + (Math.Min(a.Name.Length, 20) == 20 ? "...;" : ";")
                    }));

            AddParticleVm = new AddParticleViewViewModel(_particleManager);
            OkCommand = new DelegateCommand<Window>((wnd) =>
            {
                var idea = _ideaManager.CreateIdea(Caption);
                if (_parentTag != null)
                    _ideaManager.AddTagToIdea(idea, _parentTag);

                if (AddParticleVm.AddParticle)
                    if (AddParticleVm.UseNewParticle)
                    {
                        var particle = _particleManager.CreateParticle(AddParticleVm.NewParticle.Material,
                            AddParticleVm.NewParticle.Begin, AddParticleVm.NewParticle.End);
                        _blockManager.AddParticleToBlock(idea, particle);
                        ParticleId = particle.Id;
                    }
                    else if (AddParticleVm.UseExistParticle && AddParticleVm.ExistParticle.HasValue)
                    {
                        var particle = _particleManager.GetParticleById(AddParticleVm.ExistParticle.Value);
                        _blockManager.AddParticleToBlock(idea, particle);
                        ParticleId = particle.Id;
                    }

                IdeaId = idea.Id;
                _eventAggregator.GetEvent<BlockAddedEvent>().Publish(idea.Id);
                wnd.DialogResult = true;
                wnd.Close();
            }, wnd => !String.IsNullOrWhiteSpace(Caption));

            SelectTagCommand = new DelegateCommand(() =>
            {
                var dlg = new SelectTagDlg(typeof (Tag));
                var res = dlg.ShowDialog();
                if (res.HasValue && res.Value && dlg.Id.HasValue)
                {
                    _parentTag = _tagsManager.GetTagById(dlg.Id.Value);
                    TagCaption = _parentTag.Caption;
                    AddToTag = true;
                }
            });

            ClickTagCommand = new DelegateCommand<RecentTag>(rt =>
            {
                _parentTag = _tagsManager.GetTagById(rt.Id);
                TagCaption = _parentTag.Caption;
                AddToTag = true;
            });
        }
 public AddParticleViewViewModel(IParticlesManager particlesManager, System.Windows.Visibility addParticleVisibility = Visibility.Visible)
 {
     _particleManager = particlesManager;
     AddParticleVisible = addParticleVisibility;
 }
        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);
                }
            });
        }
        public CreateRelationDlgViewModel(IParticlesManager particlesManager, IIdeaManager ideaManager,
            IRelationManager relationManager, IBlockManager blockManager, IEventAggregator eventAggregator)
        {
            _particlesManager = particlesManager;
            _ideaManager = ideaManager;
            _relationManager = relationManager;
            _blockManager = blockManager;
            _eventAggregator = eventAggregator;
            AddParticleVm = new AddParticleViewViewModel(_particlesManager);

            SelectIdea1Command = new DelegateCommand(() =>
            {
                var dlg = new SelectTagDlg(typeof (Idea));
                var res = dlg.ShowDialog();
                if (res.HasValue && res.Value && dlg.Id.HasValue)
                {
                    _idea1 = _ideaManager.GetIdeaById(dlg.Id.Value);
                    Idea1Caption = _idea1.Caption;
                    OnPropertyChanged("Idea1Caption");
                }
                OkCommand.RaiseCanExecuteChanged();
            });

            SelectIdea2Command = new DelegateCommand(() =>
            {
                var dlg = new SelectTagDlg(typeof (Idea));
                var res = dlg.ShowDialog();
                if (res.HasValue && res.Value && dlg.Id.HasValue)
                {
                    _idea2 = _ideaManager.GetIdeaById(dlg.Id.Value);
                    Idea2Caption = _idea2.Caption;
                    OnPropertyChanged("Idea2Caption");
                }
                OkCommand.RaiseCanExecuteChanged();
            });

            AddRelationTypeCommand = new DelegateCommand<RoutedEventArgs>(e =>
            {
                var text = ((ButtonEdit) e.Source).Text;
                var rt = _relationManager.AddRelationType(text);
                var relationDto = new RelationTypeDto() {Id = rt.Id, Name = text};
                Relations.Add(relationDto);
                Relation = relationDto;
            });

            OkCommand = new DelegateCommand<Window>(wnd =>
            {
                var relation = _relationManager.CreateRelation(Relation.Id, _idea1.Id, _idea2.Id);

                if (AddParticleVm.AddParticle)
                    if (AddParticleVm.UseNewParticle)
                    {
                        var particle = _particlesManager.CreateParticle(AddParticleVm.NewParticle.Material,
                            AddParticleVm.NewParticle.Begin, AddParticleVm.NewParticle.End);
                        _blockManager.AddParticleToBlock(relation, particle);
                    }
                    else if (AddParticleVm.UseExistParticle && AddParticleVm.ExistParticle.HasValue)
                    {
                        var particle = _particlesManager.GetParticleById(AddParticleVm.ExistParticle.Value);
                        _blockManager.AddParticleToBlock(relation, particle);
                    }

                _eventAggregator.GetEvent<BlockAddedEvent>().Publish(relation.Id);
                wnd.DialogResult = true;
                wnd.Close();
            }, wnd => Relation != null && _idea1 != null && _idea2 != null);

            Relations =
                new ObservableCollection<RelationTypeDto>(
                    _relationManager.GetRelationTypes()
                        .Select(rt => new RelationTypeDto() {Id = rt.Id, Name = rt.Caption}));
        }