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); }
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); }
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); }
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; }