using System; using System.Linq; using System.Windows; using System.Windows.Controls; using Comal.Classes; using InABox.Core; using PRSDesktop.Utils; using Syncfusion.Windows.Controls.Grid; namespace PRSDesktop { public class TempateSelectedArgs : EventArgs { public FactoryTemplate Template { get; set; } } public delegate void TemplateSelectedHandler(object sender, TempateSelectedArgs e); /// /// Interaction logic for SetoutTemplateList.xaml /// public partial class SetoutTemplateList : UserControl { private FactorySetup _settings; public SetoutTemplateList() { InitializeComponent(); Templates = new PackableList(); Grid.Model.ColumnCount = 5; Grid.Model.ColumnWidths[0] = 0; Grid.Model.ColumnWidths[1] = 40; Grid.Model.ColumnWidths[2] = 0; Grid.Model.ColumnWidths[3] = 100; Grid.Model.ColumnWidths[4] = 20; Grid.Model.HeaderColumns = 0; } public PackableList Templates { get; } public event TemplateSelectedHandler TemplateSelected; private void SelectTemplate(FactoryTemplate template) { //Null check makes sure the main page is attached to the event if (TemplateSelected != null) TemplateSelected(this, new TempateSelectedArgs { Template = template }); } public void Load(FactorySetup settings) { _settings = settings; Templates.Clear(); Templates.AddRange(_settings.Templates.OrderBy(x => x.Code)); Grid.Model.RowCount = 0; Grid.Model.RowCount = Templates.Count + 2; } private void Grid_SizeChanged(object sender, SizeChangedEventArgs e) { Grid.Model.ColumnWidths[2] = e.NewSize.Width - 160; } private void Grid_QueryCellInfo(object sender, GridQueryCellInfoEventArgs e) { try { var row = e.Cell.RowIndex - 1; var col = e.Cell.ColumnIndex; switch (col) { case 0: if (row == -1) { e.Style.CellValue = "ID"; } else { e.Style.CellType = "Static"; e.Style.CellValue = row < Templates.Count ? Templates[row].ID : Guid.Empty; } e.Style.VerticalAlignment = VerticalAlignment.Center; break; case 1: if (row == -1) e.Style.CellValue = "Code"; else e.Style.CellValue = row < Templates.Count ? Templates[row].Code : ""; e.Style.VerticalAlignment = VerticalAlignment.Center; break; case 2: if (row == -1) e.Style.CellValue = "Template Name"; else e.Style.CellValue = row < Templates.Count ? Templates[row].Name : "Add new.."; e.Style.VerticalAlignment = VerticalAlignment.Center; break; case 3: if (row == -1) { e.Style.CellValue = "Group"; } else { e.Style.CellType = "ComboBox"; e.Style.ItemsSource = _settings.Groups.Select(x => new { ID = x.Group, Name = x.Group }).ToList(); e.Style.DropDownStyle = GridDropDownStyle.AutoComplete; e.Style.DisplayMember = "Name"; e.Style.ValueMember = "ID"; e.Style.CellValue = row < Templates.Count ? Templates[row].Group : "Add new.."; } e.Style.VerticalAlignment = VerticalAlignment.Center; break; case 4: if (row < Templates.Count) GridUtils.SetButtonImage(e.Style, PRSDesktop.Resources.delete, Grid.Model, col); else GridUtils.SetButtonImage(e.Style, null, Grid.Model, col); break; } } catch (Exception err) { Logger.Send(LogType.Error, "", string.Format("*** Unknown Error: {0}\n{1}", err.Message, err.StackTrace)); } } private void Grid_CommitCellInfo(object sender, GridCommitCellInfoEventArgs e) { if (e.Cell.ColumnIndex == 1 || e.Cell.ColumnIndex == 2 || e.Cell.ColumnIndex == 3) { FactoryTemplate template = null; if (e.Style.RowIndex > Templates.Count) { template = new FactoryTemplate { ID = Guid.NewGuid() }; foreach (var section in _settings.Sections) template.Stages.Add( new StageTemplate { SectionID = section.ID, Sequence = SequenceType.Link, Minutes = 0, QualityChecks = section.QualityChecks } ); Templates.Add(template); } else { template = Templates[e.Style.RowIndex - 1]; } if (e.Cell.ColumnIndex == 1) template.Code = e.Style.CellValue.ToString(); else if (e.Cell.ColumnIndex == 2) template.Name = e.Style.CellValue.ToString(); else if (e.Cell.ColumnIndex == 3) template.Group = e.Style.CellValue.ToString(); Grid.Model.RowCount = 0; Grid.Model.RowCount = Templates.Count + 2; } } private void Grid_CellClick(object sender, GridCellClickEventArgs e) { var row = e.RowIndex - 1; if (row > -1 && row < Templates.Count) { var document = Templates[row]; if (e.ColumnIndex == 4) { Templates.Remove(document); e.Handled = true; } } if (e.Handled) { Grid.Model.RowCount = 0; Grid.Model.RowCount = Templates.Count + 2; } if (row > -1 && row < Templates.Count) SelectTemplate(Templates[row]); else SelectTemplate(null); } } }