示例#1
0
 protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs args)
 {
     base.OnCollectionChanged(args);
     if (this.owner != null)
     {
         RadTreeViewElement treeViewElement = this.owner.TreeViewElement;
         if (treeViewElement != null)
         {
             if (args.Action == NotifyCollectionChangedAction.Add)
             {
                 RadTreeNode node = (RadTreeNode)args.NewItems[0];
                 treeViewElement.Update(RadTreeViewElement.UpdateActions.ItemAdded, node);
                 treeViewElement.OnNodeAdded(new RadTreeViewEventArgs(node));
             }
             else if (args.Action == NotifyCollectionChangedAction.Remove)
             {
                 RadTreeNode node = (RadTreeNode)args.NewItems[0];
                 treeViewElement.Update(RadTreeViewElement.UpdateActions.ItemRemoved, node);
                 treeViewElement.OnNodeRemoved(new RadTreeViewEventArgs(node));
             }
             else if (args.Action == NotifyCollectionChangedAction.Move)
             {
                 RadTreeNode node = (RadTreeNode)args.NewItems[0];
                 treeViewElement.Update(RadTreeViewElement.UpdateActions.ItemMoved, node);
             }
             else if (args.Action == NotifyCollectionChangedAction.Reset)
             {
                 treeViewElement.Update(RadTreeViewElement.UpdateActions.Reset);
             }
         }
     }
 }
示例#2
0
        protected virtual void OnFormatting()
        {
            RadTreeViewElement treeViewElement = this.TreeViewElement;

            if (treeViewElement != null && treeViewElement.AllowAlternatingRowColor)
            {
                bool flag = !treeViewElement.FullRowSelect || !this.Data.Current && !this.Data.Selected && !this.HotTracking;
                int  num  = treeViewElement.FirstVisibleIndex + this.Parent.Children.IndexOf((RadElement)this);
                if (flag && num % 2 != 0)
                {
                    this.DrawFill            = true;
                    this.GradientStyle       = GradientStyles.Solid;
                    this.BackColor           = treeViewElement.AlternatingRowColor;
                    this.StretchHorizontally = true;
                    this.states[1L]          = true;
                    this.TreeViewElement.OnNodeFormatting(new TreeNodeFormattingEventArgs(this));
                    return;
                }
            }
            if (this.states[1L])
            {
                int num1 = (int)this.ResetValue(LightVisualElement.DrawFillProperty, ValueResetFlags.Local);
                int num2 = (int)this.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local);
                int num3 = (int)this.ResetValue(VisualElement.BackColorProperty, ValueResetFlags.Local);
                int num4 = (int)this.ResetValue(RadElement.StretchHorizontallyProperty, ValueResetFlags.Local);
            }
            this.TreeViewElement.OnNodeFormatting(new TreeNodeFormattingEventArgs(this));
        }
 public TreeViewDragDropService(RadTreeViewElement owner)
 {
     this.owner         = owner;
     this.dropHintColor = Color.Empty;
     this.showDragHint  = true;
     this.showDropHint  = true;
 }
示例#4
0
 public BindingProvider(RadTreeViewElement treeView)
     : base(treeView)
 {
     this.TreeView.RelationBindings.CollectionChanged += new NotifyCollectionChangedEventHandler(RelationBindings_CollectionChanged);
     this.TreeView.ListSource.CollectionChanged       += new NotifyCollectionChangedEventHandler(ListSource_CollectionChanged);
     this.TreeView.ListSource.PositionChanged         += new EventHandler(ListSource_PositionChanged);
 }
        protected virtual void PrepareDragHint(TreeNodeElement nodeElement)
        {
            RadTreeViewElement treeViewElement = nodeElement.TreeViewElement;
            Bitmap             bitmap          = (Bitmap)null;
            Size size = Size.Empty;

            if (this.dropHintColor != Color.Empty)
            {
                size   = new Size(this.GetDropHintWidth(treeViewElement), 1);
                bitmap = new Bitmap(size.Width, size.Height);
                using (Graphics graphics = Graphics.FromImage((Image)bitmap))
                {
                    using (SolidBrush solidBrush = new SolidBrush(this.DropHintColor))
                        graphics.FillRectangle((Brush)solidBrush, new Rectangle(Point.Empty, size));
                }
            }
            else if (treeViewElement.ItemDropHint != null)
            {
                size   = new Size(this.GetDropHintWidth(treeViewElement), treeViewElement.ItemDropHint.Image.Size.Height);
                bitmap = new Bitmap(size.Width, size.Height);
                using (Graphics g = Graphics.FromImage((Image)bitmap))
                    treeViewElement.ItemDropHint.Paint(g, new RectangleF(PointF.Empty, (SizeF)size));
            }
            if (bitmap == null)
            {
                return;
            }
            this.dropHintWindow = new RadLayeredWindow();
            this.dropHintWindow.BackgroundImage = (Image)bitmap;
        }
