Пример #1
0
        public void OnRemoveBooks()
        {
            List <BookVM> books = bookForm.GetBooks(BookRelation.CreateAbstract());

            abstractForm.Books.Clear();
            abstractForm.Books.AddRange(books);

            foreach (ConceptVM concept in AllConcepts)
            {
                books = bookForm.GetBooks(BookRelation.CreateConcept(concept.Id));
                concept.Books.Clear();
                concept.Books.AddRange(books);
            }

            foreach (QuestionVM question in AllQuestions)
            {
                books = bookForm.GetBooks(BookRelation.CreateQuestion(question.Id));
                question.Response.Books.Clear();
                question.Response.Books.AddRange(books);
            }

            foreach (VariableVM variable in Variables)
            {
                books = bookForm.GetBooks(BookRelation.CreateVariable(variable.Id));
                variable.Response.Books.Clear();
                variable.Response.Books.AddRange(books);
            }
        }
Пример #2
0
 private BookRelationVM FindExistRelation(BookRelation relationModel)
 {
     foreach (BookRelationVM relation in bookRelations)
     {
         BookRelation thisRelationModel = relation.BookRelation;
         if (thisRelationModel.BookRelationType == relationModel.BookRelationType &&
             thisRelationModel.MetadataId == relationModel.MetadataId)
         {
             return(relation);
         }
     }
     return(null);
 }
Пример #3
0
        public List <BookVM> GetBooks(BookRelation relation)
        {
            List <BookVM> resultBooks = new List <BookVM>();

            foreach (BookVM book in books)
            {
                if (book.ContainsRelation(relation))
                {
                    resultBooks.Add(book);
                }
            }
            return(resultBooks);
        }
Пример #4
0
 public void Init(BookRelation fromRelation)
 {
     foreach (BookRelation relationModel in Book.BookRelations)
     {
         BookRelationVM relation = CreateRelation(relationModel);
         bookRelations.Add(relation);
     }
     if (fromRelation != null && FindExistRelation(fromRelation) == null)
     {
         Book.BookRelations.Add(fromRelation);
         bookRelations.Add(CreateRelation(fromRelation));
     }
     modelSyncher = new ModelSyncher <BookRelationVM, BookRelation>(this, bookRelations, Book.BookRelations);
 }
Пример #5
0
 private void RemoveBookRelationOfMetaData(string metaDataId)
 {
     foreach (BookVM book in books)
     {
         for (int i = book.Book.BookRelations.Count - 1; i >= 0; i--)
         {
             BookRelation relation = book.Book.BookRelations[i];
             if (relation.MetadataId == metaDataId)
             {
                 book.Book.BookRelations.RemoveAt(i);
             }
         }
     }
 }
Пример #6
0
        public BookVM AddBookExternal(BookRelation relation)
        {
            BookVM newBook = AddOrEditBook(null, relation);

            if (newBook != null)
            {
                using (UndoTransaction tx = new UndoTransaction(UndoManager))
                {
                    books.Add(newBook);
                    StudyUnit.OnRemoveBooks();
                    tx.Commit();
                }
            }
            return(newBook);
        }
Пример #7
0
        private BookRelationVM CreateRelation(BookRelation relationModel)
        {
            ObservableCollection <ITitleProvider> objects = StudyUnit.RelatedMetaData(relationModel.BookRelationType);
            string         typeName     = BookRelationItem.GetLabel(relationModel.BookRelationType);
            ITitleProvider obj          = SelectMetaDataWindowVM.Find(objects, relationModel.MetadataId);
            string         metaDataName = null;

            if (obj != null)
            {
                metaDataName = obj.Title;
            }
            BookRelationVM relation = new BookRelationVM(relationModel)
            {
                Parent       = this,
                TypeName     = typeName,
                MetaDataName = metaDataName
            };

            return(relation);
        }
Пример #8
0
        public BookVM SelectBookExternal(BookRelation relation)
        {
            SelectObjectWindowVM <BookVM> vm     = new SelectObjectWindowVM <BookVM>(books);
            SelectObjectWindow            window = new SelectObjectWindow(vm);
            BookVM book = SelectObjectWindow.Select(Resources.SelectBook, vm) as BookVM; //Select

            if (book != null)
            {
                using (UndoTransaction tx = new UndoTransaction(UndoManager))
                {
                    if (book.Book.FindRelation(relation) == null)
                    {
                        //Need not be generated here since ViewModel Since is re-generated every time EditBookWindow is displayed.
                        book.Book.BookRelations.Add(relation);
                    }
                    StudyUnit.OnRemoveBooks();
                    tx.Commit();
                }
            }
            return(book);
        }
Пример #9
0
        private BookRelationVM SelectRelation(BookRelation selectedRelationModel)
        {
            BookRelationType type       = BookRelationType.Abstract;
            string           metaDataId = null;

            if (selectedRelationModel != null)
            {
                type       = selectedRelationModel.BookRelationType;
                metaDataId = selectedRelationModel.MetadataId;
            }
            SelectMetaDataWindowVM vm = new SelectMetaDataWindowVM(type, metaDataId)
            {
                Parent = this
            };

            vm.Init();
            SelectMetaDataWindow window = new SelectMetaDataWindow(vm);

            window.Owner = Window;
            BookRelationVM relation = null;

            if (window.ShowDialog() == true)
            {
                BookRelation relationModel = new BookRelation();
                relationModel.BookRelationType = vm.BookRelationType;
                ITitleProvider selectedObject = vm.SelectedObject as ITitleProvider;
                if (selectedObject != null)
                {
                    relationModel.MetadataId = selectedObject.Id;
                }
                relation = FindExistRelation(relationModel);
                if (relation == null)
                {
                    relation = CreateRelation(relationModel);
                }
            }
            return(relation);
        }
Пример #10
0
        private BookVM AddOrEditBook(Book book, BookRelation relation)
        {
            EditBookWindowVM vm = new EditBookWindowVM(book)
            {
                Parent = this
            };

            vm.Init(relation);
            EditBookWindow window = new EditBookWindow(vm);

            window.Owner = Application.Current.MainWindow;
            BookVM newBook = null;

            if (window.ShowDialog() == true)
            {
                newBook = new BookVM(vm.Book)
                {
                    Parent = this
                };
            }
            window.Content = null;
            return(newBook);
        }
Пример #11
0
 private BookRelation FromRelation()
 {
     return(BookRelation.CreateAbstract());
 }
Пример #12
0
 private BookRelation FromRelation()
 {
     return(BookRelation.CreateConcept(Id));
 }
Пример #13
0
 private BookRelation FromRelation()
 {
     return(IsQuestionDesignMode ? BookRelation.CreateQuestion(ParentId) : BookRelation.CreateVariable(ParentId));
 }
Пример #14
0
 public BookRelationVM(BookRelation bookRelation)
 {
     this.bookRelation = bookRelation;
 }
Пример #15
0
 public BookVM AddBook(BookRelation relation)
 {
     return(bookForm.AddBookExternal(relation));
 }
Пример #16
0
 public BookVM SelectBook(BookRelation bookRelation)
 {
     return(bookForm.SelectBookExternal(bookRelation));
 }
Пример #17
0
 public bool ContainsRelation(BookRelation relation)
 {
     return(Book.ContainsBookRelation(relation));
 }