DocumentEditor.xaml.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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. var item = e.RemovedItems[i] as DynamicTabItem;
  59. if (item != null)
  60. {
  61. var viewer = item.Content as IDocumentEditor;
  62. if (viewer != null)
  63. viewer.Document = null;
  64. item.Content = null;
  65. }
  66. }
  67. for (var i = 0; i < e.AddedItems.Count; i++)
  68. {
  69. var item = e.AddedItems[i] as DynamicTabItem;
  70. if (item != null)
  71. {
  72. var doc = item.Tag as IEntityDocument;
  73. if (doc != null)
  74. {
  75. IDocumentEditor editor = null;
  76. var extension = Path.GetExtension(doc.DocumentLink.FileName).ToLower();
  77. if (extension.Equals(".pdf"))
  78. {
  79. var pdf = new PDFEditorControl();
  80. //pdf.PrintAllowed = PrintAllowed;
  81. pdf.SaveAllowed = SaveAllowed;
  82. pdf.ButtonsVisible = ButtonsVisible;
  83. pdf.Watermark = Watermark;
  84. editor = pdf;
  85. }
  86. else if (extension.Equals(".png") || extension.Equals(".bmp") || extension.Equals(".jpg") || extension.Equals(".jpeg"))
  87. {
  88. editor = new ImageEditorControl();
  89. }
  90. else if (extension.Equals(".xls") || extension.Equals(".xlsx"))
  91. {
  92. editor = new SpreadsheetEditorControl();
  93. }
  94. else if (extension.Equals(".doc") || extension.Equals(".docx") || extension.Equals(".rtf") || extension.Equals(".html") || extension.Equals(".htm") || extension.Equals(".txt"))
  95. {
  96. editor = new RTFEditorControl();
  97. }
  98. if (editor != null)
  99. {
  100. item.Content = editor;
  101. editor.Document = doc;
  102. }
  103. }
  104. }
  105. }
  106. e.Handled = true;
  107. }
  108. protected override void OnClosing(CancelEventArgs e)
  109. {
  110. bClosing = true;
  111. base.OnClosing(e);
  112. Documents.SelectedIndex = -1;
  113. }
  114. private void Window_Loaded(object sender, RoutedEventArgs e)
  115. {
  116. //Editor.Document = _documents.FirstOrDefault();
  117. }
  118. private void OKButton_Click(object sender, RoutedEventArgs e)
  119. {
  120. //Editor.Document = null;
  121. DialogResult = true;
  122. Close();
  123. }
  124. private void CancelButton_Click(object sender, RoutedEventArgs e)
  125. {
  126. DialogResult = false;
  127. Close();
  128. }
  129. }
  130. }