protected virtual void UpdateLinkTypes(bool isLastChildRow) { ElementVisibility elementVisibility = ElementVisibility.Hidden; if (this.rowElement.TableElement.ShowSelfReferenceLines) { elementVisibility = ElementVisibility.Visible; } int index1 = this.LinkCount - 1; GridLinkItem hierarchyLink1 = this.hierarchyLinks[index1]; hierarchyLink1.Visibility = elementVisibility; hierarchyLink1.Type = !isLastChildRow ? GridLinkItem.LinkType.TShape : GridLinkItem.LinkType.RightBottomAngleShape; GridViewHierarchyRowInfo parent = this.RowInfo.Parent as GridViewHierarchyRowInfo; for (int index2 = index1 - 1; index2 >= 0; --index2) { GridLinkItem hierarchyLink2 = this.hierarchyLinks[index2]; hierarchyLink2.Visibility = elementVisibility; hierarchyLink2.Type = GridLinkItem.LinkType.VerticalLine; if (parent != null) { if (this.IsLastChildRow(parent.Parent, (GridViewRowInfo)parent)) { hierarchyLink2.Visibility = ElementVisibility.Hidden; } parent = parent.Parent as GridViewHierarchyRowInfo; } else { hierarchyLink2.Visibility = ElementVisibility.Hidden; } } }
protected virtual void UpdateLinksCore() { int num1 = this.RowInfo.Level - this.LinkCount - 1; if (this.RowInfo.Group != null) { num1 -= this.RowInfo.Group.Level + 1; } int num2 = Math.Abs(num1); bool flag = num1 > 0; for (; num2 > 0; --num2) { if (flag) { GridLinkItem linkItem = this.GetLinkItem(); linkItem.ThemeRole = "SelfReferencingLink"; linkItem.Visibility = ElementVisibility.Hidden; linkItem.StretchVertically = true; int num3 = (int)linkItem.SetDefaultValueOverride(RadElement.FitToSizeModeProperty, (object)RadFitToSizeMode.FitToParentBounds); this.stackLayoutElement.Children.Insert(0, (RadElement)linkItem); this.hierarchyLinks.Insert(0, linkItem); } else { GridLinkItem hierarchyLink = this.hierarchyLinks[0]; this.stackLayoutElement.Children.Remove((RadElement)hierarchyLink); this.hierarchyLinks.Remove(hierarchyLink); this.CacheLinkItem(hierarchyLink); } } }
protected void CacheLinkItem(GridLinkItem item) { if (this.linksCache.Count >= 15) { return; } this.linksCache.Add(item); }
protected override void CreateChildElements() { base.CreateChildElements(); this.linkPrimitive = new GridLinkItem(); this.linkPrimitive.ThemeRole = "GroupLink"; this.linkPrimitive.LineStyle = DashStyle.Solid; this.Children.Add((RadElement)this.linkPrimitive); this.leftArrow = new ArrowPrimitive(); this.leftArrow.SmoothingMode = SmoothingMode.None; this.Children.Add((RadElement)this.leftArrow); this.rightArrow = new ArrowPrimitive(); this.rightArrow.SmoothingMode = SmoothingMode.None; this.Children.Add((RadElement)this.rightArrow); this.InitializePrimitives(this.Type); }
protected GridLinkItem GetLinkItem() { GridLinkItem gridLinkItem; if (this.linksCache.Count > 0) { gridLinkItem = this.linksCache[this.linksCache.Count - 1]; this.linksCache.RemoveAt(this.linksCache.Count - 1); } else { gridLinkItem = new GridLinkItem(this.rowElement.TableElement); } return(gridLinkItem); }
protected void DisposeLinks() { for (int index = this.hierarchyLinks.Count - 1; index >= 0; --index) { GridLinkItem hierarchyLink = this.hierarchyLinks[index]; if (!hierarchyLink.IsDisposed) { this.stackLayoutElement.Children.Remove((RadElement)hierarchyLink); this.hierarchyLinks.Remove(hierarchyLink); hierarchyLink.Dispose(); } } for (int index = this.linksCache.Count - 1; index >= 0; --index) { GridLinkItem gridLinkItem = this.linksCache[index]; if (!gridLinkItem.IsDisposed) { this.linksCache.Remove(gridLinkItem); gridLinkItem.Dispose(); } } }