// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System.Collections;
using System.Drawing;
using System.Windows.Forms.Design.Behavior;

namespace System.Windows.Forms.Design;

internal class DateTimePickerDesigner : ControlDesigner
{
    public DateTimePickerDesigner()
    {
        AutoResizeHandles = true;
    }

    /// <summary>
    ///  Adds a baseline SnapLine to the list of SnapLines related to this control.
    /// </summary>
    public override IList SnapLines
    {
        get
        {
            IList<SnapLine> snapLines = SnapLinesInternal;

            // A single text-baseline for the label (and linklabel) control.
            int baseline = DesignerUtils.GetTextBaseline(Control, ContentAlignment.MiddleLeft);

            // DateTimePicker doesn't have an alignment, so we use MiddleLeft and add a fudge-factor.
            baseline += 2;
            snapLines.Add(new SnapLine(SnapLineType.Baseline, baseline, SnapLinePriority.Medium));

            return snapLines.Unwrap();
        }
    }

    /// <summary>
    ///  Retrieves a set of rules concerning the movement capabilities of a component.
    ///  This should be one or more flags from the SelectionRules class.  If no designer
    ///  provides rules for a component, the component will not get any UI services.
    /// </summary>
    public override SelectionRules SelectionRules
        => base.SelectionRules & ~(SelectionRules.TopSizeable | SelectionRules.BottomSizeable);
}
