コード例 #1
0
        protected override int GetSortOrder(ItemTreeViewItem item)
        {
            Debug.ArgumentNotNull(item, nameof(item));

            var parent = item.GetParentTreeViewItem();

            if (parent == null)
            {
                return(item.Item.SortOrder);
            }

            var last = parent.Items[parent.Items.Count - 1] as ItemTreeViewItem;

            if (last == null)
            {
                return(item.Item.SortOrder);
            }

            return(last.Item.SortOrder + 100);
        }
コード例 #2
0
        protected override int GetSortOrder(ItemTreeViewItem item)
        {
            Debug.ArgumentNotNull(item, nameof(item));

            var parent = item.GetParentTreeViewItem();

            if (parent == null)
            {
                return(item.Item.SortOrder);
            }

            var index = parent.Items.IndexOf(item);

            if (index <= 0)
            {
                return(item.Item.SortOrder);
            }

            var previous = parent.Items[index - 1] as ItemTreeViewItem;

            if (previous == null)
            {
                return(item.Item.SortOrder);
            }

            if (index == 1)
            {
                return(previous.Item.SortOrder - 100);
            }

            var previousPrevious = parent.Items[index - 2] as ItemTreeViewItem;

            if (previousPrevious == null)
            {
                return(item.Item.SortOrder);
            }

            return(previousPrevious.Item.SortOrder + (previous.Item.SortOrder - previousPrevious.Item.SortOrder) / 2);
        }
コード例 #3
0
ファイル: MoveDown.cs プロジェクト: sargeles/Sitecore.Rocks
        protected override int GetSortOrder(ItemTreeViewItem item)
        {
            Debug.ArgumentNotNull(item, nameof(item));

            var parent = item.GetParentTreeViewItem();

            if (parent == null)
            {
                return(item.Item.SortOrder);
            }

            var index = parent.Items.IndexOf(item);

            if (index < 0 || index == parent.Items.Count - 1)
            {
                return(item.Item.SortOrder);
            }

            var next = parent.Items[index + 1] as ItemTreeViewItem;

            if (next == null)
            {
                return(item.Item.SortOrder);
            }

            if (index == parent.Items.Count - 2)
            {
                return(next.Item.SortOrder + 100);
            }

            var nextNext = parent.Items[index + 2] as ItemTreeViewItem;

            if (nextNext == null)
            {
                return(item.Item.SortOrder);
            }

            return(next.Item.SortOrder + (nextNext.Item.SortOrder - next.Item.SortOrder) / 2);
        }
コード例 #4
0
        private static void GetAfterSortOrder([NotNull] ItemTreeViewItem target, int itemCount, out int sortOrder, out int sortOrderDelta, [CanBeNull] out ItemTreeViewItem parent, [CanBeNull] out ItemTreeViewItem anchor)
        {
            Debug.ArgumentNotNull(target, nameof(target));

            sortOrder = target.Item.SortOrder;
            parent    = null;
            anchor    = null;

            var itemsControl = target.GetParentTreeViewItem();

            if (itemsControl == null)
            {
                sortOrder     += 100;
                sortOrderDelta = 100;
                return;
            }

            parent = itemsControl as ItemTreeViewItem;
            if (parent == null)
            {
                sortOrder     -= itemCount * 100;
                sortOrderDelta = 100;
                return;
            }

            var index = itemsControl.Items.IndexOf(target);

            if (index < 0 || index == itemsControl.Items.Count - 1)
            {
                sortOrder     += 100;
                sortOrderDelta = 100;
                return;
            }

            var nextItem = itemsControl.Items[index + 1] as ItemTreeViewItem;

            if (nextItem == null)
            {
                sortOrder     += 100;
                sortOrderDelta = 100;
                return;
            }

            anchor = nextItem;

            var nextSortOrder = nextItem.Item.SortOrder;

            if (nextSortOrder == sortOrder)
            {
                var sort    = 0;
                var fieldId = IdManager.GetFieldId("/sitecore/templates/System/Templates/Sections/Appearance/Appearance/__Sortorder");

                for (var i = 0; i < parent.Items.Count; i++)
                {
                    var item = parent.Items[i] as ItemTreeViewItem;
                    if (item != null)
                    {
                        ItemModifier.Edit(item.Item.ItemUri, fieldId, sort.ToString());
                        item.Item.SortOrder = sort;
                    }

                    sort += i == index ? (itemCount + 1) * 100 : 100;
                }

                sortOrder     = index * 100;
                nextSortOrder = sortOrder + (itemCount + 1) * 100;
            }

            var gap = nextSortOrder - sortOrder;

            sortOrderDelta = gap / (itemCount + 1);

            if (sortOrderDelta == 0)
            {
                sortOrder = sortOrder + (int)Math.Floor((double)gap / 2);
                return;
            }

            sortOrder += sortOrderDelta;
        }