コード例 #1
0
        protected virtual SizeF MeasureElementCore(RadElement element, SizeF availableSize)
        {
            IVirtualizedElement <T> virtualizedElement = (IVirtualizedElement <T>)element;
            SizeF fixedSize = ElementProvider.GetElementSize(virtualizedElement.Data);

            if (Orientation == System.Windows.Forms.Orientation.Vertical)
            {
                if (fixedSize.Height > 0)
                {
                    availableSize.Height = fixedSize.Height;
                }
                if (!FitElementsToSize)
                {
                    availableSize.Width = float.PositiveInfinity;
                }
            }
            else
            {
                availableSize.Width = fixedSize.Width;
                if (!FitElementsToSize)
                {
                    availableSize.Height = float.PositiveInfinity;
                }
            }

            element.Measure(availableSize);

            return(element.DesiredSize);
        }
コード例 #2
0
        protected override SizeF ArrangeOverride(SizeF finalSize)
        {
            InitializeOffset();

            foreach (RadElement element in this.Children)
            {
                if (this.orientation == Orientation.Vertical)
                {
                    IVirtualizedElement <T> virtualizedElement = (IVirtualizedElement <T>)element;
                    float      width       = FitElementsToSize /*|| element.StretchHorizontally*/ ? finalSize.Width : element.DesiredSize.Width;
                    float      height      = ElementProvider.GetElementSize(virtualizedElement.Data).Height;
                    RectangleF arrangeRect = new RectangleF(ScrollOffset.Width, offset, width, height);
                    if (RightToLeft)
                    {
                        arrangeRect.X = finalSize.Width - width;
                    }
                    arrangeRect = ArrangeElementCore(element, finalSize, arrangeRect);
                    offset     += arrangeRect.Height + ItemSpacing;
                }
                else
                {
                    float      height      = FitElementsToSize || element.StretchVertically ? finalSize.Height : element.DesiredSize.Height;
                    RectangleF arrangeRect = ArrangeElementCore(element, finalSize, new RectangleF(offset, 0, element.DesiredSize.Width, height));
                    offset += arrangeRect.Width + ItemSpacing;
                }
            }

            return(finalSize);
        }
コード例 #3
0
ファイル: DockContent.cs プロジェクト: vector-man/netide
        public DockContent()
        {
            _fixer = new FormHelper(this);
            _fixer.EnableBoundsTracking = false;

            ElementProvider.Install(new DockContentElementProvider(this));
        }
コード例 #4
0
        protected virtual void RemoveElement(int position)
        {
            IVirtualizedElement <T> virtualizedElement = (IVirtualizedElement <T>) this.Children[position];

            ElementProvider.CacheElement(virtualizedElement);
            this.BitState[InvalidateMeasureOnRemoveStateKey] = false;
            this.Children.RemoveAt(position);
            this.BitState[InvalidateMeasureOnRemoveStateKey] = true;
            virtualizedElement.Detach();
        }
コード例 #5
0
        protected override IVirtualizedElement <ListViewDataItem> UpdateElement(int position, ListViewDataItem data)
        {
            IVirtualizedElement <ListViewDataItem> element = null;
            object elementContext = this.GetElementContext();

            if (position < this.Children.Count)
            {
                element = (IVirtualizedElement <ListViewDataItem>) this.Children[position];
                if (ElementProvider.ShouldUpdate(element, data, elementContext))
                {
                    if (position < this.Children.Count - 1)
                    {
                        IVirtualizedElement <ListViewDataItem> nextElement = (IVirtualizedElement <ListViewDataItem>) this.Children[position + 1];

                        if (nextElement.Data.Equals(data))
                        {
                            this.Children.Move(position + 1, position);
                            nextElement.Synchronize();
                            return(nextElement);
                        }
                    }

                    if (ElementProvider.IsCompatible(element, data, elementContext))
                    {
                        element.Detach();
                        element.Attach(data, elementContext);
                    }
                    else
                    {
                        int index = FindCompatibleElement(position, data);
                        if (index > position)
                        {
                            this.Children.Move(index, position);
                            element = (IVirtualizedElement <ListViewDataItem>) this.Children[position];
                            element.Detach();
                            element.Attach(data, elementContext);
                        }
                        else
                        {
                            position = Math.Min(position, this.Children.Count);
                            element  = ElementProvider.GetElement(data, elementContext);
                            InsertElement(position, element, data);
                        }
                    }
                }
            }
            else
            {
                position = Math.Min(position, this.Children.Count);
                element  = ElementProvider.GetElement(data, elementContext);
                InsertElement(position, element, data);
            }

            return(element);
        }
