protected virtual void OnDelete(PublishEvent publishEvent)
        {
            TreeNavigationItem treeNavigationItem = Find(Roots, publishEvent.AffectedObjectId);

            if (treeNavigationItem == null)
            {
                return;
            }
            if (treeNavigationItem.GetParentId() == null)
            {
                Roots.Remove(treeNavigationItem);
            }
            else
            {
                TreeNavigationItem parentTreeNavigationItem = treeNavigationItem.Parent;
                parentTreeNavigationItem.Children.Remove(treeNavigationItem);
            }
        }
        public void Drop(TreeNavigationItem draggedTreeNavigationItem, TreeNavigationItem targetTreeNavigationItem)
        {
            Connection.GetInstance().StartTransaction();
            IMoveAwareCRUDService moveAwareCRUDService = ServiceActivator.Get <IFolderCRUDService>();

            moveAwareCRUDService.Move(draggedTreeNavigationItem.Id, targetTreeNavigationItem.Id);
            Connection.GetInstance().EndTransaction();
            Publisher.GetInstance().Publish(PublishEvent.CreateDeletionEvent(draggedTreeNavigationItem.Id, draggedTreeNavigationItem.GetParentId()));
            Publisher.GetInstance().Publish(PublishEvent.CreateCreationEvent(draggedTreeNavigationItem.Id, targetTreeNavigationItem.GetParentId()));
        }