示例#6
0
        protected virtual void OnFormatting()
        {
            RadTreeViewElement treeViewElement = TreeViewElement;

            if (treeViewElement != null && treeViewElement.AllowAlternatingRowColor)
            {
                bool alternatingAllowed = !treeViewElement.FullRowSelect || (!Data.Current && !Data.Selected && !HotTracking);
                int  index = treeViewElement.FirstVisibleIndex + this.Parent.Children.IndexOf(this);
                if (alternatingAllowed && index % 2 != 0)
                {
                    DrawFill            = true;
                    GradientStyle       = GradientStyles.Solid;
                    BackColor           = treeViewElement.AlternatingRowColor;
                    StretchHorizontally = true;
                    this.states[TreeNodeElement.AlrternatingColorSetState] = true;
                    TreeViewElement.OnNodeFormatting(new TreeNodeFormattingEventArgs(this));
                    return;
                }
            }

            if (this.states[TreeNodeElement.AlrternatingColorSetState])
            {
                ResetValue(DrawFillProperty, ValueResetFlags.Local);
                ResetValue(GradientStyleProperty, ValueResetFlags.Local);
                ResetValue(BackColorProperty, ValueResetFlags.Local);
                ResetValue(StretchHorizontallyProperty, ValueResetFlags.Local);
            }

            TreeViewElement.OnNodeFormatting(new TreeNodeFormattingEventArgs(this));
        }
        public override void Synchronize()
        {
            RadTreeViewElement treeViewElement = this.TreeViewElement;

            this.DragElement.Visibility = treeViewElement.AllowDragDrop ? ElementVisibility.Visible : ElementVisibility.Collapsed;
            this.CloseButton.Visibility = treeViewElement.AllowRemove ? ElementVisibility.Visible : ElementVisibility.Collapsed;
            base.Synchronize();
        }
示例#8
0
        private void dragDropService_PreviewDragDrop(object sender, RadDropEventArgs e)
        {
            GridDataRowElement rowElement = e.DragInstance as GridDataRowElement;

            if (rowElement == null)
            {
                return;
            }
            string          sourceText        = rowElement.RowInfo.Cells[0].Value.ToString();
            TreeNodeElement targetNodeElement = e.HitTarget as TreeNodeElement;

            if (targetNodeElement != null)
            {
                RadTreeViewElement treeViewElement = targetNodeElement.TreeViewElement;
                RadTreeNode        targetNode      = targetNodeElement.Data;
                DropPosition       dropPosition    = this.GetDropPosition(e.DropLocation, targetNodeElement);

                switch (dropPosition)
                {
                case DropPosition.None:
                    break;

                case DropPosition.BeforeNode:
                    radGridView1.Rows.Remove(rowElement.RowInfo);

                    RadTreeNodeCollection nodes = targetNode.Parent == null ? treeViewElement.Nodes : targetNode.Parent.Nodes;
                    nodes.Insert(targetNode.Index, new RadTreeNode(sourceText));

                    break;

                case DropPosition.AfterNode:
                    radGridView1.Rows.Remove(rowElement.RowInfo);

                    RadTreeNodeCollection nodes1 = targetNode.Parent == null ? treeViewElement.Nodes : targetNode.Parent.Nodes;
                    int targetIndex = targetNodeElement.Data.Index <= treeViewElement.Nodes.Count - 1 ?
                                      (targetNodeElement.Data.Index + 1) : treeViewElement.Nodes.Count - 1;
                    nodes1.Insert(targetIndex, new RadTreeNode(sourceText));

                    break;

                case DropPosition.AsChildNode:
                    radGridView1.Rows.Remove(rowElement.RowInfo);

                    targetNode.Nodes.Add(new RadTreeNode(sourceText));

                    break;
                }
            }

            RadTreeViewElement treeElement = e.HitTarget as RadTreeViewElement;

            if (treeElement != null)
            {
                radGridView1.Rows.Remove(rowElement.RowInfo);
                radTreeView1.Nodes.Add(new RadTreeNode(sourceText));
            }
        }
        private int GetDropHintWidth(RadTreeViewElement treeView)
        {
            int num = treeView.ControlBoundingRectangle.Width - LightVisualElement.GetBorderThickness((LightVisualElement)treeView, true).Horizontal;

            if (treeView.VScrollBar.Visibility == ElementVisibility.Visible)
            {
                num -= treeView.VScrollBar.Size.Width;
            }
            return(num);
        }
