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);
 }
示例#4
0
 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();
         }
     }
 }