コード例 #1
0
 protected virtual string GetItemText(LayoutControlItemBase item)
 {
     if (!string.IsNullOrEmpty(item.Text))
     {
         return(item.Text);
     }
     if (item is LayoutControlItem)
     {
         return(this.GetString("CustomizeDialogLayoutItem"));
     }
     if (item is LayoutControlSplitterItem)
     {
         return(this.GetString("CustomizeDialogSplitterItem"));
     }
     if (item is LayoutControlSeparatorItem)
     {
         return(this.GetString("CustomizeDialogSeparatorItem"));
     }
     if (item is LayoutControlLabelItem)
     {
         return(this.GetString("CustomizeDialogLabelItem"));
     }
     if (item is LayoutControlGroupItem)
     {
         return(this.GetString("CustomizeDialogGroupItem"));
     }
     if (item is LayoutControlTabbedGroup)
     {
         return(this.GetString("CustomizeDialogTabbedGroup"));
     }
     return(this.GetString("CustomizeDialogLayoutItem"));
 }
コード例 #2
0
 public void SelectLayoutItem(LayoutControlItemBase item)
 {
     foreach (DraggableLayoutControlItem layoutControlItem in this.GetItems())
     {
         layoutControlItem.IsSelected = item == layoutControlItem.AssociatedItem;
     }
 }
コード例 #3
0
 public CardViewItemFormattingEventArgs(
     LayoutControlItemBase item,
     CardListViewVisualItem visualItem)
 {
     this.item       = item;
     this.visualItem = visualItem;
 }
コード例 #4
0
 protected virtual Image GetItemImage(LayoutControlItemBase item)
 {
     if (item is LayoutControlItem)
     {
         return(LayoutControlIcons.ControlItem);
     }
     if (item is LayoutControlSplitterItem)
     {
         return(LayoutControlIcons.SplitterItem);
     }
     if (item is LayoutControlSeparatorItem)
     {
         return(LayoutControlIcons.SeparatorItem);
     }
     if (item is LayoutControlLabelItem)
     {
         return(LayoutControlIcons.LabelItem);
     }
     if (item is LayoutControlGroupItem)
     {
         return(LayoutControlIcons.GroupItem);
     }
     if (item is LayoutControlTabbedGroup)
     {
         return(LayoutControlIcons.TabbedGroup);
     }
     return((Image)null);
 }
コード例 #5
0
 protected virtual void HandleItemDrop(
     BaseListViewVisualItem draggedItem,
     DraggableLayoutControlItem target)
 {
     if (draggedItem.Data.Group == this.hiddenItemsGroup)
     {
         LayoutControlItemBase tag = draggedItem.Data.Tag as LayoutControlItemBase;
         if (tag == null)
         {
             return;
         }
         this.layoutControl.HiddenItems.Remove((RadItem)tag);
         this.layoutControl.Items.Add((RadItem)tag);
         target.AssociatedItem.FindAncestor <LayoutControlContainerElement>().LayoutTree.HandleDrop(target, tag, this.layoutControl.PointToClient(Control.MousePosition));
     }
     else
     {
         LayoutControlItemBase newItem = this.CreateNewItem(draggedItem);
         if (newItem == null)
         {
             return;
         }
         target.AssociatedItem.FindAncestor <LayoutControlContainerElement>().LayoutTree.HandleDrop(target, newItem, this.layoutControl.PointToClient(Control.MousePosition));
     }
 }
コード例 #6
0
 private void InitializeChildNodes(LayoutControlItemBase item, RadTreeNode node)
 {
     if (item is LayoutControlGroupItem)
     {
         foreach (LayoutControlItemBase layoutControlItemBase in (item as LayoutControlGroupItem).Items)
         {
             RadTreeNode node1 = new RadTreeNode(this.GetItemText(layoutControlItemBase))
             {
                 Tag = (object)layoutControlItemBase, Value = (object)layoutControlItemBase.Text, Image = this.GetItemImage(layoutControlItemBase)
             };
             node.Nodes.Add(node1);
             this.InitializeChildNodes(layoutControlItemBase, node1);
         }
     }
     else
     {
         if (!(item is LayoutControlTabbedGroup))
         {
             return;
         }
         foreach (LayoutControlItemBase itemGroup in (RadItemCollection)(item as LayoutControlTabbedGroup).ItemGroups)
         {
             RadTreeNode node1 = new RadTreeNode(this.GetItemText(itemGroup))
             {
                 Tag = (object)itemGroup, Value = (object)itemGroup.Text, Image = this.GetItemImage(itemGroup)
             };
             node.Nodes.Add(node1);
             this.InitializeChildNodes(itemGroup, node1);
         }
     }
 }