示例#10
0
        public virtual void Synchronize()
        {
            TreeNodeElement nodeElement = NodeElement;

            if (nodeElement != null)
            {
                this.Expanded = nodeElement.Data.Expanded;
                RadTreeViewElement treeViewElement = nodeElement.TreeViewElement;

                if (treeViewElement.FullLazyMode)
                {
                    this.Visibility = ElementVisibility.Visible;
                }
                else
                {
                    if (!treeViewElement.ShowExpandCollapse || nodeElement.Data.Nodes.Count == 0 ||
                        (nodeElement.Data.Parent == null && !treeViewElement.ShowRootLines))
                    {
                        this.Visibility = ElementVisibility.Collapsed;
                    }
                    else
                    {
                        this.Visibility = ElementVisibility.Visible;
                    }
                }

                this.LinkLineColor   = treeViewElement.LineColor;
                this.LinkOrientation = ExpanderItem.LinkLineOrientation.None;
                this.LinkLineStyle   = (DashStyle)treeViewElement.LineStyle;

                if (treeViewElement.ShowLines)
                {
                    if (nodeElement.Data.PrevNode != null || nodeElement.Data.Parent != null)
                    {
                        this.LinkOrientation |= ExpanderItem.LinkLineOrientation.Top | LinkLineOrientation.Horizontal;
                    }
                    if (nodeElement.Data.NextNode != null)
                    {
                        this.LinkOrientation |= LinkLineOrientation.Bottom | LinkLineOrientation.Horizontal;
                    }
                }

                if (this.TreeViewElement.AllowPlusMinusAnimation)
                {
                    this.Opacity = this.TreeViewElement.ContainsMouse ? 1 : 0;
                }
                else
                {
                    this.Opacity = 1;
                }

                UpdateSignImage();
            }
        }
        private int GetDropHintWidth(RadTreeViewElement treeView)
        {
            int width = treeView.ControlBoundingRectangle.Width - treeView.GetBorderThickness(true).Horizontal;

            if (treeView.VScrollBar.Visibility == ElementVisibility.Visible)
            {
                width -= treeView.VScrollBar.Size.Width;
            }

            return(width);
        }
示例#12
0
 protected override void ClearItems()
 {
   RadTreeViewElement treeViewElement = this.owner.TreeViewElement;
   if (treeViewElement != null)
   {
     if (!treeViewElement.PreProcess(this.owner, (RadTreeNode) null, (object) "Clear"))
       return;
   }
   foreach (RadTreeNode radTreeNode in (IEnumerable<RadTreeNode>) this.Items)
     radTreeNode.Parent = (RadTreeNode) null;
   base.ClearItems();
 }
        protected virtual bool CanDragOver(DropPosition dropPosition, TreeNodeElement targetNodeElement)
        {
            RadTreeViewElement targetTreeView = targetNodeElement.TreeViewElement;

            if (!targetNodeElement.Enabled || !targetTreeView.ElementTree.Control.AllowDrop || !this.IsInValidState(targetTreeView))
            {
                return(false);
            }

            RadTreeNode        targetNode = targetNodeElement.Data;
            List <RadTreeNode> nodes      = new List <RadTreeNode>(draggedNode.TreeViewElement.SelectedNodes);

            // If the count is empty, we are in single selection mode
            if (nodes.Count == 0)
            {
                nodes.Add(draggedNode);
            }

            foreach (RadTreeNode selected in nodes)
            {
                if (selected == targetNode)
                {
                    return(false);
                }

                RadTreeNode parent = targetNode.Parent;

                while (parent != null)
                {
                    if (parent == selected)
                    {
                        return(false);
                    }

                    parent = parent.Parent;
                }

                if (dropPosition == DropPosition.AsChildNode && selected.Parent == targetNode)
                {
                    return(false);
                }
            }

            if (dropPosition == DropPosition.AsChildNode)
            {
                targetTreeView.AutoExpand(targetNode);
            }

            targetTreeView.AutoScroll(targetNodeElement);
            return(true);
        }
        private void DeleteNode()
        {
            if (this.treeView.IsEditing || !this.treeView.AllowRemove)
            {
                return;
            }
            RadTreeNode selectedNode = this.treeView.SelectedNode;

            if (selectedNode == null)
            {
                return;
            }
            RadTreeViewElement.RemoveAllNodes(this.treeView, selectedNode);
        }
