Layout() public method

Perform a layout of the elements.
public Layout ( ViewLayoutContext context ) : void
context ComponentFactory.Krypton.Toolkit.ViewLayoutContext Layout context.
return void
コード例 #1
0
        /// <summary>
        /// Perform a layout of the elements.
        /// </summary>
        /// <param name="context">Layout context.</param>
        public override void Layout(ViewLayoutContext context)
        {
            Debug.Assert(context != null);

            // We take on all the available display area
            ClientRectangle = context.DisplayRectangle;

            // Layout depends on orientation
            switch (Orientation)
            {
            case VisualOrientation.Top:
                context.DisplayRectangle = new Rectangle(ClientLocation.X, ClientRectangle.Bottom - GAP_LENGTH, ClientWidth, GAP_LENGTH);
                _separator.Layout(context);
                context.DisplayRectangle = new Rectangle(ClientLocation.X, ClientLocation.Y, ClientWidth, ClientHeight - GAP_LENGTH);
                _button.Layout(context);
                break;

            case VisualOrientation.Bottom:
                context.DisplayRectangle = new Rectangle(ClientLocation.X, ClientRectangle.Y, ClientWidth, GAP_LENGTH);
                _separator.Layout(context);
                context.DisplayRectangle = new Rectangle(ClientLocation.X, ClientLocation.Y + GAP_LENGTH, ClientWidth, ClientHeight - GAP_LENGTH);
                _button.Layout(context);
                break;

            case VisualOrientation.Left:
                if (_insetForTabs)
                {
                    ClientRectangle = AdjustRectForTabs(ClientRectangle);
                }

                context.DisplayRectangle = new Rectangle(ClientRectangle.Right - GAP_LENGTH, ClientLocation.Y, GAP_LENGTH, ClientHeight);
                _separator.Layout(context);
                context.DisplayRectangle = new Rectangle(ClientLocation.X, ClientLocation.Y, ClientWidth - GAP_LENGTH, ClientHeight);
                _button.Layout(context);
                break;

            case VisualOrientation.Right:
                if (_insetForTabs)
                {
                    ClientRectangle = AdjustRectForTabs(ClientRectangle);
                }

                context.DisplayRectangle = new Rectangle(ClientLocation.X, ClientLocation.Y, GAP_LENGTH, ClientHeight);
                _separator.Layout(context);
                context.DisplayRectangle = new Rectangle(ClientLocation.X + GAP_LENGTH, ClientLocation.Y, ClientWidth - GAP_LENGTH, ClientHeight);
                _button.Layout(context);
                break;
            }

            // Put back the original display rectangle
            context.DisplayRectangle = ClientRectangle;
        }