コード例 #7
0
 public void HandleDrop(
     DraggableLayoutControlItem dropTargetElement,
     LayoutControlItemBase draggedElement,
     Point mousePosition)
 {
     this.LayoutTree.HandleDrop(dropTargetElement, draggedElement, mousePosition);
 }
コード例 #8
0
 public CardViewItemCreatingEventArgs(
     LayoutControlItemBase sourceItem,
     LayoutControlItemBase newItem,
     CardListViewVisualItem visualItem)
 {
     this.sourceItem = sourceItem;
     this.newItem    = newItem;
     this.visualItem = visualItem;
 }
コード例 #9
0
        public void StartDrag(LayoutControlItemBase item)
        {
            DraggableLayoutControlItem draggableItem = this.FindDraggableItem(item);

            if (draggableItem == null)
            {
                return;
            }
            this.dragDropService.Start((object)draggableItem);
        }
コード例 #10
0
 public LayoutTreeNode FindNodeByItem(LayoutControlItemBase item)
 {
     foreach (LayoutTreeNode enumChildNode in this.EnumChildNodes(this.root))
     {
         if (enumChildNode.Item == item)
         {
             return(enumChildNode);
         }
     }
     return((LayoutTreeNode)null);
 }
コード例 #11
0
        private string GetCardItemFieldName(
            LayoutControlItemBase item,
            IDictionary <string, string> boundItems)
        {
            string empty = string.Empty;
            int    num   = item.Name.LastIndexOf(item.GetType().Name);
            string key   = item.Name.Substring(0, num >= 0 ? num : 0);

            boundItems.TryGetValue(key, out empty);
            return(empty);
        }
コード例 #12
0
        protected virtual void OnStructureTreeNodeEdited(object sender, TreeNodeEditedEventArgs e)
        {
            LayoutControlItemBase tag = e.Node.Tag as LayoutControlItemBase;

            if (tag != null)
            {
                tag.Text    = Convert.ToString(e.Node.Value);
                e.Node.Text = this.GetItemText(tag);
            }
            this.layoutControl.DragOverlay.UpdatePreview();
        }
コード例 #13
0
 public DraggableLayoutControlItem FindDraggableItem(
     LayoutControlItemBase item)
 {
     foreach (DraggableLayoutControlItem layoutControlItem in this.GetItems())
     {
         if (item == layoutControlItem.AssociatedItem)
         {
             return(layoutControlItem);
         }
     }
     return((DraggableLayoutControlItem)null);
 }
コード例 #14
0
 protected bool CheckIsHidden()
 {
     if (this.Visibility != ElementVisibility.Visible)
     {
         return(true);
     }
     for (RadElement parent = this.Parent; parent != null; parent = parent.Parent)
     {
         LayoutControlItemBase layoutControlItemBase = parent as LayoutControlItemBase;
         if (parent.Visibility != ElementVisibility.Visible || layoutControlItemBase != null && layoutControlItemBase.IsHidden)
         {
             return(true);
         }
     }
     return(false);
 }
コード例 #15
0
        protected virtual void OnStructureTreeViewSelectedNodeChanged(
            object sender,
            RadTreeViewEventArgs e)
        {
            if (e.Node == null || !e.Node.Selected)
            {
                return;
            }
            LayoutControlItemBase tag = e.Node.Tag as LayoutControlItemBase;

            if (tag == null)
            {
                return;
            }
            this.layoutControl.DragOverlay.SelectLayoutItem(tag);
        }