示例#15
0
        public virtual void Synchronize()
        {
            TreeNodeElement nodeElement = this.NodeElement;

            if (nodeElement == null)
            {
                return;
            }
            this.Expanded = nodeElement.Data.Expanded;
            RadTreeViewElement treeViewElement = nodeElement.TreeViewElement;

            if (treeViewElement.FullLazyMode)
            {
                TreeViewShowExpanderEventArgs e = new TreeViewShowExpanderEventArgs(nodeElement.Data, true);
                this.TreeViewElement.OnShowExpander(e);
                this.Visibility = e.ShowExpander ? ElementVisibility.Visible : ElementVisibility.Collapsed;
            }
            else if (!treeViewElement.ShowExpandCollapse || !nodeElement.Data.HasNodes || nodeElement.Data.Parent == null && !treeViewElement.ShowRootLines)
            {
                this.Visibility = ElementVisibility.Collapsed;
            }
            else
            {
                this.Visibility = ElementVisibility.Visible;
            }
            this.LinkLineColor   = treeViewElement.LineColor;
            this.LinkOrientation = ExpanderItem.LinkLineOrientation.None;
            this.LinkLineStyle   = (DashStyle)treeViewElement.LineStyle;
            if (treeViewElement.ShowLines)
            {
                if (nodeElement.Data.PrevNode != null || nodeElement.Data.Parent != null)
                {
                    this.LinkOrientation |= ExpanderItem.LinkLineOrientation.Top | ExpanderItem.LinkLineOrientation.Horizontal;
                }
                if (nodeElement.Data.NextNode != null)
                {
                    this.LinkOrientation |= ExpanderItem.LinkLineOrientation.Bottom | ExpanderItem.LinkLineOrientation.Horizontal;
                }
            }
            if (this.TreeViewElement.AllowPlusMinusAnimation)
            {
                this.Opacity = this.TreeViewElement.ContainsMouse ? 1.0 : 0.0;
            }
            else
            {
                this.Opacity = 1.0;
            }
            this.UpdateSignImage();
        }
示例#16
0
        protected override SizeF MeasureOverride(SizeF availableSize)
        {
            RadTreeViewElement treeViewElement = this.TreeViewElement;

            SizeF desiredSize = base.MeasureOverride(availableSize);

            int oldHeight = this.Data.ActualSize.Height;
            int newHeight = this.ItemHeight;

            if (treeViewElement != null && ((this.Editor != null && newHeight < desiredSize.Height) || treeViewElement.AutoSizeItems))
            {
                newHeight = (int)desiredSize.Height;
                this.states[TreeNodeElement.UpdateScrollRangeIfNeeded] = true;
            }
            else
            {
                desiredSize.Height = newHeight;
            }

            if (treeViewElement != null && oldHeight != newHeight &&
                (this.states[TreeNodeElement.UpdateScrollRangeIfNeeded] ||
                 treeViewElement.AllowArbitraryItemHeight || treeViewElement.AutoSizeItems))
            {
                ItemScroller <RadTreeNode> scroller = treeViewElement.Scroller;
                this.Data.ActualSize = new Size(this.Data.ActualSize.Width, newHeight);
                scroller.UpdateScrollRange(scroller.Scrollbar.Maximum + (newHeight - oldHeight), false);
            }

            if (this.Editor == null)
            {
                this.states[TreeNodeElement.UpdateScrollRangeIfNeeded] = false;
            }

            if (!float.IsInfinity(availableSize.Width))
            {
                Size size = desiredSize.ToSize();
                this.Data.ActualSize = new Size(this.Data.ActualSize.Width, size.Height);
                desiredSize.Width    = availableSize.Width;
            }
            else if (!ContentElement.TextWrap && this.Editor == null)
            {
                this.Data.ActualSize = desiredSize.ToSize();
            }

            return(desiredSize);
        }
        protected virtual bool CanDragOver(DropPosition dropPosition, TreeNodeElement targetNodeElement)
        {
            RadTreeViewElement treeViewElement = targetNodeElement.TreeViewElement;

            if (!targetNodeElement.Enabled || !treeViewElement.ElementTree.Control.AllowDrop || !this.IsInValidState(treeViewElement) || !targetNodeElement.Data.AllowDrop && dropPosition == DropPosition.AsChildNode)
            {
                return(false);
            }
            RadTreeNode        data            = targetNodeElement.Data;
            List <RadTreeNode> radTreeNodeList = new List <RadTreeNode>((IEnumerable <RadTreeNode>) this.draggedNode.TreeViewElement.SelectedNodes);

            if (radTreeNodeList.Count == 0)
            {
                radTreeNodeList.Add(this.draggedNode);
            }
            foreach (RadTreeNode radTreeNode in radTreeNodeList)
            {
                if (radTreeNode == data)
                {
                    return(false);
                }
                for (RadTreeNode parent = data.Parent; parent != null; parent = parent.Parent)
                {
                    if (parent == radTreeNode)
                    {
                        return(false);
                    }
                }
                if (dropPosition == DropPosition.AsChildNode && radTreeNode.Parent == data)
                {
                    return(false);
                }
            }
            if (dropPosition == DropPosition.AsChildNode && !data.Expanded && data.HasNodes)
            {
                treeViewElement.AutoExpand(data);
                this.HintWindow.Hide();
                this.HintWindow.Show();
            }
            if (treeViewElement.AutoScrollOnDragging(targetNodeElement))
            {
                this.HintWindow.Hide();
                this.HintWindow.Show();
            }
            return(true);
        }
