diff --git a/Terminal.Gui/Views/SplitContainer.cs b/Terminal.Gui/Views/SplitView.cs similarity index 73% rename from Terminal.Gui/Views/SplitContainer.cs rename to Terminal.Gui/Views/SplitView.cs index ca0fc210a..741a732f6 100644 --- a/Terminal.Gui/Views/SplitContainer.cs +++ b/Terminal.Gui/Views/SplitView.cs @@ -8,19 +8,20 @@ namespace Terminal.Gui { /// /// A consisting of a moveable bar that divides - /// the display area into 2 resizeable panels. + /// the display area into 2 resizeable views. /// - public class SplitContainer : View { + public class SplitView : View + { private SplitContainerLineView splitterLine; - SplitContainer parentSplitPanel; + SplitView parentSplitView; /// TODO: Might be able to make Border virtual and override here /// To make this more API friendly /// /// Use this field instead of Border to create an integrated - /// Border in which lines connect with subpanels and splitters + /// Border in which lines connect with subviews and splitters /// seamlessly /// public BorderStyle IntegratedBorder {get;set;} @@ -29,25 +30,25 @@ namespace Terminal.Gui { /// The showing in the left hand pane of a /// or top of an /// pane. May be another - /// if further splitter subdivisions are + /// if further splitter subdivisions are /// desired (e.g. to create a resizeable grid. /// - public View Panel1 { get; private set; } + public View View1 { get; private set; } - public int Panel1MinSize { get; set; } = 1; - public ustring Panel1Title { get; set; } = string.Empty; + public int View1MinSize { get; set; } = 1; + public ustring View1Title { get; set; } = string.Empty; /// /// The showing in the right hand pane of a /// or bottom of an /// pane. May be another - /// if further splitter subdivisions are + /// if further splitter subdivisions are /// desired (e.g. to create a resizeable grid. /// - public View Panel2 { get; private set; } + public View View2 { get; private set; } - public int Panel2MinSize { get; set; } = 1; - public ustring Panel2Title { get; set; } = string.Empty; + public int View2MinSize { get; set; } = 1; + public ustring View2Title { get; set; } = string.Empty; private Pos splitterDistance = Pos.Percent (50); private Orientation orientation = Orientation.Vertical; @@ -55,15 +56,15 @@ namespace Terminal.Gui { /// /// Creates a new instance of the SplitContainer class. /// - public SplitContainer () + public SplitView () { splitterLine = new SplitContainerLineView (this); - Panel1 = new View () { Width = Dim.Fill (), Height = Dim.Fill() }; - Panel2 = new View () { Width = Dim.Fill (), Height = Dim.Fill () }; + View1 = new View () { Width = Dim.Fill (), Height = Dim.Fill() }; + View2 = new View () { Width = Dim.Fill (), Height = Dim.Fill () }; - this.Add (Panel1); + this.Add (View1); this.Add (splitterLine); - this.Add (Panel2); + this.Add (View2); CanFocus = true; } @@ -123,7 +124,7 @@ namespace Terminal.Gui { /// /// Distance Horizontally or Vertically to the splitter line when - /// neither panel is collapsed. + /// neither view is collapsed. /// /// Only absolute values (e.g. 10) and percent values (i.e. ) /// are supported for this property. @@ -215,9 +216,9 @@ namespace Terminal.Gui { // Draw Titles over Border var screen = ViewToScreen (new Rect(0,0,bounds.Width,1)); - if (Panel1.Visible && Panel1Title.Length > 0) { - Driver.SetAttribute (Panel1.HasFocus ? ColorScheme.HotNormal : ColorScheme.Normal); - Driver.DrawWindowTitle (new Rect (screen.X, screen.Y, Panel1.Frame.Width, 0), Panel1Title, 0, 0, 0, 0); + if (View1.Visible && View1Title.Length > 0) { + Driver.SetAttribute (View1.HasFocus ? ColorScheme.HotNormal : ColorScheme.Normal); + Driver.DrawWindowTitle (new Rect (screen.X, screen.Y, View1.Frame.Width, 0), View1Title, 0, 0, 0, 0); } if (splitterLine.Visible) { @@ -229,47 +230,47 @@ namespace Terminal.Gui { } if (Orientation == Orientation.Horizontal) { - if (Panel2.Visible && Panel2Title?.Length > 0) { + if (View2.Visible && View2Title?.Length > 0) { - Driver.SetAttribute (Panel2.HasFocus ? ColorScheme.HotNormal : ColorScheme.Normal); - Driver.DrawWindowTitle (new Rect (screen.X, screen.Y, Panel2.Bounds.Width, 1), Panel2Title, 0, 0, 0, 0); + Driver.SetAttribute (View2.HasFocus ? ColorScheme.HotNormal : ColorScheme.Normal); + Driver.DrawWindowTitle (new Rect (screen.X, screen.Y, View2.Bounds.Width, 1), View2Title, 0, 0, 0, 0); } } else { - if (Panel2.Visible && Panel2Title?.Length > 0) { - Driver.SetAttribute (Panel2.HasFocus ? ColorScheme.HotNormal : ColorScheme.Normal); - Driver.DrawWindowTitle (new Rect (screen.X, screen.Y, Panel2.Bounds.Width, 1), Panel2Title, 0, 0, 0, 0); + if (View2.Visible && View2Title?.Length > 0) { + Driver.SetAttribute (View2.HasFocus ? ColorScheme.HotNormal : ColorScheme.Normal); + Driver.DrawWindowTitle (new Rect (screen.X, screen.Y, View2.Bounds.Width, 1), View2Title, 0, 0, 0, 0); } } } /// - /// Converts from a regular - /// container to a new nested . If - /// is already a then returns false. + /// Converts from a regular + /// container to a new nested . If + /// is already a then returns false. /// - /// After successful splitting, the returned container's - /// will contain the original content and (if any) while - /// will be empty and available for adding to. + /// After successful splitting, the returned container's + /// will contain the original content and (if any) while + /// will be empty and available for adding to. /// for adding to. - /// The new now showing in - /// or the existing one if it was already been converted before. + /// The new now showing in + /// or the existing one if it was already been converted before. /// if a was converted to a new nested - /// . if it was already a nested - /// - public bool TrySplitPanel1(out SplitContainer result) + /// . if it was already a nested + /// + public bool TrySplitView1(out SplitView result) { - // when splitting a panel into 2 sub panels we will need to migrate + // when splitting a view into 2 sub views we will need to migrate // the title too - var title = Panel1Title; + var title = View1Title; bool returnValue = TrySplit ( - this.Panel1, + this.View1, (newSplitContainer) => { - this.Panel1 = newSplitContainer; + this.View1 = newSplitContainer; // Move title to new container - Panel1Title = string.Empty; - newSplitContainer.Panel1Title = title; + View1Title = string.Empty; + newSplitContainer.View1Title = title; }, out result); @@ -277,36 +278,36 @@ namespace Terminal.Gui { } /// - /// Converts from a regular - /// container to a new nested . If - /// is already a then returns false. + /// Converts from a regular + /// container to a new nested . If + /// is already a then returns false. /// - /// After successful splitting, the returned container's - /// will contain the original content and (if any) while - /// will be empty and available for adding to. + /// After successful splitting, the returned container's + /// will contain the original content and (if any) while + /// will be empty and available for adding to. /// for adding to. - /// The new now showing in - /// or the existing one if it was already been converted before. + /// The new now showing in + /// or the existing one if it was already been converted before. /// if a was converted to a new nested - /// . if it was already a nested - /// - public bool TrySplitPanel2 (out SplitContainer result) + /// . if it was already a nested + /// + public bool TrySplitView2 (out SplitView result) { - // when splitting a panel into 2 sub panels we will need to migrate + // when splitting a view into 2 sub views we will need to migrate // the title too - var title = Panel2Title; + var title = View2Title; bool returnValue = TrySplit ( - this.Panel2, + this.View2, (newSplitContainer) => { - this.Panel2 = newSplitContainer; + this.View2 = newSplitContainer; // Move title to new container - Panel2Title = string.Empty; + View2Title = string.Empty; - // Content always goes into Panel1 of the new container + // Content always goes into View1 of the new container // so that is where the title goes too - newSplitContainer.Panel1Title = title; + newSplitContainer.View1Title = title; }, out result); @@ -314,32 +315,32 @@ namespace Terminal.Gui { } private bool TrySplit( View toMove, - Action newSplitContainerSetter, - out SplitContainer result) + Action newSplitContainerSetter, + out SplitView result) { - if (toMove is SplitContainer existing) { + if (toMove is SplitView existing) { result = existing; return false; } - var newContainer = new SplitContainer { + var newContainer = new SplitView { Width = Dim.Fill (), Height = Dim.Fill (), - parentSplitPanel = this, + parentSplitView = this, }; - // Take everything out of the Panel we are moving + // Take everything out of the View we are moving var childViews = toMove.Subviews.ToArray(); toMove.RemoveAll (); - // Remove the panel itself and replace it with the new SplitContainer + // Remove the view itself and replace it with the new SplitContainer Remove (toMove); Add (newContainer); newSplitContainerSetter(newContainer); - // Add the original content into the first panel of the new container + // Add the original content into the first view of the new container foreach(var childView in childViews) { - newContainer.Panel1.Add (childView); + newContainer.View1.Add (childView); } result = newContainer; @@ -370,14 +371,14 @@ namespace Terminal.Gui { private bool IsRootSplitContainer () { // TODO: don't want to layout subviews since the parent recursively lays them all out - return parentSplitPanel == null; + return parentSplitView == null; } - private SplitContainer GetRootSplitContainer () + private SplitView GetRootSplitContainer () { - SplitContainer root = this; + SplitView root = this; - while (root.parentSplitPanel != null) { - root = root.parentSplitPanel; + while (root.parentSplitView != null) { + root = root.parentSplitView; } return root; @@ -385,12 +386,12 @@ namespace Terminal.Gui { private void Setup (Rect bounds) { splitterLine.Orientation = Orientation; - // splitterLine.Text = Panel2.Title; + // splitterLine.Text = View2.Title; // TODO: Recursion - if (!Panel1.Visible || !Panel2.Visible) { - View toFullSize = !Panel1.Visible ? Panel2 : Panel1; + if (!View1.Visible || !View2.Visible) { + View toFullSize = !View1.Visible ? View2 : View1; splitterLine.Visible = false; @@ -403,8 +404,8 @@ namespace Terminal.Gui { splitterDistance = BoundByMinimumSizes (splitterDistance); - Panel1.X = bounds.X; - Panel1.Y = bounds.Y; + View1.X = bounds.X; + View1.Y = bounds.Y; switch (Orientation) { case Orientation.Horizontal: @@ -414,14 +415,14 @@ namespace Terminal.Gui { splitterLine.Height = 1; splitterLine.LineRune = Driver.HLine; - Panel1.Width = Dim.Fill (HasBorder()? 1:0); - Panel1.Height = new Dim.DimFunc (() => + View1.Width = Dim.Fill (HasBorder()? 1:0); + View1.Height = new Dim.DimFunc (() => splitterDistance.Anchor (bounds.Height)); - Panel2.Y = Pos.Bottom (splitterLine); - Panel2.X = bounds.X; - Panel2.Width = bounds.Width; - Panel2.Height = Dim.Fill(HasBorder () ? 1 : 0); + View2.Y = Pos.Bottom (splitterLine); + View2.X = bounds.X; + View2.Width = bounds.Width; + View2.Height = Dim.Fill(HasBorder () ? 1 : 0); break; case Orientation.Vertical: @@ -431,14 +432,14 @@ namespace Terminal.Gui { splitterLine.Height = Dim.Fill (); splitterLine.LineRune = Driver.VLine; - Panel1.Height = Dim.Fill(); - Panel1.Width = new Dim.DimFunc (() => + View1.Height = Dim.Fill(); + View1.Width = new Dim.DimFunc (() => splitterDistance.Anchor (bounds.Width)); - Panel2.X = Pos.Right (splitterLine); - Panel2.Y = bounds.Y; - Panel2.Height = bounds.Height; - Panel2.Width = Dim.Fill(HasBorder()? 1:0); + View2.X = Pos.Right (splitterLine); + View2.Y = bounds.Y; + View2.Height = bounds.Height; + View2.Width = Dim.Fill(HasBorder()? 1:0); break; default: throw new ArgumentOutOfRangeException (nameof (orientation)); @@ -449,7 +450,7 @@ namespace Terminal.Gui { /// /// Considers as a candidate for /// then either returns (if valid) or returns adjusted if invalid with respect to the - /// of the panels. + /// of the views. /// /// /// @@ -457,21 +458,21 @@ namespace Terminal.Gui { { // if we are not yet initialized then we don't know // how big we are and therefore cannot sensibly calculate - // how big the panels will be with a given SplitterDistance + // how big the views will be with a given SplitterDistance if (!IsInitialized) { return pos; } - var panel1MinSize = Panel1MinSize; - var panel2MinSize = Panel2MinSize; + var view1MinSize = View1MinSize; + var view2MinSize = View2MinSize; // if there is a border then there is less space - // for the panels so we need to make size restrictions + // for the views so we need to make size restrictions // tighter. if(HasBorder()) { - panel1MinSize++; - panel2MinSize++; + view1MinSize++; + view2MinSize++; } var availableSpace = Orientation == Orientation.Horizontal ? this.Bounds.Height : this.Bounds.Width; @@ -483,33 +484,33 @@ namespace Terminal.Gui { var idealPosition = pos.Anchor (availableSpace); - // bad position because not enough space for Panel1 - if (idealPosition < panel1MinSize) { + // bad position because not enough space for View1 + if (idealPosition < view1MinSize) { // TODO: we should preserve Absolute/Percent status here not just force it to absolute - return (Pos)Math.Min (panel1MinSize, availableSpace); + return (Pos)Math.Min (view1MinSize, availableSpace); } - // bad position because not enough space for Panel2 - if (availableSpace - idealPosition <= panel2MinSize) { + // bad position because not enough space for View2 + if (availableSpace - idealPosition <= view2MinSize) { // TODO: we should preserve Absolute/Percent status here not just force it to absolute // +1 is to allow space for the splitter - return (Pos)Math.Max (availableSpace - (panel2MinSize + 1), 0); + return (Pos)Math.Max (availableSpace - (view2MinSize + 1), 0); } // this splitter position is fine, there is enough space for everyone return pos; } private class SplitContainerLineView : LineView { - public SplitContainer Parent { get; private set; } + public SplitView Parent { get; private set; } Point? dragPosition; Pos dragOrignalPos; public Point? moveRuneRenderLocation; - public SplitContainerLineView (SplitContainer parent) + public SplitContainerLineView (SplitView parent) { CanFocus = true; TabStop = true; @@ -681,7 +682,7 @@ namespace Terminal.Gui { /// /// - /// Moves to + /// Moves to /// preserving format /// (absolute / relative) that had. /// @@ -729,7 +730,7 @@ namespace Terminal.Gui { } private bool HasAnyTitles() { - return Panel1Title.Length > 0 || Panel2Title.Length > 0; + return View1Title.Length > 0 || View2Title.Length > 0; } @@ -747,7 +748,7 @@ namespace Terminal.Gui { { var screenRect = currentLine.ViewToScreen ( new Rect(0,0,currentLine.Frame.Width,currentLine.Frame.Height)); - Driver.DrawWindowTitle (screenRect, currentLine.Parent.Panel2Title, 0, 0, 0, 0); + Driver.DrawWindowTitle (screenRect, currentLine.Parent.View2Title, 0, 0, 0, 0); } } } @@ -763,21 +764,21 @@ namespace Terminal.Gui { /// /// /// - public SplitterEventArgs (SplitContainer splitContainer, Pos splitterDistance) + public SplitterEventArgs (SplitView splitContainer, Pos splitterDistance) { SplitterDistance = splitterDistance; SplitContainer = splitContainer; } /// - /// New position of the + /// New position of the /// public Pos SplitterDistance { get; } /// /// Container (sender) of the event. /// - public SplitContainer SplitContainer { get; } + public SplitView SplitContainer { get; } } /// diff --git a/UICatalog/Scenarios/SplitContainerNesting.cs b/UICatalog/Scenarios/SplitViewNesting.cs similarity index 56% rename from UICatalog/Scenarios/SplitContainerNesting.cs rename to UICatalog/Scenarios/SplitViewNesting.cs index 60e6500b2..921299892 100644 --- a/UICatalog/Scenarios/SplitContainerNesting.cs +++ b/UICatalog/Scenarios/SplitViewNesting.cs @@ -3,10 +3,10 @@ using Terminal.Gui; using Terminal.Gui.Graphs; namespace UICatalog.Scenarios { - [ScenarioMetadata (Name: "Split Container Nesting", Description: "Nest SplitContainers")] + [ScenarioMetadata (Name: "Split View Nesting", Description: "Nest SplitViews")] [ScenarioCategory ("Controls")] [ScenarioCategory ("LineView")] - public class SplitContainerNesting : Scenario { + public class SplitViewNesting : Scenario { private View workArea; private TextField textField; @@ -16,8 +16,8 @@ namespace UICatalog.Scenarios { private CheckBox cbUseLabels; bool loaded = false; - int panelsCreated; - int panelsToCreate; + int viewsCreated; + int viewsToCreate; /// /// Setup the scenario. @@ -28,35 +28,35 @@ namespace UICatalog.Scenarios { Win.Title = this.GetName (); Win.Y = 1; - var lblPanels = new Label ("Number Of Panels:"); + var lblViews = new Label ("Number Of Views:"); textField = new TextField { - X = Pos.Right (lblPanels), + X = Pos.Right (lblViews), Width = 10, Text = "2", }; - textField.TextChanged += (s) => SetupSplitContainer (); + textField.TextChanged += (s) => SetupSplitView (); cbHorizontal = new CheckBox ("Horizontal") { X = Pos.Right (textField) + 1 }; - cbHorizontal.Toggled += (s) => SetupSplitContainer (); + cbHorizontal.Toggled += (s) => SetupSplitView (); cbBorder = new CheckBox ("Border") { X = Pos.Right (cbHorizontal) + 1 }; - cbBorder.Toggled += (s) => SetupSplitContainer (); + cbBorder.Toggled += (s) => SetupSplitView (); cbTitles = new CheckBox ("Titles") { X = Pos.Right (cbBorder) + 1 }; - cbTitles.Toggled += (s) => SetupSplitContainer (); + cbTitles.Toggled += (s) => SetupSplitView (); cbUseLabels = new CheckBox ("Use Labels") { X = Pos.Right (cbTitles) + 1 }; - cbUseLabels.Toggled += (s) => SetupSplitContainer (); + cbUseLabels.Toggled += (s) => SetupSplitView (); workArea = new View { X = 0, @@ -70,7 +70,7 @@ namespace UICatalog.Scenarios { new MenuItem ("_Quit", "", () => Quit()), }) }); - Win.Add (lblPanels); + Win.Add (lblViews); Win.Add (textField); Win.Add (cbHorizontal); Win.Add (cbBorder); @@ -78,16 +78,16 @@ namespace UICatalog.Scenarios { Win.Add (cbUseLabels); Win.Add (workArea); - SetupSplitContainer (); + SetupSplitView (); Application.Top.Add (menu); Win.Loaded += () => loaded = true; } - private void SetupSplitContainer () + private void SetupSplitView () { - int numberOfPanels = GetNumberOfPanels (); + int numberOfViews = GetNumberOfViews (); bool titles = cbTitles.Checked; bool border = cbBorder.Checked; @@ -95,16 +95,16 @@ namespace UICatalog.Scenarios { workArea.RemoveAll (); - if (numberOfPanels <= 0) { + if (numberOfViews <= 0) { return; } - var root = CreateSplitContainer (1,startHorizontal ? + var root = CreateSplitView (1,startHorizontal ? Terminal.Gui.Graphs.Orientation.Horizontal : Terminal.Gui.Graphs.Orientation.Vertical); - root.Panel1.Add (CreateContentControl (1)); - root.Panel2.Add (CreateContentControl (2)); + root.View1.Add (CreateContentControl (1)); + root.View2.Add (CreateContentControl (2)); root.IntegratedBorder = border ? BorderStyle.Rounded : BorderStyle.None; @@ -112,15 +112,15 @@ namespace UICatalog.Scenarios { workArea.Add (root); - if (numberOfPanels == 1) { - root.Panel2.Visible = false; + if (numberOfViews == 1) { + root.View2.Visible = false; } - if (numberOfPanels > 2) { + if (numberOfViews > 2) { - panelsCreated = 2; - panelsToCreate = numberOfPanels; - AddMorePanels (root); + viewsCreated = 2; + viewsToCreate = numberOfViews; + AddMoreViews (root); } if (loaded) { @@ -152,81 +152,81 @@ namespace UICatalog.Scenarios { Height = Dim.Fill(), Text = number.ToString ().Repeat (1000), AllowsTab = false, - //WordWrap = true, // TODO: This is very slow (like 10s to render with 45 panels) + //WordWrap = true, // TODO: This is very slow (like 10s to render with 45 views) }; } - private void AddMorePanels (SplitContainer to) + private void AddMoreViews (SplitView to) { - if (panelsCreated == panelsToCreate) { + if (viewsCreated == viewsToCreate) { return; } - if (!(to.Panel1 is SplitContainer)) { + if (!(to.View1 is SplitView)) { Split(to,true); } - if (!(to.Panel2 is SplitContainer)) { + if (!(to.View2 is SplitView)) { Split(to,false); } - if (to.Panel1 is SplitContainer && to.Panel2 is SplitContainer) { + if (to.View1 is SplitView && to.View2 is SplitView) { - AddMorePanels ((SplitContainer)to.Panel1); - AddMorePanels ((SplitContainer)to.Panel2); + AddMoreViews ((SplitView)to.View1); + AddMoreViews ((SplitView)to.View2); } } - private void Split(SplitContainer to, bool left) + private void Split(SplitView to, bool left) { - if (panelsCreated == panelsToCreate) { + if (viewsCreated == viewsToCreate) { return; } - SplitContainer newContainer; + SplitView newView; if (left) { - to.TrySplitPanel1 (out newContainer); + to.TrySplitView1 (out newView); } else { - to.TrySplitPanel2 (out newContainer); + to.TrySplitView2 (out newView); } - panelsCreated++; + viewsCreated++; - // During splitting the old Title will have been migrated to Panel1 so we only need - // to set the Title on Panel2 (the one that gets our new TextView) - newContainer.Panel2Title = cbTitles.Checked ? $"Panel {panelsCreated}" : string.Empty; + // During splitting the old Title will have been migrated to View1 so we only need + // to set the Title on View2 (the one that gets our new TextView) + newView.View2Title = cbTitles.Checked ? $"View {viewsCreated}" : string.Empty; // Flip orientation - newContainer.Orientation = to.Orientation == Orientation.Vertical ? + newView.Orientation = to.Orientation == Orientation.Vertical ? Orientation.Horizontal : Orientation.Vertical; - newContainer.Panel2.Add (CreateContentControl(panelsCreated)); + newView.View2.Add (CreateContentControl(viewsCreated)); } - private SplitContainer CreateSplitContainer (int titleNumber, Orientation orientation) + private SplitView CreateSplitView (int titleNumber, Orientation orientation) { - var toReturn = new SplitContainer { + var toReturn = new SplitView { Width = Dim.Fill (), Height = Dim.Fill (), // flip the orientation Orientation = orientation }; - toReturn.Panel1Title = cbTitles.Checked ? $"Panel {titleNumber}" : string.Empty; - toReturn.Panel2Title = cbTitles.Checked ? $"Panel {titleNumber + 1}" : string.Empty; + toReturn.View1Title = cbTitles.Checked ? $"View {titleNumber}" : string.Empty; + toReturn.View2Title = cbTitles.Checked ? $"View {titleNumber + 1}" : string.Empty; return toReturn; } - private int GetNumberOfPanels () + private int GetNumberOfViews () { - if (int.TryParse (textField.Text.ToString (), out var panels) && panels >= 0) { + if (int.TryParse (textField.Text.ToString (), out var views) && views >= 0) { - return panels; + return views; } else { return 0; } diff --git a/UICatalog/UICatalog.cs b/UICatalog/UICatalog.cs index 86ce9d0e7..dbd8510ec 100644 --- a/UICatalog/UICatalog.cs +++ b/UICatalog/UICatalog.cs @@ -151,7 +151,7 @@ namespace UICatalog { public MenuItem miIsMouseDisabled; public MenuItem miHeightAsBuffer; - public SplitContainer ContentPane; + public SplitView ContentPane; public ListView CategoryListView; public ListView ScenarioListView; @@ -207,7 +207,7 @@ namespace UICatalog { OS }; - ContentPane = new SplitContainer () { + ContentPane = new SplitView () { X = 0, Y = 1, // for menu Width = Dim.Fill (), @@ -232,8 +232,8 @@ namespace UICatalog { }; CategoryListView.SelectedItemChanged += CategoryListView_SelectedChanged; - ContentPane.Panel1Title = "Categories"; - ContentPane.Panel1.Add (CategoryListView); + ContentPane.View1Title = "Categories"; + ContentPane.View1.Add (CategoryListView); ScenarioListView = new ListView () { X = 0, @@ -246,8 +246,8 @@ namespace UICatalog { ScenarioListView.OpenSelectedItem += ScenarioListView_OpenSelectedItem; - ContentPane.Panel2Title = "Scenarios"; - ContentPane.Panel2.Add (ScenarioListView); + ContentPane.View2Title = "Scenarios"; + ContentPane.View2.Add (ScenarioListView); KeyDown += KeyDownHandler; Add (MenuBar); diff --git a/UnitTests/SplitContainerTests.cs b/UnitTests/SplitViewTests.cs similarity index 78% rename from UnitTests/SplitContainerTests.cs rename to UnitTests/SplitViewTests.cs index f9f03873c..062afcfe5 100644 --- a/UnitTests/SplitContainerTests.cs +++ b/UnitTests/SplitViewTests.cs @@ -5,20 +5,20 @@ using Xunit; using Xunit.Abstractions; namespace UnitTests { - public class SplitContainerTests { + public class SplitViewTests { readonly ITestOutputHelper output; - public SplitContainerTests (ITestOutputHelper output) + public SplitViewTests (ITestOutputHelper output) { this.output = output; } [Fact, AutoInitShutdown] - public void TestSplitContainer_Vertical () + public void TestSplitView_Vertical () { - var splitContainer = Get11By3SplitContainer (out var line); + var splitContainer = Get11By3SplitView (out var line); splitContainer.Redraw (splitContainer.Bounds); string looksLike = @@ -36,9 +36,9 @@ namespace UnitTests { } [Fact, AutoInitShutdown] - public void TestSplitContainer_Vertical_WithBorder () + public void TestSplitView_Vertical_WithBorder () { - var splitContainer = Get11By3SplitContainer (out var line, true); + var splitContainer = Get11By3SplitView (out var line, true); splitContainer.Redraw (splitContainer.Bounds); string looksLike = @@ -56,9 +56,9 @@ namespace UnitTests { } [Fact, AutoInitShutdown] - public void TestSplitContainer_Vertical_Focused () + public void TestSplitView_Vertical_Focused () { - var splitContainer = Get11By3SplitContainer (out var line); + var splitContainer = Get11By3SplitView (out var line); SetInputFocusLine (splitContainer); splitContainer.Redraw (splitContainer.Bounds); @@ -96,9 +96,9 @@ namespace UnitTests { } [Fact, AutoInitShutdown] - public void TestSplitContainer_Vertical_Focused_WithBorder () + public void TestSplitView_Vertical_Focused_WithBorder () { - var splitContainer = Get11By3SplitContainer (out var line, true); + var splitContainer = Get11By3SplitView (out var line, true); SetInputFocusLine (splitContainer); splitContainer.Redraw (splitContainer.Bounds); @@ -137,9 +137,9 @@ namespace UnitTests { [Fact, AutoInitShutdown] - public void TestSplitContainer_Vertical_Focused_50PercentSplit () + public void TestSplitView_Vertical_Focused_50PercentSplit () { - var splitContainer = Get11By3SplitContainer (out var line); + var splitContainer = Get11By3SplitView (out var line); SetInputFocusLine (splitContainer); splitContainer.SplitterDistance = Pos.Percent (50); Assert.IsType (splitContainer.SplitterDistance); @@ -183,9 +183,9 @@ namespace UnitTests { } [Fact, AutoInitShutdown] - public void TestSplitContainer_Horizontal () + public void TestSplitView_Horizontal () { - var splitContainer = Get11By3SplitContainer (out var line); + var splitContainer = Get11By3SplitView (out var line); splitContainer.Orientation = Terminal.Gui.Graphs.Orientation.Horizontal; splitContainer.Redraw (splitContainer.Bounds); @@ -205,11 +205,11 @@ namespace UnitTests { [Fact, AutoInitShutdown] - public void TestSplitContainer_Vertical_Panel1MinSize_Absolute () + public void TestSplitView_Vertical_View1MinSize_Absolute () { - var splitContainer = Get11By3SplitContainer (out var line); + var splitContainer = Get11By3SplitView (out var line); SetInputFocusLine (splitContainer); - splitContainer.Panel1MinSize = 6; + splitContainer.View1MinSize = 6; // distance is too small (below 6) splitContainer.SplitterDistance = 2; @@ -250,11 +250,11 @@ namespace UnitTests { [Fact, AutoInitShutdown] - public void TestSplitContainer_Vertical_Panel1MinSize_Absolute_WithBorder () + public void TestSplitView_Vertical_View1MinSize_Absolute_WithBorder () { - var splitContainer = Get11By3SplitContainer (out var line,true); + var splitContainer = Get11By3SplitView (out var line,true); SetInputFocusLine (splitContainer); - splitContainer.Panel1MinSize = 5; + splitContainer.View1MinSize = 5; // distance is too small (below 5) splitContainer.SplitterDistance = 2; @@ -294,13 +294,13 @@ namespace UnitTests { } [Fact, AutoInitShutdown] - public void TestSplitContainer_Vertical_Panel2MinSize_Absolute () + public void TestSplitView_Vertical_View2MinSize_Absolute () { - var splitContainer = Get11By3SplitContainer (out var line); + var splitContainer = Get11By3SplitView (out var line); SetInputFocusLine (splitContainer); - splitContainer.Panel2MinSize = 6; + splitContainer.View2MinSize = 6; - // distance leaves too little space for panel2 (less than 6 would remain) + // distance leaves too little space for view2 (less than 6 would remain) splitContainer.SplitterDistance = 8; // Should bound the value to the minimum distance @@ -338,13 +338,13 @@ namespace UnitTests { } [Fact, AutoInitShutdown] - public void TestSplitContainer_Vertical_Panel2MinSize_Absolute_WithBorder () + public void TestSplitView_Vertical_View2MinSize_Absolute_WithBorder () { - var splitContainer = Get11By3SplitContainer (out var line, true); + var splitContainer = Get11By3SplitView (out var line, true); SetInputFocusLine (splitContainer); - splitContainer.Panel2MinSize = 5; + splitContainer.View2MinSize = 5; - // distance leaves too little space for panel2 (less than 5 would remain) + // distance leaves too little space for view2 (less than 5 would remain) splitContainer.SplitterDistance = 8; // Should bound the value to the minimum distance @@ -382,9 +382,9 @@ namespace UnitTests { } [Fact, AutoInitShutdown] - public void TestSplitContainer_Horizontal_Focused () + public void TestSplitView_Horizontal_Focused () { - var splitContainer = Get11By3SplitContainer (out var line); + var splitContainer = Get11By3SplitView (out var line); splitContainer.Orientation = Terminal.Gui.Graphs.Orientation.Horizontal; SetInputFocusLine (splitContainer); @@ -422,15 +422,15 @@ namespace UnitTests { [Fact, AutoInitShutdown] - public void TestSplitContainer_Horizontal_Panel1MinSize_Absolute () + public void TestSplitView_Horizontal_View1MinSize_Absolute () { - var splitContainer = Get11By3SplitContainer (out var line); + var splitContainer = Get11By3SplitView (out var line); splitContainer.Orientation = Terminal.Gui.Graphs.Orientation.Horizontal; SetInputFocusLine (splitContainer); - splitContainer.Panel1MinSize = 1; + splitContainer.View1MinSize = 1; - // 0 should not be allowed because it brings us below minimum size of Panel1 + // 0 should not be allowed because it brings us below minimum size of View1 splitContainer.SplitterDistance = 0; Assert.Equal ((Pos)1, splitContainer.SplitterDistance); @@ -453,7 +453,7 @@ namespace UnitTests { ─────◊─────"; TestHelpers.AssertDriverContentsAre (looksLike, output); - // And up 2 (only 1 is allowed because of minimum size of 1 on panel1) + // And up 2 (only 1 is allowed because of minimum size of 1 on view1) line.ProcessKey (new KeyEvent (Key.CursorUp, new KeyModifiers ())); line.ProcessKey (new KeyEvent (Key.CursorUp, new KeyModifiers ())); splitContainer.Redraw (splitContainer.Bounds); @@ -466,9 +466,9 @@ namespace UnitTests { } [Fact, AutoInitShutdown] - public void TestSplitContainer_CannotSetSplitterPosToFuncEtc () + public void TestSplitView_CannotSetSplitterPosToFuncEtc () { - var splitContainer = Get11By3SplitContainer (); + var splitContainer = Get11By3SplitView (); var ex = Assert.Throws (() => splitContainer.SplitterDistance = Pos.Right (splitContainer)); Assert.Equal ("Only Percent and Absolute values are supported for SplitterDistance property. Passed value was PosCombine", ex.Message); @@ -488,26 +488,26 @@ namespace UnitTests { var splitContainer = GetNestedContainer2Left1Right (false); Assert.Equal (20,splitContainer.Frame.Width); - Assert.Equal (10, splitContainer.Panel1.Frame.Width); - Assert.Equal (9, splitContainer.Panel2.Frame.Width); + Assert.Equal (10, splitContainer.View1.Frame.Width); + Assert.Equal (9, splitContainer.View2.Frame.Width); - Assert.IsType (splitContainer.Panel1); - var left = (SplitContainer)splitContainer.Panel1; + Assert.IsType (splitContainer.View1); + var left = (SplitView)splitContainer.View1; Assert.Same (left.SuperView, splitContainer); - Assert.Equal (10, left.Panel1.Frame.Width); - Assert.Equal (5, left.Panel1.Frame.Height); - Assert.Equal (10, left.Panel2.Frame.Width); - Assert.Equal (4, left.Panel2.Frame.Height); + Assert.Equal (10, left.View1.Frame.Width); + Assert.Equal (5, left.View1.Frame.Height); + Assert.Equal (10, left.View2.Frame.Width); + Assert.Equal (4, left.View2.Frame.Height); - Assert.Equal(2, left.Panel1.Subviews.Count); - Assert.IsType /// /// - private SplitContainer GetNestedContainer2Left1Right(bool withBorder) + private SplitView GetNestedContainer2Left1Right(bool withBorder) { - var container = GetSplitContainer (20, 10,withBorder); - Assert.True (container.TrySplitPanel1 (out var newContainer)); + var container = GetSplitView (20, 10,withBorder); + Assert.True (container.TrySplitView1 (out var newContainer)); newContainer.Orientation = Terminal.Gui.Graphs.Orientation.Horizontal; newContainer.ColorScheme = new ColorScheme (); @@ -551,45 +551,45 @@ namespace UnitTests { return container; } - private LineView GetLine (SplitContainer splitContainer) + private LineView GetLine (SplitView splitContainer) { return splitContainer.Subviews.OfType ().Single (); } - private void SetInputFocusLine (SplitContainer splitContainer) + private void SetInputFocusLine (SplitView splitContainer) { var line = GetLine (splitContainer); line.SetFocus (); Assert.True (line.HasFocus); } - private SplitContainer Get11By3SplitContainer(out LineView line, bool withBorder = false) + private SplitView Get11By3SplitView(out LineView line, bool withBorder = false) { - var split = Get11By3SplitContainer (withBorder); + var split = Get11By3SplitView (withBorder); line = GetLine (split); return split; } - private SplitContainer Get11By3SplitContainer (bool withBorder = false) + private SplitView Get11By3SplitView (bool withBorder = false) { - return GetSplitContainer (11, 3, withBorder); + return GetSplitView (11, 3, withBorder); } - private SplitContainer GetSplitContainer (int width, int height, bool withBorder = false) + private SplitView GetSplitView (int width, int height, bool withBorder = false) { - var container = new SplitContainer () { + var container = new SplitView () { Width = width, Height = height, }; container.IntegratedBorder = withBorder ? BorderStyle.Single : BorderStyle.None; - container.Panel1.Add (new Label (new string ('1', 100)) { Width = Dim.Fill(), Height = 1, AutoSize = false}); - container.Panel1.Add (new Label (new string ('1', 100)) { Width = Dim.Fill (), Height = 1, AutoSize = false,Y = 1}); - container.Panel2.Add (new Label (new string ('2', 100)) { Width = Dim.Fill (), Height = 1, AutoSize = false }); - container.Panel2.Add (new Label (new string ('2', 100)) { Width = Dim.Fill (), Height = 1, AutoSize = false,Y = 1}); + container.View1.Add (new Label (new string ('1', 100)) { Width = Dim.Fill(), Height = 1, AutoSize = false}); + container.View1.Add (new Label (new string ('1', 100)) { Width = Dim.Fill (), Height = 1, AutoSize = false,Y = 1}); + container.View2.Add (new Label (new string ('2', 100)) { Width = Dim.Fill (), Height = 1, AutoSize = false }); + container.View2.Add (new Label (new string ('2', 100)) { Width = Dim.Fill (), Height = 1, AutoSize = false,Y = 1}); - container.Panel1MinSize = 0; - container.Panel2MinSize = 0; + container.View1MinSize = 0; + container.View2MinSize = 0; Application.Top.Add (container); container.ColorScheme = new ColorScheme ();