using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using com.healthmarketscience.jackcess.impl;
using Comal.Classes;
using InABox.Clients;
using InABox.Configuration;
using InABox.Core;
using InABox.DynamicGrid;
using InABox.Wpf;
using Syncfusion.Pdf.Parsing;
namespace PRSDesktop;
public class JobRequisitionPanelSettings : IUserConfigurationSettings, ISplitPanelSettings
{
public DynamicSplitPanelView ViewType { get; set; } = DynamicSplitPanelView.Combined;
public int TabIndex { get; set; }
public double AnchorWidth { get; set; } = 500;
}
///
/// Interaction logic for JobMaterialPanel.xaml
///
public partial class JobRequisitionPanel : UserControl, IPanel, IMasterDetailControl
{
private JobRequisitionPanelSettings Settings;
public JobRequisitionPanel()
{
InitializeComponent();
}
private void LoadSettings()
{
Settings = new UserConfiguration().Load();
SplitPanel.AnchorWidth = Settings.AnchorWidth;
SplitPanel.View = Settings.ViewType;
SetDetailDisplay();
}
private void SetDetailDisplay()
{
RequisitionsColumn.Width = Settings.ViewType == DynamicSplitPanelView.Combined
? new GridLength(1, GridUnitType.Star)
: new GridLength(0, GridUnitType.Pixel);
SummaryColumn.Width = Settings.ViewType == DynamicSplitPanelView.Detail
? new GridLength(1, GridUnitType.Star)
: new GridLength(0, GridUnitType.Pixel);
}
protected void SaveSettings()
{
Settings.AnchorWidth = SplitPanel.AnchorWidth;
Settings.ViewType = SplitPanel.View;
Settings.SaveUser();
}
public Job? Master
{
get => Requisitions.Master;
set
{
Requisitions.Master = value;
Summary.JobID = value?.ID;
}
}
public bool IsReady { get; set; }
public event DataModelUpdateEvent? OnUpdateDataModel;
public void CreateToolbarButtons(IPanelHost host)
{
}
public void Setup()
{
LoadSettings();
Requisitions.Refresh(true, false);
Summary.Refresh(true,false);
Items.Refresh(true, false);
}
public void Shutdown(CancelEventArgs? cancel)
{
}
public void Refresh()
{
if (!IsReady)
return;
if (SplitPanel.View == DynamicSplitPanelView.Detail)
Summary.Refresh(false,true);
else
Requisitions.Refresh(false, true);
}
public string SectionName => "Job Requisitions";
public DataModel DataModel(Selection selection)
{
var ids = Requisitions.ExtractValues(x => x.ID, selection).ToArray();
return new AutoDataModel(new Filter(c => c.ID).InList(ids));
}
public Dictionary Selected()
{
return new Dictionary
{
{ typeof(JobRequisition).EntityName(), Requisitions.SelectedRows }
};
}
public void Heartbeat(TimeSpan time)
{
}
private void Requisitions_OnSelectItem(object sender, DynamicGridSelectionEventArgs e)
{
Items.Master = e.Rows?.FirstOrDefault()?.ToObject();
Items.Refresh(false, true);
}
private void SplitPanel_OnChanged(object sender, DynamicSplitPanelSettings e)
{
var changedView = e.View != Settings.ViewType;
SaveSettings();
if (changedView)
{
SetDetailDisplay();
Refresh();
}
}
}