示例#18
0
        protected virtual void UpdateSignImage()
        {
            RadTreeViewElement treeViewElement = this.TreeViewElement;

            if (treeViewElement == null)
            {
                return;
            }
            bool flag = (bool)this.GetValue(TreeNodeElement.HotTrackingProperty);

            if (this.Expanded && (flag && this.SetSignImage((RadElement)treeViewElement, RadTreeViewElement.HoveredExpandImageProperty) || this.SetSignImage((RadElement)treeViewElement, RadTreeViewElement.ExpandImageProperty)) || (flag && this.SetSignImage((RadElement)treeViewElement, RadTreeViewElement.HoveredCollapseImageProperty) || (this.SetSignImage((RadElement)treeViewElement, RadTreeViewElement.CollapseImageProperty) || !this.signImageSet)))
            {
                return;
            }
            this.signImageSet = false;
            int num1 = (int)this.ResetValue(ExpanderItem.SignImageProperty, ValueResetFlags.Local);
            int num2 = (int)this.ResetValue(ExpanderItem.DrawSignBorderProperty, ValueResetFlags.Local);
            int num3 = (int)this.ResetValue(ExpanderItem.DrawSignFillProperty, ValueResetFlags.Local);
        }
示例#19
0
        protected virtual void UpdateSignImage()
        {
            RadTreeViewElement treeViewElement = TreeViewElement;

            if (treeViewElement == null)
            {
                return;
            }

            bool hotTracking = (bool)GetValue(TreeNodeElement.HotTrackingProperty);

            if (Expanded)
            {
                if (hotTracking && SetSignImage(treeViewElement, RadTreeViewElement.HoveredExpandImageProperty))
                {
                    return;
                }

                if (SetSignImage(treeViewElement, RadTreeViewElement.ExpandImageProperty))
                {
                    return;
                }
            }

            if (hotTracking && SetSignImage(treeViewElement, RadTreeViewElement.HoveredCollapseImageProperty))
            {
                return;
            }

            if (SetSignImage(treeViewElement, RadTreeViewElement.CollapseImageProperty))
            {
                return;
            }

            if (signImageSet)
            {
                signImageSet = false;
                ResetValue(SignImageProperty, ValueResetFlags.Local);
                ResetValue(DrawSignBorderProperty, ValueResetFlags.Local);
                ResetValue(DrawSignFillProperty, ValueResetFlags.Local);
            }
        }
