Prototype support for collapsed panels

This commit is contained in:
tznind
2022-12-23 13:49:25 +00:00
parent 90c08ef3a0
commit e9a5c4913d

View File

@@ -31,6 +31,29 @@ namespace Terminal.Gui {
splitterLine.Orientation = Orientation;
if(panel1Collapsed || panel2Collapsed) {
SetupForCollapsedPanel ();
}
else {
SetupForNormal ();
}
}
private void SetupForNormal ()
{
// Ensure all our component views are here
// (e.g. if we are transitioning from a collapsed state)
if (!this.Subviews.Contains (splitterLine)) {
this.Add (splitterLine);
}
if (!this.Subviews.Contains (Panel1)) {
this.Add (Panel1);
}
if (!this.Subviews.Contains (Panel2)) {
this.Add (Panel2);
}
switch (Orientation) {
case Orientation.Horizontal:
splitterLine.X = 0;
@@ -74,6 +97,27 @@ namespace Terminal.Gui {
};
}
private void SetupForCollapsedPanel ()
{
View toRemove = panel1Collapsed ? Panel1 : Panel2;
View toFullSize = panel1Collapsed ? Panel2 : Panel1;
if (this.Subviews.Contains (splitterLine)) {
this.Subviews.Remove (splitterLine);
}
if (this.Subviews.Contains(toRemove)) {
this.Subviews.Remove (toRemove);
}
if(!this.Subviews.Contains(toFullSize)) {
this.Add (toFullSize);
}
toFullSize.X = 0;
toFullSize.Y = 0;
toFullSize.Width = Dim.Fill ();
toFullSize.Height = Dim.Fill ();
}
/// <summary>
/// The left or top panel of the <see cref="SplitContainer"/>
/// (depending on <see cref="Orientation"/>). Add panel contents