using System; using System.Linq; using System.Text.Json.Serialization; using System.Text; using static Terminal.Gui.ConfigurationManager; namespace Terminal.Gui { /// /// The FrameView is a container frame that draws a frame around the contents. It is similar to /// a GroupBox in Windows. /// public class FrameView : View { /// /// Initializes a new instance of the class using layout. /// /// Frame. /// Title. /// Views. public FrameView (Rect frame, string title = null, View [] views = null) : base (frame) { SetInitialProperties (frame, title, views); } /// /// Initializes a new instance of the class using layout. /// /// Title. public FrameView (string title) { SetInitialProperties (Rect.Empty, title, null); } /// /// Initializes a new instance of the class using layout. /// public FrameView () : this (title: string.Empty) { } /// /// The default for 's border. The default is . /// /// /// This property can be set in a Theme to change the default for all s. /// [SerializableConfigurationProperty (Scope = typeof (ThemeScope)), JsonConverter (typeof (JsonStringEnumConverter))] public static LineStyle DefaultBorderStyle { get; set; } = LineStyle.Single; void SetInitialProperties (Rect frame, string title, View [] views = null) { this.Title = title; Border.Thickness = new Thickness (1); Border.BorderStyle = DefaultBorderStyle; //Border.ColorScheme = ColorScheme; Border.Data = "Border"; } /// public override bool OnEnter (View view) { if (Subviews.Count == 0 || !Subviews.Any (subview => subview.CanFocus)) { Application.Driver?.SetCursorVisibility (CursorVisibility.Invisible); } return base.OnEnter (view); } } }