Inheritance: INotifyPropertyChanged
        public static void Reflect(TagManager dest, TagTreeViewItemModelManager source)
        {
            foreach (var deletedTag in source.DeletedTags)
            {
                dest.Remove(deletedTag.Id);
            }

            dest.ReconnectAllToBaseTag();

            foreach (var tag in source.AddedTags)
            {
                var addNewTag = new TagModel(tag.Id) { Name = tag.Name };
                dest.Add(addNewTag);
                dest.ConnectTags(dest.GetBaseTag(), addNewTag);
            }

            foreach (var tag in dest.TagDictionary.Values)
            {
                if (tag.IsBase())
                {
                    continue;
                }

                var sourceTag = source.TagDictionary[tag.Id];

                var parent = dest.TagDictionary[sourceTag.Parent.Id];

                dest.DisconnectFromParent(tag);
                dest.ConnectTags(parent, tag);
                tag.Name = sourceTag.Name;
            }
        }
        public static BaseTagTreeViewItemModel ConvertBaseTag(TagModel tag)
        {
            var model = new BaseTagTreeViewItemModel(tag.Id);
            model.Name = tag.Name;

            return model;
        }
Example #3
0
 public void OnTagRemoved(TagModel tag)
 {
     if (TagRemoved != null)
     {
         TagRemoved(this, tag);
     }
 }
        public void ChangeParent(TagModel target, TagModel draggedItem)
        {
            _manager.DisconnectFromParent(draggedItem);
            _manager.ConnectTags(target, draggedItem);

            var modelItem = target as TagTreeViewItemModel;
            modelItem.IsExpanded = true;
        }
        public static void ExpandChild(TagTreeViewItemModel parentTag, TagModel baseTag, ref TagTreeViewItemModelManager manager)
        {
            foreach (var child in baseTag.Children)
            {
                var childTag = ConvertTagToTagTreeViewItemModel.ConvertTag(child);

                manager.Add(childTag);
                manager.ConnectTags(parentTag, childTag);

                ExpandChild(childTag, child, ref manager);
            }
        }
        public static TagTreeViewItemModel ConvertTag(TagModel tag)
        {
            if (tag.IsBase())
            {
                return ConvertBaseTag(tag);
            }

            var model = new TagTreeViewItemModel(tag.Id);
            model.Name = tag.Name;

            return model;
        }
        protected override void RemoveFromDictonary(TagModel tag)
        {
            base.RemoveFromDictonary(tag as TagModel);

            if (_addedTags.Contains(tag))
            {
                _addedTags.Remove(tag as TagTreeViewItemModel);
            }
            else
            {
                _deletedTags.Add(tag as TagTreeViewItemModel);
            }
        }
Example #8
0
        private static SaveTagModel GetSaveTag(TagModel tagModel)
        {
            var saveTagModel = new SaveTagModel();

            saveTagModel.Id = tagModel.Id;
            saveTagModel.Name = tagModel.Name;
            saveTagModel.ParentId = tagModel.Parent.Id;

            foreach (var child in tagModel.Children)
            {
                saveTagModel.Children.Add(child.Id);
            }

            return saveTagModel;
        }
Example #9
0
        public virtual void Remove(TagModel tag)
        {
            if (tag.Parent == null)
            {
                return;
            }

            RemoveChildren(tag);


            RemoveFromDictonary(tag);
            OnTagRemoved(tag);
            DisconnectFromParent(tag);

            DoPostRemove(tag);
        }
Example #10
0
        public bool HasInDescendent(TagModel search)
        {
            foreach (var tag in _children)
            {
                if (tag.Id == search.Id)
                {
                    return true;
                }

                if (tag.HasInDescendent(search))
                {
                    return true;
                }
            }

            return false;
        }
Example #11
0
        public bool HasInDescendent(TagModel search)
        {
            foreach (var tag in _children)
            {
                if (tag.Id == search.Id)
                {
                    return(true);
                }

                if (tag.HasInDescendent(search))
                {
                    return(true);
                }
            }

            return(false);
        }
Example #12
0
 protected virtual void RemoveFromDictonary(TagModel tag)
 {
     _tagDictionary.Remove(tag.Id);
 }
Example #13
0
        public void RemoveChildren(TagModel tag)
        {
            foreach(var child in tag.Children)
            {
                RemoveFromDictonary(child);
                RemoveChildren(child);
                OnTagRemoved(child);

                DoPostRemove(child);
            }

            tag.Children.Clear();
        }
Example #14
0
 protected virtual void DoPostRemove(TagModel tag)
 {
     EventAggregator.OnTagModelModified(this, new Event.TagModelModifiedEventArgs()
     {
         Kind = Event.TagModelModifiedKind.Deleted,
         ModifiedTag = tag,
     }
     );
 }
 private void ChangeIsAppearedTag(TagModel tag, bool isAppeared)
 {
     if (isAppeared == false)
     {
         SelectingModel.Tags.Remove(tag.Id);
     }
 }
Example #16
0
        public virtual void Remove(TagModel tag)
        {
            if (tag.Parent == null)
            {
                return;
            }

            RemoveChildren(tag);

            RemoveFromDictonary(tag);
            OnTagRemoved(tag);
            DisconnectFromParent(tag);

            DoPostRemove(tag);
        }
Example #17
0
 public void DisconnectFromParent(TagModel tag)
 {
     tag.Parent.Children.Remove(tag);
     tag.Parent = null;
 }
 void _treeViewModel_TagRemoved(object sender, TagModel deleteTag)
 {
     if (_selectingTags.Contains(deleteTag))
     {
         _selectingTags.Remove(deleteTag);
     }
 }
Example #19
0
 public void DisconnectFromParent(TagModel tag)
 {
     tag.Parent.Children.Remove(tag);
     tag.Parent = null;
 }
 public bool IsDeleted(TagModel tag)
 {
     return _deletedTags.Find((e) => e.Id == tag.Id) != null;
 }
Example #21
0
 public void Add(TagModel tag)
 {
     _tagDictionary.Add(tag.Id, tag);
     DoPostAdd(tag);
 }
Example #22
0
 protected virtual void RemoveFromDictonary(TagModel tag)
 {
     _tagDictionary.Remove(tag.Id);
 }
 public void Remove(TagModel deleteTarget)
 {
     _manager.Remove(deleteTarget);
 }
        private bool CheckDropTarget(TagModel sourceItem, TagModel targetItem)
        {
            if (sourceItem.Id == targetItem.Id)
            {
                return false;
            }

            if (sourceItem.HasInDescendent(targetItem))
            {
                return false;
            }

            return true;
        }
 void _manager_TagRemoved(object sender, TagModel tag)
 {
     OnPropertyChanged("Tags");
     OnTagRemoved(tag);
 }
Example #26
0
 public void Add(TagModel tag)
 {
     _tagDictionary.Add(tag.Id, tag);
     DoPostAdd(tag);
 }
 protected override void DoPostAdd(TagModel tag)
 {
 }
Example #28
0
 public void ConnectTags(TagModel parent, TagModel child)
 {
     parent.Children.Add(child);
     child.Parent = parent;
 }
 protected override void DoPostRemove(TagModel tag)
 {
 }
Example #30
0
 public void ConnectTags(TagModel parent, TagModel child)
 {
     parent.Children.Add(child);
     child.Parent = parent;
 }
        public void RemoveSelection(TagModel selectingTag)
        {
            if (selectingTag == null)
            {
                return;
            }

            if (!_selectingTags.Contains(selectingTag))
            {
                return;
            }

            SelectingTags.Remove(selectingTag);

            OnSelectingButtonChanged();
        }