示例#20
0
        protected override void OnKeyDown(KeyEventArgs e)
        {
            TreeNodeElement ownerElement = this.OwnerElement as TreeNodeElement;

            if (ownerElement == null || ownerElement.TreeViewElement == null)
            {
                return;
            }
            switch (e.KeyCode)
            {
            case Keys.Return:
                ownerElement.TreeViewElement.EndEdit();
                break;

            case Keys.Escape:
                ownerElement.TreeViewElement.CancelEdit();
                break;

            case Keys.Up:
                if (this.Multiline && (this.selectionLength != 0 || !this.isAtFirstLine))
                {
                    break;
                }
                RadTreeViewElement treeViewElement1 = ownerElement.TreeViewElement;
                ownerElement.TreeViewElement.EndEdit();
                treeViewElement1.Update(RadTreeViewElement.UpdateActions.Reset);
                treeViewElement1.ProcessKeyDown(e);
                break;

            case Keys.Down:
                if (this.Multiline && (this.selectionLength != 0 || !this.isAtLastLine))
                {
                    break;
                }
                RadTreeViewElement treeViewElement2 = ownerElement.TreeViewElement;
                ownerElement.TreeViewElement.EndEdit();
                treeViewElement2.Update(RadTreeViewElement.UpdateActions.Reset);
                treeViewElement2.ProcessKeyDown(e);
                break;
            }
        }
        protected override void OnPreviewDragOver(RadDragOverEventArgs e)
        {
            TreeNodeElement    hitTarget1 = e.HitTarget as TreeNodeElement;
            RadTreeViewElement hitTarget2 = e.HitTarget as RadTreeViewElement;

            if (hitTarget2 != null)
            {
                e.CanDrop = hitTarget2.ElementTree.Control.AllowDrop && hitTarget2.Nodes.Count == 0 && this.IsInValidState(hitTarget2);
            }
            else if (hitTarget1 != null)
            {
                DropPosition dropPosition = this.GetDropPosition(this.DropLocation, hitTarget1);
                e.CanDrop = this.CanDragOver(dropPosition, hitTarget1);
                RadTreeViewDragCancelEventArgs e1 = new RadTreeViewDragCancelEventArgs(this.draggedNode, hitTarget1.Data);
                e1.Cancel       = !e.CanDrop;
                e1.DropPosition = dropPosition;
                this.owner.OnDragOverNode(e1);
                e.CanDrop = !e1.Cancel;
            }
            base.OnPreviewDragOver(e);
        }
        public TreeViewDefaultContextMenu(RadTreeViewElement treeView)
        {
            this.treeView = treeView;

            this.editMenuItem = new TreeViewMenuItem("Edit", "&Edit");
            this.Items.Add(editMenuItem);

            this.expandCollapseMenuItem = new TreeViewMenuItem("Expand", TreeViewLocalizationProvider.CurrentProvider.GetLocalizedString(TreeViewStringId.ContextMenuExpand));
            this.Items.Add(expandCollapseMenuItem);

            this.addMenuItem = new TreeViewMenuItem("Add", "&Add");
            this.Items.Add(addMenuItem);

            this.deleteMenuItem = new TreeViewMenuItem("Delete", "&Delete");
            this.Items.Add(deleteMenuItem);

            for (int i = 0; i < this.Items.Count; i++)
            {
                this.Items[i].Click += menuItem_Click;
            }
        }
示例#23
0
 protected override void RemoveItem(int index)
 {
   RadTreeNode radTreeNode1 = (RadTreeNode) null;
   RadTreeNode radTreeNode2 = this.Items[index];
   RadTreeViewElement radTreeViewElement = this.TreeView != null ? this.TreeView.TreeViewElement : (RadTreeViewElement) null;
   bool flag = false;
   if (radTreeNode2.Current && radTreeViewElement != null)
   {
     radTreeNode1 = radTreeNode2.PrevVisibleNode;
     if (radTreeNode1 == null)
     {
       for (RadTreeNode radTreeNode3 = radTreeNode2; radTreeNode3 != null && radTreeNode1 == null; radTreeNode3 = radTreeNode3.Parent)
         radTreeNode1 = radTreeNode3.NextNode;
     }
     flag = true;
   }
   if (this.owner.treeView != null && radTreeViewElement != null)
   {
     if (!this.owner.treeView.PreProcess(this.owner, radTreeNode2, (object) "Remove", (object) index))
       return;
   }
   if (flag)
   {
     radTreeViewElement.SelectedNode = radTreeNode1;
     if (radTreeViewElement.SelectedNode != radTreeNode1)
     {
       if (radTreeNode1.Enabled)
         return;
       base.RemoveItem(index);
       return;
     }
   }
   RadTreeNode parent = radTreeNode2.Parent;
   radTreeNode2.Parent = (RadTreeNode) null;
   radTreeNode2.TreeViewElement = (RadTreeViewElement) null;
   base.RemoveItem(index);
   if (parent == null || parent.nodes.Count != 0 || this.owner.TreeViewElement == null)
     return;
   this.owner.TreeViewElement.Update(RadTreeViewElement.UpdateActions.NodeStateChanged, parent);
 }
