|
@@ -0,0 +1,112 @@
|
|
|
+using Comal.Classes;
|
|
|
+using InABox.DynamicGrid;
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.ComponentModel;
|
|
|
+using System.Linq;
|
|
|
+using System.Runtime.CompilerServices;
|
|
|
+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 PRSDesktop;
|
|
|
+
|
|
|
+/// <summary>
|
|
|
+/// Interaction logic for SupplierBillEditLayout.xaml
|
|
|
+/// </summary>
|
|
|
+public partial class SupplierBillEditLayout : DynamicEditorGridLayout, INotifyPropertyChanged
|
|
|
+{
|
|
|
+ public override bool TabStripVisible
|
|
|
+ {
|
|
|
+ get { return Editors.TabStripVisible; }
|
|
|
+ set { Editors.TabStripVisible = value; }
|
|
|
+ }
|
|
|
+
|
|
|
+ private double _documentWidth = 400;
|
|
|
+ public double DocumentWidth
|
|
|
+ {
|
|
|
+ get => _documentWidth;
|
|
|
+ set
|
|
|
+ {
|
|
|
+ _documentWidth = value;
|
|
|
+ OnPropertyChanged();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public SupplierBillEditLayout()
|
|
|
+ {
|
|
|
+ InitializeComponent();
|
|
|
+ }
|
|
|
+
|
|
|
+ public override void LoadPages(IEnumerable<IDynamicEditorPage> pages)
|
|
|
+ {
|
|
|
+ Editors.Items.Clear();
|
|
|
+ OtherPages.Items.Clear();
|
|
|
+ DocumentControl.Content = null;
|
|
|
+
|
|
|
+ foreach (var page in pages.OrderBy(x => x.PageType).ThenBy(x => x.Order()).ThenBy(x => x.Caption()))
|
|
|
+ {
|
|
|
+ if(page is DynamicDocumentGrid<BillDocument, Bill, BillLink>)
|
|
|
+ {
|
|
|
+ DocumentControl.Content = page;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ 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;
|
|
|
+ OtherPages.SelectedIndex = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ private bool bChanging;
|
|
|
+
|
|
|
+ public event PropertyChangedEventHandler? PropertyChanged;
|
|
|
+
|
|
|
+ protected void OnPropertyChanged([CallerMemberName] string propertyName = "")
|
|
|
+ {
|
|
|
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
|
+ }
|
|
|
+
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|