Beispiel #1
0
        public void RemoveTagModel(TagModel tagModel)
        {
            tagModel.Items.CollectionChanged -= OnTagModelChanged;
            foreach (TagModelItem tagModelItem in tagModel.Items)
            {
                RemoveTagModelItem(tagModelItem);
            }
            TagModels.Remove(tagModel);

            if (TagModels.Count == 0)
            {
                MultiTagModelItems.ForEach(n => n.IsEnabled = false);
            }

            if (IsFixed.Value)
            {
                foreach (FrameMeaning meaning in FixedMeanings)
                {
                    if (tagModel.Supports(meaning) && !tagModel.Contains(meaning))
                    {
                        RemoveTagModelItem(FindTemplateItem(tagModel, meaning));
                    }
                }
            }
        }
Beispiel #2
0
        public void AddTagModel(TagModel tagModel)
        {
            int count = TagModels.Count;

            TagModels.Add(tagModel);

            tagModel.Items.ForEach(n => AddTagModelItem(n));
            tagModel.Items.CollectionChanged += OnTagModelChanged;

            if (count == 0)
            {
                MultiTagModelItems.ForEach(n => n.IsEnabled = true);
            }

            if (IsFixed.Value)
            {
                foreach (FrameMeaning meaning in FixedMeanings)
                {
                    if (tagModel.Supports(meaning) && !tagModel.Contains(meaning))
                    {
                        AddTagModelItem(CreateTemplateItem(tagModel, meaning));
                    }
                }
            }
        }
Beispiel #3
0
 private TagModelItem FindTemplateItem(TagModel tagModel, FrameMeaning meaning)
 {
     if (Object.ReferenceEquals(this[meaning], null))
     {
         return(null);
     }
     else
     {
         return
             ((from tagModelItem in this[meaning].Items
               where tagModelItem.TagModel == tagModel && !tagModel.Contains(tagModelItem)
               select tagModelItem).FirstOrDefault());
     }
 }
Beispiel #4
0
        private void OnTagModelChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            if (e.OldItems != null)
            {
                foreach (object obj in e.OldItems)
                {
                    TagModelItem item = obj as TagModelItem;

                    if (IsFixed.Value)
                    {
                        TagModel tagModel = tagModelItemToTagModel[item];
                        if (FixedMeanings.Contains(item.Meaning) && !tagModel.Contains(item.Meaning))
                        {
                            AddTagModelItem(CreateTemplateItem(tagModel, item.Meaning));
                        }
                    }

                    RemoveTagModelItem(item);
                }
            }

            if (e.NewItems != null)
            {
                foreach (object obj in e.NewItems)
                {
                    TagModelItem item = obj as TagModelItem;

                    AddTagModelItem(item);

                    if (IsFixed.Value)
                    {
                        TagModel     tagModel     = tagModelItemToTagModel[item];
                        TagModelItem templateItem = FindTemplateItem(tagModel, item.Meaning);

                        if (!Object.ReferenceEquals(templateItem, null))
                        {
                            RemoveTagModelItem(templateItem);
                        }
                    }
                }
            }
        }