示例#24
0
        private void radTreeView1_NodeMouseDoubleClick(object sender, RadTreeViewEventArgs e)
        {
            flowLayoutPanelOp.Controls.Clear();
            RadTreeViewElement  element  = (RadTreeViewElement)sender;
            SecurityResourceDto resource = (SecurityResourceDto)element.SelectedNode.Value;

            if (resource != null)
            {
                if (resource.ResourceTypeId == 1)// is submenu
                {
                    return;
                }
                var access = presenter.CheckAccess(resource, TokenContainer.CurrentToken);
                if (rdUInfo.Checked)
                {
                    var         userInfo    = UserInfoGenerator.GenerateUserInfo(access, TokenContainer.CurrentToken);
                    FrmUserInfo frmUserInfo = new FrmUserInfo(userInfo);
                    frmUserInfo.Show();
                }
                else
                {
                    FrmAccessToken frmAtoken = new FrmAccessToken(access);
                    frmAtoken.Show();
                }
                if (access != null)
                {
                    foreach (var item in access.Operations)
                    {
                        Button opbtn = new Button()
                        {
                            Name = item.OperationId.ToString(),
                            Text = item.OperationName,
                            Tag  = item,
                        };
                        flowLayoutPanelOp.Controls.Add(opbtn);
                    }
                }
            }
        }
 public TreeViewDefaultContextMenu(RadTreeViewElement treeView)
 {
     this.treeView     = treeView;
     this.editMenuItem = new TreeViewMenuItem("Edit", "&Edit");
     this.Items.Add((RadItem)this.editMenuItem);
     this.expandCollapseMenuItem = new TreeViewMenuItem("Expand", LocalizationProvider <TreeViewLocalizationProvider> .CurrentProvider.GetLocalizedString("ContextMenuExpand"));
     this.Items.Add((RadItem)this.expandCollapseMenuItem);
     this.addMenuItem = new TreeViewMenuItem("Add", "&Add");
     this.Items.Add((RadItem)this.addMenuItem);
     this.deleteMenuItem = new TreeViewMenuItem("Delete", "&Delete");
     this.Items.Add((RadItem)this.deleteMenuItem);
     this.cutMentuItem = new TreeViewMenuItem("Cut", "Cu&t");
     this.Items.Add((RadItem)this.cutMentuItem);
     this.copyMenuItem = new TreeViewMenuItem("Copy", "&Copy");
     this.Items.Add((RadItem)this.copyMenuItem);
     this.pasteMenuItem = new TreeViewMenuItem("Paste", "&Paste");
     this.Items.Add((RadItem)this.pasteMenuItem);
     for (int index = 0; index < this.Items.Count; ++index)
     {
         this.Items[index].Click += new EventHandler(this.menuItem_Click);
     }
 }
示例#26
0
 protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs args)
 {
   base.OnCollectionChanged(args);
   if (this.Suspended || this.owner == null)
     return;
   RadTreeViewElement treeViewElement = this.owner.TreeViewElement;
   if (treeViewElement == null)
     return;
   if (!treeViewElement.IsSuspended)
   {
     this.owner.InvalidateOnState();
     this.owner.UpdateParentCheckState();
   }
   if (args.Action == NotifyCollectionChangedAction.Add)
   {
     RadTreeNode newItem = (RadTreeNode) args.NewItems[0];
     treeViewElement.Update(RadTreeViewElement.UpdateActions.ItemAdded, newItem);
     treeViewElement.OnNodeAdded(new RadTreeViewEventArgs(newItem));
   }
   else if (args.Action == NotifyCollectionChangedAction.Remove)
   {
     RadTreeNode newItem = (RadTreeNode) args.NewItems[0];
     treeViewElement.Update(RadTreeViewElement.UpdateActions.ItemRemoved, newItem);
     treeViewElement.OnNodeRemoved(new RadTreeViewEventArgs(newItem));
   }
   else if (args.Action == NotifyCollectionChangedAction.Move)
   {
     RadTreeNode newItem = (RadTreeNode) args.NewItems[0];
     treeViewElement.Update(RadTreeViewElement.UpdateActions.ItemMoved, newItem);
   }
   else
   {
     if (args.Action != NotifyCollectionChangedAction.Reset)
       return;
     RadTreeViewElement.UpdateActions updateAction = this.owner is RadTreeViewElement.RootTreeNode ? RadTreeViewElement.UpdateActions.Reset : RadTreeViewElement.UpdateActions.Resume;
     treeViewElement.Update(updateAction);
   }
 }
