DocumentEditor.xaml.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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. if (editor != null)
  91. {
  92. item.Content = editor;
  93. editor.Document = doc;
  94. }
  95. }
  96. }
  97. }
  98. e.Handled = true;
  99. }
  100. protected override void OnClosing(CancelEventArgs e)
  101. {
  102. bClosing = true;
  103. base.OnClosing(e);
  104. Documents.SelectedIndex = -1;
  105. }
  106. private void Window_Loaded(object sender, RoutedEventArgs e)
  107. {
  108. //Editor.Document = _documents.FirstOrDefault();
  109. }
  110. private void OKButton_Click(object sender, RoutedEventArgs e)
  111. {
  112. //Editor.Document = null;
  113. DialogResult = true;
  114. Close();
  115. }
  116. private void CancelButton_Click(object sender, RoutedEventArgs e)
  117. {
  118. DialogResult = false;
  119. Close();
  120. }
  121. }
  122. }