コード例 #6
0
        public LinkedList(IEnumerable <T> toCopy)
        {
            elements = new ElementProvider();
            ListElement <T> building = elements.firstElement;

            foreach (T element in toCopy)
            {
                building.next = new ListElement <T>(element);
                building      = building.next;
            }
            building.next = elements.lastElement;
        }
コード例 #7
0
        void OnClickTile(Vector3Int cell)
        {
            var hex = GetHexCoordinate(cell);

            if (ElementProvider == null)
            {
                RemoveElement(hex);
            }
            else
            {
                var element = ElementProvider.GetElement();
                AddElement(element, hex);
            }
        }
コード例 #8
0
        public TextEditorControl()
        {
            ElementProvider.Install(new TextEditorElementProvider(this));

            ActiveTextAreaControl.TextArea.DoProcessDialogKey += TextArea_DoProcessDialogKey;
            ActiveTextAreaControl.TextArea.GotFocus           += TextArea_GotFocus;
            ActiveTextAreaControl.TextArea.LostFocus          += TextArea_LostFocus;

            CommandMapper  = new NiCommandMapper();
            _commandTarget = new CommandTarget(CommandMapper);
            FindTarget     = new FindTargetImpl(ActiveTextAreaControl);

            BuildCommands();

            RemoveDefaultKeyBindings();
        }
コード例 #9
0
ファイル: ItemScroller.cs プロジェクト: configare/hispeed
        public virtual int GetScrollHeight(T item)
        {
            int height = 0;

            if (this.ElementProvider != null)
            {
                SizeF size = ElementProvider.GetElementSize(item);
                if (this.scrollbar.ScrollType == ScrollType.Vertical)
                {
                    height = (int)size.Height;
                    this.currentItemWidth = (int)size.Width;
                }
                else
                {
                    height = (int)size.Width;
                    this.currentItemWidth = (int)size.Height;
                }
            }

            return(height);
        }
コード例 #10
0
        protected override SizeF MeasureElementCore(RadElement element, SizeF availableSize)
        {
            TreeNodeElement virtualizedElement = (TreeNodeElement)element;
            float           fixedHeight        = ElementProvider.GetElementSize(virtualizedElement.Data).Height;
            float           measureWidth       = float.PositiveInfinity;

            if (TreeViewElement.AutoSizeItems || virtualizedElement.Editor != null)
            {
                fixedHeight = float.PositiveInfinity;
            }

            if (virtualizedElement.ContentElement.TextWrap)
            {
                measureWidth = availableSize.Width - this.ScrollOffset.Width;
            }
            element.Measure(new SizeF(measureWidth, fixedHeight));
            virtualizedElement.ContentElement.FullDesiredSize = virtualizedElement.ContentElement.DesiredSize;

            element.Measure(new SizeF(availableSize.Width - this.ScrollOffset.Width, fixedHeight));

            return(element.DesiredSize);
        }
コード例 #11
0
 public TreeNodeElementProvider(ElementProvider provider = null)
 {
     this.provider = provider ?? new ElementProvider(SameElement);
 }
コード例 #12
0
 // Creates a shallow copy of toCopy.
 public LinkedList(LinkedList <T> toCopy)
 {
     this.elements = toCopy.elements;
     considering   = this.elements.firstElement;
     indexOn       = -1;
 }
コード例 #13
0
 public LinkedList()
 {
     elements    = new ElementProvider();
     considering = elements.firstElement;
     indexOn     = -1;
 }