コード例 #16
0
        public override TypeConverter.StandardValuesCollection GetStandardValues(
            ITypeDescriptorContext context)
        {
            List <string>         stringList            = new List <string>();
            LayoutControlItemBase layoutControlItemBase = context.Instance is ICardViewBoundItem ? context.Instance as LayoutControlItemBase : (LayoutControlItemBase)null;

            if (layoutControlItemBase != null && layoutControlItemBase.ElementTree != null && (layoutControlItemBase.ElementTree.Control != null && layoutControlItemBase.ElementTree.Control.Parent != null) && layoutControlItemBase.ElementTree.Control.Parent is RadCardView)
            {
                CardListViewElement viewElement = (layoutControlItemBase.ElementTree.Control.Parent as RadCardView).CardViewElement.ViewElement as CardListViewElement;
                if (viewElement != null)
                {
                    stringList.Add(string.Empty);
                    foreach (KeyValuePair <string, Type> fieldName in viewElement.GetFieldNames())
                    {
                        stringList.Add(fieldName.Key);
                    }
                }
            }
            return(new TypeConverter.StandardValuesCollection((ICollection)stringList));
        }
コード例 #17
0
        protected virtual LayoutControlItemBase CreateNewItem(
            BaseListViewVisualItem draggedItem)
        {
            LayoutControlItemBase layoutControlItemBase = (LayoutControlItemBase)null;

            if (draggedItem.Data == this.groupItem)
            {
                LayoutControlGroupItem controlGroupItem = new LayoutControlGroupItem();
                controlGroupItem.Text = this.GetString("NewGroupDefaultText");
                layoutControlItemBase = (LayoutControlItemBase)controlGroupItem;
            }
            else if (draggedItem.Data == this.separatorItem)
            {
                layoutControlItemBase = (LayoutControlItemBase) new LayoutControlSeparatorItem();
            }
            else if (draggedItem.Data == this.splitterItem)
            {
                layoutControlItemBase = (LayoutControlItemBase) new LayoutControlSplitterItem();
            }
            else if (draggedItem.Data == this.labelItem)
            {
                LayoutControlLabelItem controlLabelItem = new LayoutControlLabelItem();
                controlLabelItem.Text = this.GetString("NewLabelDefaultText");
                layoutControlItemBase = (LayoutControlItemBase)controlLabelItem;
            }
            else if (draggedItem.Data == this.emptySpaceItem)
            {
                LayoutControlLabelItem controlLabelItem = new LayoutControlLabelItem();
                controlLabelItem.DrawText = false;
                layoutControlItemBase     = (LayoutControlItemBase)controlLabelItem;
            }
            else if (draggedItem.Data == this.tabbedGroupItem)
            {
                layoutControlItemBase = (LayoutControlItemBase) new LayoutControlTabbedGroup();
            }
            if (layoutControlItemBase != null)
            {
                layoutControlItemBase.AllowDelete = true;
            }
            return(layoutControlItemBase);
        }
コード例 #18
0
        protected virtual void OnStructureTreeViewNodeRemoving(
            object sender,
            RadTreeViewCancelEventArgs e)
        {
            LayoutControlItemBase tag = e.Node.Tag as LayoutControlItemBase;

            if (tag != null && tag.AllowDelete)
            {
                this.layoutControl.RemoveItem(tag);
                tag.Dispose();
                if (this.layoutControl.DragOverlay == null)
                {
                    return;
                }
                this.layoutControl.DragOverlay.UpdatePreview(true);
            }
            else
            {
                e.Cancel = true;
            }
        }
コード例 #19
0
        private LayoutControlItemBase FindCardViewItemByName(
            string name,
            RadItemCollection layoutContainerItems)
        {
            LayoutControlItemBase layoutControlItemBase = (LayoutControlItemBase)null;

            foreach (LayoutControlItemBase layoutContainerItem in layoutContainerItems)
            {
                if (layoutContainerItem.Name == name + layoutContainerItem.GetType().Name || layoutContainerItem.Name == name)
                {
                    return(layoutContainerItem);
                }
                if (layoutContainerItem is LayoutControlGroupItem)
                {
                    return(this.FindCardViewItemByName(name, (layoutContainerItem as LayoutControlGroupItem).Items));
                }
                if (layoutContainerItem is LayoutControlTabbedGroup)
                {
                    return(this.FindCardViewItemByName(name, (RadItemCollection)(layoutContainerItem as LayoutControlTabbedGroup).ItemGroups));
                }
            }
            return(layoutControlItemBase);
        }
