DocumentEditor.xaml.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. using System.Collections.Generic;
  2. using System.ComponentModel;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using InABox.Core;
  8. using InABox.Wpf;
  9. namespace InABox.DynamicGrid
  10. {
  11. /// <summary>
  12. /// Interaction logic for PDFViewer.xaml
  13. /// </summary>
  14. public partial class DocumentEditor : ThemableWindow
  15. {
  16. private IEntityDocument[] _documents;
  17. private readonly bool bReady;
  18. public DocumentEditor(params IEntityDocument[] documents)
  19. {
  20. //PrintAllowed = false;
  21. SaveAllowed = false;
  22. InitializeComponent();
  23. _documents = documents;
  24. CreateTabs(CheckSuperceded(documents));
  25. bReady = true;
  26. Documents.SelectedIndex = -1;
  27. }
  28. private List<IEntityDocument> CheckSuperceded(IEntityDocument[] documents)
  29. {
  30. var docs = documents.ToList();
  31. if (docs.Count() > 1)
  32. {
  33. docs.Sort((x, y) => x.Superceded.CompareTo(y.Superceded)); //ascending
  34. }
  35. return docs;
  36. }
  37. private void CreateTabs(List<IEntityDocument> documents)
  38. {
  39. foreach (var doc in documents)
  40. {
  41. var tab = new DynamicTabItem();
  42. tab.Header = Path.GetFileName(doc.DocumentLink.FileName);
  43. tab.Tag = doc;
  44. Documents.Items.Add(tab);
  45. }
  46. }
  47. //public bool PrintAllowed { get; set; }
  48. public bool SaveAllowed { get; set; }
  49. public bool ButtonsVisible { get; set; }
  50. public string Watermark { get; set; }
  51. private bool bClosing = false;
  52. private void Documents_SelectionChanged(object sender, SelectionChangedEventArgs e)
  53. {
  54. if (!bReady || (!ButtonsVisible && bClosing))
  55. return;
  56. for (var i = 0; i < e.RemovedItems.Count; i++)
  57. {
  58. if (e.RemovedItems[i] is DynamicTabItem item)
  59. {
  60. if (item.Content is IDocumentEditor viewer)
  61. viewer.Document = null;
  62. item.Content = null;
  63. }
  64. }
  65. for (var i = 0; i < e.AddedItems.Count; i++)
  66. {
  67. var item = e.AddedItems[i] as DynamicTabItem;
  68. if (item != null)
  69. {
  70. var doc = item.Tag as IEntityDocument;
  71. if (doc != null)
  72. {
  73. IDocumentEditor editor = null;
  74. var extension = Path.GetExtension(doc.DocumentLink.FileName).ToLower();
  75. if (extension.Equals(".pdf"))
  76. {
  77. var pdf = new PDFEditorControl();
  78. //pdf.PrintAllowed = PrintAllowed;
  79. pdf.SaveAllowed = SaveAllowed;
  80. pdf.ButtonsVisible = ButtonsVisible;
  81. pdf.Watermark = Watermark;
  82. editor = pdf;
  83. }
  84. else if (extension.Equals(".png") || extension.Equals(".bmp") || extension.Equals(".jpg") || extension.Equals(".jpeg"))
  85. {
  86. editor = new ImageEditorControl();
  87. }
  88. else if (extension.Equals(".xls") || extension.Equals(".xlsx"))
  89. {
  90. editor = new SpreadsheetEditorControl();
  91. }
  92. else if (extension.Equals(".doc") || extension.Equals(".docx") || extension.Equals(".rtf") || extension.Equals(".html") || extension.Equals(".htm") || extension.Equals(".txt"))
  93. {
  94. editor = new RTFEditorControl();
  95. }
  96. if (editor != null)
  97. {
  98. item.Content = editor;
  99. editor.Document = doc;
  100. }
  101. }
  102. }
  103. }
  104. e.Handled = true;
  105. }
  106. protected override void OnClosing(CancelEventArgs e)
  107. {
  108. bClosing = true;
  109. base.OnClosing(e);
  110. Documents.SelectedIndex = -1;
  111. }
  112. private void Window_Loaded(object sender, RoutedEventArgs e)
  113. {
  114. //Editor.Document = _documents.FirstOrDefault();
  115. }
  116. private void OKButton_Click(object sender, RoutedEventArgs e)
  117. {
  118. //Editor.Document = null;
  119. DialogResult = true;
  120. Close();
  121. }
  122. private void CancelButton_Click(object sender, RoutedEventArgs e)
  123. {
  124. DialogResult = false;
  125. Close();
  126. }
  127. }
  128. }