using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace InABox.DynamicGrid
{
///
/// Interaction logic for VerticalDynamicEditorGridLayout.xaml
///
public partial class VerticalDynamicEditorGridLayout : DynamicEditorGridLayout
{
public override bool TabStripVisible
{
get { return Editors.TabStripVisible; }
set { Editors.TabStripVisible = value; }
}
public VerticalDynamicEditorGridLayout()
{
InitializeComponent();
}
public override void LoadPages(IEnumerable pages)
{
Editors.Items.Clear();
OtherPages.Items.Clear();
foreach (var page in pages.OrderBy(x => x.PageType).ThenBy(x => x.Order()).ThenBy(x => x.Caption()))
{
var tab = new DynamicTabItem();
tab.Header = page.Caption();
if (page is FrameworkElement element)
element.Margin = new Thickness(0, 2, 0, 0);
tab.Content = page;
if(page is DynamicEditorGrid.DynamicEditPage)
{
Editors.Items.Add(tab);
}
else
{
OtherPages.Items.Add(tab);
}
}
Editors.SelectedIndex = 0;
}
private bool bChanging;
private void Editors_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (bChanging) return;
if ((e.OriginalSource != Editors && e.OriginalSource != OtherPages) || e.OriginalSource is not DynamicTabControl tabControl) return;
if (tabControl.SelectedItem is not DynamicTabItem tab) return;
bChanging = true;
try
{
if (tab is not null && tab.Content is IDynamicEditorPage page)
{
SelectPage(page);
}
}
finally
{
bChanging = false;
}
}
private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
{
EditorRow.MaxHeight = e.NewSize.Height - 50;
}
}
}