コード例 #20
0
        protected virtual void HandleDropOnEmptyContainer(
            DraggableLayoutControlOverlayElement overlayElement,
            BaseListViewVisualItem draggedItem)
        {
            LayoutControlDraggableOverlay control = overlayElement.ElementTree.Control as LayoutControlDraggableOverlay;
            LayoutControlItemBase         layoutControlItemBase;

            if (draggedItem.Data.Group == this.hiddenItemsGroup)
            {
                LayoutControlItemBase tag = draggedItem.Data.Tag as LayoutControlItemBase;
                if (tag == null)
                {
                    return;
                }
                this.layoutControl.HiddenItems.Remove((RadItem)tag);
                layoutControlItemBase = tag;
            }
            else
            {
                layoutControlItemBase = this.CreateNewItem(draggedItem);
            }
            control.Owner.Items.Add((RadItem)layoutControlItemBase);
            control.Owner.ContainerElement.RebuildLayoutTree();
        }
コード例 #21
0
        internal void HandleDrop(
            DraggableLayoutControlItem dropTargetElement,
            LayoutControlItemBase draggedElement,
            Point mousePosition)
        {
            Point mousePosition1 = mousePosition;

            mousePosition.Offset(-this.owner.ControlBoundingRectangle.X, -this.owner.ControlBoundingRectangle.Y);
            if (draggedElement is DraggableLayoutControlItem)
            {
                draggedElement = ((DraggableLayoutControlItem)draggedElement).AssociatedItem;
            }
            LayoutTreeNode draggedNode = this.FindNodeByItem(draggedElement);

            if (draggedNode != null)
            {
                if (!this.RemoveNode(draggedNode, false))
                {
                    return;
                }
            }
            else
            {
                draggedNode      = new LayoutTreeNode();
                draggedNode.Item = draggedElement;
            }
            LayoutControlDropTargetInfo dropTargetNode = this.GetDropTargetNode(dropTargetElement, mousePosition1, draggedElement.GetType());

            if (dropTargetNode.TargetNode == null)
            {
                return;
            }
            LayoutTreeNode            targetNode     = dropTargetNode.TargetNode;
            LayoutControlDropPosition targetPosition = dropTargetNode.TargetPosition;
            RectangleF targetBounds = (RectangleF)dropTargetNode.TargetBounds;
            ILayoutControlItemsHost controlItemsHost = dropTargetElement.AssociatedItem.GetParentItemsContainer();

            if (targetPosition == LayoutControlDropPosition.Center)
            {
                LayoutControlGroupItem   associatedItem1 = dropTargetElement.AssociatedItem as LayoutControlGroupItem;
                LayoutControlTabbedGroup associatedItem2 = dropTargetElement.AssociatedItem as LayoutControlTabbedGroup;
                if (associatedItem1 != null)
                {
                    controlItemsHost = (ILayoutControlItemsHost)associatedItem1.ContainerElement;
                }
                if (associatedItem2 != null)
                {
                    controlItemsHost = (ILayoutControlItemsHost)null;
                }
            }
            ILayoutControlItemsHost parentItemsContainer = draggedElement.GetParentItemsContainer();

            if (controlItemsHost != parentItemsContainer)
            {
                parentItemsContainer?.Items.Remove((RadItem)draggedElement);
                controlItemsHost?.Items.Add((RadItem)draggedElement);
            }
            if (dropTargetElement.AssociatedItem is LayoutControlGroupItem && targetPosition == LayoutControlDropPosition.Center)
            {
                (dropTargetElement.AssociatedItem as LayoutControlGroupItem).ContainerElement.RebuildLayoutTree();
            }
            else
            {
                if (dropTargetElement.AssociatedItem is LayoutControlTabbedGroup && targetPosition == LayoutControlDropPosition.Center)
                {
                    LayoutControlTabbedGroup associatedItem   = (LayoutControlTabbedGroup)dropTargetElement.AssociatedItem;
                    LayoutControlGroupItem   controlGroupItem = draggedElement as LayoutControlGroupItem;
                    if (controlGroupItem != null)
                    {
                        if (dropTargetNode.TargetTabIndex >= 0 && dropTargetNode.TargetTabIndex <= associatedItem.ItemGroups.Count)
                        {
                            associatedItem.ItemGroups.Insert(dropTargetNode.TargetTabIndex, (RadItem)controlGroupItem);
                            return;
                        }
                        associatedItem.ItemGroups.Add((RadItem)controlGroupItem);
                        return;
                    }
                }
                LayoutTreeNode node = new LayoutTreeNode();
                node.Item                  = targetNode.Item;
                node.Parent                = targetNode;
                node.Left                  = targetNode.Left;
                node.Right                 = targetNode.Right;
                node.OriginalBounds        = targetNode.OriginalBounds;
                node.Bounds                = targetNode.Bounds;
                node.SplitType             = targetNode.SplitType;
                node.SplitPosition         = targetNode.SplitPosition;
                node.OriginalSplitPosition = targetNode.OriginalSplitPosition;
                node.MinSize               = targetNode.MinSize;
                node.MaxSize               = targetNode.MaxSize;
                if (targetNode.Left != null)
                {
                    targetNode.Left.Parent = node;
                }
                if (targetNode.Right != null)
                {
                    targetNode.Right.Parent = node;
                }
                draggedNode.Parent   = targetNode;
                draggedNode.Bounds   = targetBounds;
                targetNode.Item      = (LayoutControlItemBase)null;
                targetNode.SplitType = targetPosition == LayoutControlDropPosition.Top || targetPosition == LayoutControlDropPosition.Bottom ? Orientation.Vertical : Orientation.Horizontal;
                targetNode.Left      = targetPosition == LayoutControlDropPosition.Left || targetPosition == LayoutControlDropPosition.Top ? draggedNode : node;
                targetNode.Right     = targetPosition == LayoutControlDropPosition.Left || targetPosition == LayoutControlDropPosition.Top ? node : draggedNode;
                switch (targetPosition)
                {
                case LayoutControlDropPosition.Left:
                    this.ChangeBounds(new RectangleF(targetNode.Bounds.X + targetBounds.Width, targetNode.Bounds.Y, targetNode.Bounds.Width - targetBounds.Width, targetNode.Bounds.Height), node);
                    break;

                case LayoutControlDropPosition.Right:
                    this.ChangeBounds(new RectangleF(targetNode.Bounds.X, targetNode.Bounds.Y, targetNode.Bounds.Width - targetBounds.Width, targetNode.Bounds.Height), node);
                    break;

                case LayoutControlDropPosition.Top:
                    this.ChangeBounds(new RectangleF(targetNode.Bounds.X, targetNode.Bounds.Y + targetBounds.Height, targetNode.Bounds.Width, targetNode.Bounds.Height - targetBounds.Height), node);
                    break;

                case LayoutControlDropPosition.Bottom:
                    this.ChangeBounds(new RectangleF(targetNode.Bounds.X, targetNode.Bounds.Y, targetNode.Bounds.Width, targetNode.Bounds.Height - targetBounds.Height), node);
                    break;
                }
                targetNode.SplitPosition  = targetNode.OriginalSplitPosition = targetNode.SplitType == Orientation.Vertical ? targetNode.Right.Bounds.Top : targetNode.Right.Bounds.Left;
                targetNode.OriginalBounds = targetNode.Bounds;
                this.ChangeBounds(this.root.Bounds);
                this.UpdateItemsBounds();
                this.owner.PerformControlLayout();
                if (this.owner.ElementTree == null || this.owner.ElementTree.Control == null)
                {
                    return;
                }
                (this.owner.ElementTree.Control as RadLayoutControl)?.OnHandleDropCompleted((object)this);
            }
        }
コード例 #22
0
 public void RemoveItem(LayoutControlItemBase item)
 {
     this.RemoveNode(this.FindNodeByItem(item), true);
 }
コード例 #23
0
 public BoundsEndpoint(int location, bool isEnd, LayoutControlItemBase item)
 {
     this.Location = location;
     this.IsEnd    = isEnd;
     this.Item     = item;
 }
コード例 #24
0
 public DraggableLayoutControlItem(LayoutControlItemBase associatedItem)
 {
     this.AssociatedItem = associatedItem;
 }