//Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Reflection; using osu.Framework.Graphics.Transformations; using osu.Framework.Graphics.UserInterface; using OpenTK; namespace osu.Game.Graphics.UserInterface { public class OsuDropDownMenu : DropDownMenu { protected override DropDownHeader CreateHeader() => new OsuDropDownHeader(); protected override IEnumerable> GetDropDownItems(IEnumerable values) { return values.Select(v => { var field = typeof(U).GetField(Enum.GetName(typeof(U), v)); return new OsuDropDownMenuItem( field.GetCustomAttribute()?.Description ?? field.Name, v); }); } public OsuDropDownMenu() { //TODO: breaks padding; figure why. //ContentContainer.CornerRadius = 4; } protected override void AnimateOpen() { ContentContainer.FadeIn(300, EasingTypes.OutQuint); } protected override void AnimateClose() { ContentContainer.FadeOut(300, EasingTypes.OutQuint); } protected override void UpdateContentHeight() { if (State == DropDownMenuState.Opened) ContentContainer.ResizeTo(new Vector2(1, ContentHeight), 300, EasingTypes.OutQuint); else ContentContainer.ResizeTo(new Vector2(1, 0), 300, EasingTypes.OutQuint); } } }