示例#27
0
        protected override SizeF MeasureOverride(SizeF availableSize)
        {
            RadTreeViewElement treeViewElement = this.TreeViewElement;
            SizeF sizeF   = base.MeasureOverride(availableSize);
            int   height1 = this.Data.ActualSize.Height;
            int   height2 = this.ItemHeight;

            if (treeViewElement != null && (this.Editor != null && (double)height2 < (double)sizeF.Height || treeViewElement.AutoSizeItems))
            {
                height2         = (int)sizeF.Height;
                this.states[4L] = true;
            }
            else
            {
                sizeF.Height = (float)height2;
            }
            if (treeViewElement != null && height1 != height2 && (this.states[4L] || treeViewElement.AllowArbitraryItemHeight || treeViewElement.AutoSizeItems))
            {
                ItemScroller <RadTreeNode> scroller = treeViewElement.Scroller;
                this.Data.ActualSize = new Size(this.Data.ActualSize.Width, height2);
                scroller.UpdateScrollRange(scroller.Scrollbar.Maximum + (height2 - height1), false);
            }
            if (this.Editor == null)
            {
                this.states[4L] = false;
            }
            if (!float.IsInfinity(availableSize.Width))
            {
                this.Data.ActualSize = new Size(this.Data.ActualSize.Width, sizeF.ToSize().Height);
                sizeF.Width          = availableSize.Width;
            }
            else if (!this.ContentElement.TextWrap && this.Editor == null)
            {
                this.Data.ActualSize = sizeF.ToSize();
            }
            return(sizeF);
        }
        protected override void OnPreviewDragOver(RadDragOverEventArgs e)
        {
            base.OnPreviewDragOver(e);

            TreeNodeElement    targetNodeElement = e.HitTarget as TreeNodeElement;
            RadTreeViewElement treeView          = e.HitTarget as RadTreeViewElement;

            if (treeView != null)
            {
                e.CanDrop = treeView.ElementTree.Control.AllowDrop && treeView.Nodes.Count == 0 && this.IsInValidState(treeView);
            }
            else if (targetNodeElement != null)
            {
                DropPosition dropPosition = this.GetDropPosition(this.DropLocation, targetNodeElement);
                e.CanDrop = this.CanDragOver(dropPosition, targetNodeElement);

                RadTreeViewDragCancelEventArgs args = new RadTreeViewDragCancelEventArgs(draggedNode, targetNodeElement.Data);
                args.Cancel       = !e.CanDrop;
                args.DropPosition = dropPosition;

                this.owner.OnDragOverNode(args);
                e.CanDrop = !args.Cancel;
            }
        }
        protected virtual void PrepareDragHint(TreeNodeElement nodeElement)
        {
            RadTreeViewElement treeView = nodeElement.TreeViewElement;
            Bitmap             image    = null;
            Size hintSize = Size.Empty;

            if (this.dropHintColor != Color.Empty)
            {
                hintSize = new Size(this.GetDropHintWidth(treeView), 1);
                image    = new Bitmap(hintSize.Width, hintSize.Height);

                using (Graphics temp = Graphics.FromImage(image))
                {
                    using (SolidBrush solidBrush = new SolidBrush(this.DropHintColor))
                    {
                        temp.FillRectangle(solidBrush, new Rectangle(Point.Empty, hintSize));
                    }
                }
            }
            else if (treeView.ItemDropHint != null)
            {
                hintSize = new Size(this.GetDropHintWidth(treeView), treeView.ItemDropHint.Image.Size.Height);
                image    = new Bitmap(hintSize.Width, hintSize.Height);

                using (Graphics temp = Graphics.FromImage(image))
                {
                    treeView.ItemDropHint.Paint(temp, new RectangleF(PointF.Empty, hintSize));
                }
            }

            if (image != null)
            {
                this.dropHintWindow = new RadLayeredWindow();
                this.dropHintWindow.BackgroundImage = image;
            }
        }
 public SelectedTreeNodeCollection(RadTreeViewElement treeView)
     : base(new List <RadTreeNode>())
 {
     this.treeView = treeView;
 }