Rich 2aeee7fdbc Added MyItemInfo property
Fixed format of ToString for AnnotationAuditInfo
Fixed format of ToString for ContentAuditInfo
Fixed Restore if no next item
Fixed ActiveParent logic after restore
Added Timing logic and then Commented it
Fixed Logic when there is not a NextNode
Timing Debug code
Update UserID when saving annotation
Commented Timing Debug
Created and used FixPath - StepPath
Use MyItemInfo.SearchPath if Content doesn't have path
Refresh Change List from Timer.Tick
Added Timer for Refresh
Added code to refresh ChangeBar
Added and Commented timing debug
Changed logic for saving ROUsages
Added Closed Property that is set when the handle is destroyed
Don't refresh StepRTB if it is closed
2011-08-23 14:14:14 +00:00

909 lines
31 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using VEPROMS.CSLA.Library;
using System.IO;
using System.Text.RegularExpressions;
namespace Volian.Controls.Library
{
public partial class DisplayHistory : UserControl
{
#region Events
public event DisplayHistoryReportEvent ChronologyPrintRequest;
public event DisplayHistoryReportEvent SummaryPrintRequest;
private void OnChronologyPrintRequest(DisplayHistoryReportEventArgs args)
{
if (ChronologyPrintRequest != null)
ChronologyPrintRequest(this, args);
}
private void OnSummaryPrintRequest(DisplayHistoryReportEventArgs args)
{
if (SummaryPrintRequest != null)
SummaryPrintRequest(this, args);
}
public event DisplayHistoryEvent HistorySelectionChanged;
private void OnHistorySelectionChanged(DisplayHistoryEventArgs args)
{
if (HistorySelectionChanged != null)
HistorySelectionChanged(this, args);
}
public event ItemRestoredHandler ItemRestored;
private void OnItemRestored(ItemInfo restoredItemInfo)
{
if (ItemRestored != null) ItemRestored(restoredItemInfo);
}
#endregion
private ContentAuditInfoList _ChronologyAuditList;
private ContentAuditInfoList _SummaryAuditList;
private AnnotationAuditInfoList _AnnotationList;
private ProcedureInfo _MyProcedureInfo;
public ProcedureInfo MyProcedureInfo
{
get { return _MyProcedureInfo; }
set
{
if (value is ProcedureInfo && _MyProcedureInfo is ProcedureInfo && value.ItemID == _MyProcedureInfo.ItemID)
return;
_MyProcedureInfo = value;
if (_MyProcedureInfo != null && this.Visible)
WalkProcedure();
}
}
private ItemInfo _MyItemInfo;
public ItemInfo MyItemInfo
{
get { return _MyItemInfo; }
set
{
if (value is ItemInfo && _MyItemInfo is ItemInfo && value.ItemID == _MyItemInfo.ItemID)
return;
_MyItemInfo = value;
if (_MyItemInfo != null)
{
MyProcedureInfo = _MyItemInfo.MyProcedure;
if(this.Visible)
UpdateHistory();
}
}
}
private EditItem _MyEditItem;
public EditItem MyEditItem
{
get { return _MyEditItem; }
set
{
_MyEditItem = value;
if (value != null)
MyItemInfo = value.MyItemInfo;
else
MyItemInfo = null;
}
}
public void RefreshList()
{
if (this.Visible)
{
WalkProcedure();
UpdateHistory();
}
}
public DisplayHistory()
{
InitializeComponent();
myRTB.FormatFont = null;
tabControl1.SelectedTab = tabItem1;// Start with Change List
}
private void lbChanges_SelectedIndexChanged(object sender, EventArgs e)
{
if (lbChanges.SelectedIndex > -1)
{
if (lbChanges.SelectedIndex < _ChronologyAuditList.Count)
{
ContentAuditInfo cai = _ChronologyAuditList[lbChanges.SelectedIndex];
OnHistorySelectionChanged(new DisplayHistoryEventArgs(cai.ItemID));
}
else
{
AnnotationAuditInfo aai = _AnnotationList[lbChanges.SelectedIndex - _ChronologyAuditList.Count];
OnHistorySelectionChanged(new DisplayHistoryEventArgs(aai.ItemID));
}
}
}
private void UpdateHistory()
{
this.Cursor = Cursors.WaitCursor;
//DateTime start = DateTime.Now;
//Console.WriteLine(start);
#region setup
btnRestore.Enabled = false;
myRTB.Clear();
myVFG.Clear();
tvAudits.Nodes.Clear();
if (MyItemInfo == null)
{
this.Cursor = Cursors.Default;
return;
}
MyItemInfo.RefreshItemAnnotations();
#endregion
//if (AnnotationOnly)
//{
#region annotation deleted
//annotation deleted by itemid
TreeNode annotationDeleted = null;
AnnotationAuditInfoList aail = AnnotationAuditInfoList.GetByItemID(MyItemInfo.ItemID);
foreach (AnnotationAuditInfo aai in aail)
{
TreeNode tn = null;
if (aai.DeleteStatus > 0)
{
if (annotationDeleted == null)
annotationDeleted = tvAudits.Nodes.Add("Deleted Annotations");
if (tn == null)
{
AnnotationTypeInfo ati = AnnotationTypeInfo.Get(aai.TypeID);
tn = annotationDeleted.Nodes.Add(ati.Name);
}
TreeNode cn = tn.Nodes.Add(aai.ToString());
cn.Tag = aai;
}
}
//end annotation deleted
#endregion
#region annotation changes
//annotation change by annotationid
TreeNode annotationHistory = null;
if (MyItemInfo.ItemAnnotationCount > 0)
{
foreach (AnnotationInfo ai in MyItemInfo.ItemAnnotations)
{
TreeNode tn = null;
aail = AnnotationAuditInfoList.GetByAnnotationID(ai.AnnotationID);
foreach (AnnotationAuditInfo aai in aail)
{
if (aai.DTS != ai.DTS)
{
if (annotationHistory == null)
annotationHistory = tvAudits.Nodes.Add("Annotation History");
if (tn == null)
tn = annotationHistory.Nodes.Add(string.Format("{0} - {1}", ai.MyAnnotationType.Name, ai.SearchText));
TreeNode cn = tn.Nodes.Add(aai.ToString());
cn.Tag = aai;
}
}
}
}
//end annotation change
#endregion
// return;
//}
#region content changes
//content changes
TreeNode contentHistory = null;
if (MyItemInfo == null) return;
ContentAuditInfoList cail = ContentAuditInfoList.Get(MyItemInfo.ContentID);
// ContentAuditInfoList cail = ContentAuditInfoList.GetChronology(MyItemInfo.MyProcedure.ItemID, MyItemInfo.ItemID, false);
ContentInfo ci = ContentInfo.Get(MyItemInfo.ContentID);
foreach (ContentAuditInfo cai in cail)
{
if (cai.DeleteStatus == 0)
{
if (cai.Type == 20008)
{
GridAuditInfoList gail = GridAuditInfoList.Get(cai.ContentID);
foreach (GridAuditInfo gai in gail)
{
if (gai.DeleteStatus == 0)
{
if (contentHistory == null)
contentHistory = tvAudits.Nodes.Add("Content Changes"); //contentHistory = tvAudits.Nodes.Add("Content History");
TreeNode tn = contentHistory.Nodes.Add(gai.ToString());
tn.Tag = gai;
}
}
break;
}
else if (cai.DTS != ci.DTS)
{
if (contentHistory == null)
contentHistory = tvAudits.Nodes.Add("Content Changes"); //contentHistory = tvAudits.Nodes.Add("Content History");
TreeNode tn = contentHistory.Nodes.Add(cai.ToString());
tn.Tag = cai;
}
}
}
//end content changes
#endregion
#region items
TreeNode deletedItems = null;
TreeNode previousItem = null;
TreeNode nextItem = null;
TreeNode procedurePart = null;
TreeNode sectionPart = null;
TreeNode cautionPart = null;
TreeNode notePart = null;
TreeNode rnoPart = null;
TreeNode stepPart = null;
TreeNode tablePart = null;
#endregion
ItemAuditInfoList iail = ItemAuditInfoList.Get(MyItemInfo.ItemID);
foreach (ItemAuditInfo iai in iail)
{
#region old style
// switch (iai.Level)
// {
// #region previous item
// case 0: //previous item
// {
// #region old style
// //if (previousItem == null)
// // previousItem = tvAudits.Nodes.Add("Deleted Previous Item"); //previousItem = tvAudits.Nodes.Add("Previous Item");
// //TreeNode tn = previousItem.Nodes.Add(iai.ToString());
// //tn.Tag = iai;
// #endregion
// #region new style
// if (deletedItems == null)
// deletedItems = tvAudits.Nodes.Add("Deleted Items");
// TreeNode tnn = deletedItems.Nodes.Add(iai.ToString());
// tnn.Tag = iai;
// #endregion
// break;
// }
// #endregion
// #region next item
// case 1: //next item
// {
// #region old style
// //if (nextItem == null)
// // nextItem = tvAudits.Nodes.Add("Deleted Next Item"); //nextItem = tvAudits.Nodes.Add("Next Item");
// //TreeNode tn = nextItem.Nodes.Add(iai.ToString());
// //tn.Tag = iai;
// #endregion
// #region new style
// if (deletedItems == null)
// deletedItems = tvAudits.Nodes.Add("Deleted Items");
// TreeNode tnn = deletedItems.Nodes.Add(iai.ToString());
// tnn.Tag = iai;
// #endregion
// break;
// }
// #endregion
// case 2: //parts
// {
// #region old style
// //PartAuditInfoList pail = null;
// //pail = PartAuditInfoList.GetByDeleteStatus(iai.DeleteStatus);
// //if (pail.Count == 0)
// // pail = PartAuditInfoList.GetByItemID(iai.ItemID);
// //foreach (PartAuditInfo pai in pail)
// //{
// // if (pai.ContentID == MyItemInfo.ContentID)
// // {
// // switch (pai.FromType)
// // {
// // #region procedure part
// // case 1: //procedures
// // {
// // if (procedurePart == null)
// // procedurePart = tvAudits.Nodes.Add("Deleted Procedures"); //procedurePart = tvAudits.Nodes.Add("Procedures");
// // TreeNode tn = procedurePart.Nodes.Add(iai.ToString());
// // tn.Tag = iai;
// // break;
// // }
// // #endregion
// // #region section part
// // case 2: //sections
// // {
// // if (sectionPart == null)
// // sectionPart = tvAudits.Nodes.Add("Deleted Sections"); //sectionPart = tvAudits.Nodes.Add("Sections");
// // TreeNode tn = sectionPart.Nodes.Add(iai.ToString());
// // tn.Tag = iai;
// // break;
// // }
// // #endregion
// // #region caution part
// // case 3: //cautions
// // {
// // if (cautionPart == null)
// // cautionPart = tvAudits.Nodes.Add("Deleted Cautions"); //cautionPart = tvAudits.Nodes.Add("Cautions");
// // TreeNode tn = cautionPart.Nodes.Add(iai.ToString());
// // tn.Tag = iai;
// // break;
// // }
// // #endregion
// // #region note part
// // case 4: //notes
// // {
// // if (notePart == null)
// // notePart = tvAudits.Nodes.Add("Deleted Notes"); //notePart = tvAudits.Nodes.Add("Notes");
// // TreeNode tn = notePart.Nodes.Add(iai.ToString());
// // tn.Tag = iai;
// // break;
// // }
// // #endregion
// // #region rno part
// // case 5: //rnos
// // {
// // if (rnoPart == null)
// // rnoPart = tvAudits.Nodes.Add("Deleted RNOs"); //rnoPart = tvAudits.Nodes.Add("RNOs");
// // TreeNode tn = rnoPart.Nodes.Add(iai.ToString());
// // tn.Tag = iai;
// // break;
// // }
// // #endregion
// // #region step part
// // case 6: //steps
// // {
// // if (stepPart == null)
// // stepPart = tvAudits.Nodes.Add("Deleted Steps"); //stepPart = tvAudits.Nodes.Add("Steps");
// // TreeNode tn = stepPart.Nodes.Add(iai.ToString());
// // tn.Tag = iai;
// // break;
// // }
// // #endregion
// // #region table part
// // case 7: //tables
// // {
// // if (tablePart == null)
// // tablePart = tvAudits.Nodes.Add("Deleted Tables"); //tablePart = tvAudits.Nodes.Add("Tables");
// // TreeNode tn = tablePart.Nodes.Add(iai.ToString());
// // tn.Tag = iai;
// // break;
// // }
// // #endregion
// // }
// // }
// //}
// #endregion
// #region new style
// if (deletedItems == null)
// deletedItems = tvAudits.Nodes.Add("Deleted Items");
// TreeNode tnn = deletedItems.Nodes.Add(iai.ToString());
// tnn.Tag = iai;
// #endregion
// break;
// }
//}
#endregion
#region new style
if (deletedItems == null)
deletedItems = tvAudits.Nodes.Add("Deleted Items");
TreeNode tnn = deletedItems.Nodes.Add(iai.ToString());
tnn.Tag = iai;
#endregion
}
//Console.WriteLine("UpdateHistory: {0} seconds",TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks).TotalSeconds);
this.Cursor = Cursors.Default;
}
private void WalkProcedure()
{
//return;
this.Cursor = Cursors.WaitCursor;
//DateTime start = DateTime.Now;
//Console.WriteLine(start);
lbChanges.Items.Clear();
if (MyProcedureInfo == null)
{
this.Cursor = Cursors.Default;
btnViewSummaryReport.Enabled = btnViewChronologyReport.Enabled = lbChanges.Items.Count > 0;
return;
}
ContentAuditInfoList cail2 = ContentAuditInfoList.GetChronology(MyProcedureInfo.ItemID, MyProcedureInfo.ItemID, false);
//Console.WriteLine("WalkProcedure cail2: {0} seconds", TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks).TotalSeconds);
_ChronologyAuditList = cail2;
ContentAuditInfoList cail3 = ContentAuditInfoList.GetSummary(MyProcedureInfo.ItemID, MyProcedureInfo.ItemID, false);
_SummaryAuditList = cail3;
AnnotationAuditInfoList aail2 = AnnotationAuditInfoList.GetChronology(MyProcedureInfo.ItemID, MyProcedureInfo.ItemID);
//Console.WriteLine("WalkProcedure aail2: {0} seconds", TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks).TotalSeconds);
_AnnotationList = aail2;
foreach (ContentAuditInfo cai in cail2)
{
string itemTitle = FixPath(cai.Path);
lbChanges.Items.Add(string.Format("{4} item {0} by {1} on {2} @ {3}", cai.ActionWhat, cai.UserID, cai.ActionWhen == DateTime.MinValue ? cai.DTS.ToShortDateString() : cai.ActionWhen.ToShortDateString(), cai.ActionWhen == DateTime.MinValue ? cai.DTS.ToShortTimeString() : cai.ActionWhen.ToShortTimeString(), itemTitle));
}
foreach (AnnotationAuditInfo aai in aail2)
{
string stepnum = string.Empty;
foreach (ContentAuditInfo cai in cail2)
{
if (cai.ContentID == aai.IContentID)
{
stepnum = FixPath(cai.Path);
break;
}
}
if (stepnum == string.Empty)
{
ItemInfo iii = aai.MyItemInfo;
if(iii != null)
stepnum = FixPath(iii.SearchPath);
}
lbChanges.Items.Add(string.Format("{0} Annotation {1}", stepnum, aai.ToString()));
}
//Console.WriteLine("WalkProcedure fini: {0} seconds", TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks).TotalSeconds);
this.Cursor = Cursors.Default;
btnViewSummaryReport.Enabled = btnViewChronologyReport.Enabled = lbChanges.Items.Count > 0;
return;
string itemType = string.Empty;
lbChanges.Items.Clear();
ItemInfo myproc = _MyItemInfo.MyProcedure;
ItemInfo ii = myproc;
int lenNumber = myproc.DisplayNumber.Length + 2;
if (ii == null) return;
while (ii != null && ii.MyProcedure.ItemID == myproc.ItemID)
{
itemType = ii.IsCaution ? "Caution for" : ii.IsNote ? "Note for" : ii.IsStep ? "Step" : "Item";
//items
if (ii.IsItemNew)
{
lbChanges.Items.Add(string.Format("{4} {0} added by {1} on {2} @ {3}", ii.ShortPath.Substring(lenNumber), ii.UserID, ii.DTS.ToShortDateString(), ii.DTS.ToShortTimeString(), itemType));
//int k = lbChanges.Items.Add(string.Format("{0} @ {1} - {2}", "Item Added", ii.DTS.ToString(), ii.DisplayText));
//ListViewItem lvi = new ListViewItem("Item Added");
//lvi.SubItems.Add(ii.ItemID.ToString());
//lvi.SubItems.Add(ii.DTS.ToString());
//lvi.SubItems.Add(ii.DisplayText);
//lvi.SubItems.Add(ii.ShortPath.Substring(lenNumber));
//listView1.Items.Add(lvi);
if (ii.IsItemChanged)
{
ContentAuditInfoList cail = ContentAuditInfoList.Get(ii.ContentID);
if (cail.Count > 0)
{
foreach (ContentAuditInfo cai in cail)
{
if (cai.Text != string.Empty)
{
lbChanges.Items.Add(string.Format("{4} {0} changed by {1} on {2} @ {3}", ii.ShortPath.Substring(lenNumber), ii.MyContent.UserID, ii.MyContent.DTS.ToShortDateString(), ii.MyContent.DTS.ToShortTimeString(), itemType));
}
}
}
}
}
else if (ii.IsItemChanged)
{
//Results.Add(ii);
lbChanges.Items.Add(string.Format("{4} {0} changed by {1} on {2} @ {3}", ii.ShortPath.Substring(lenNumber), ii.MyContent.UserID, ii.MyContent.DTS.ToShortDateString(), ii.MyContent.DTS.ToShortTimeString(), itemType));
//int k = lbChanges.Items.Add(string.Format("{0} @ {1} - {2}", "Content Changed", ii.DTS.ToString(), ii.DisplayText));
//ListViewItem lvi = new ListViewItem("Item Changed");
//lvi.SubItems.Add(ii.ItemID.ToString());
//lvi.SubItems.Add(ii.MyContent.DTS.ToString());
//lvi.SubItems.Add(ii.DisplayText);
//lvi.SubItems.Add(ii.ShortPath.Substring(lenNumber));
//listView1.Items.Add(lvi);
}
ItemAuditInfoList iail = ItemAuditInfoList.Get(ii.ItemID);
foreach (ItemAuditInfo iai in iail)
{
if (iai.DeleteStatus > 0 && iai.Level == 1)
{
lbChanges.Items.Add(string.Format("{4} after {0} deleted by {1} on {2} @ {3}", ii.ShortPath.Substring(lenNumber), iai.UserID, iai.DTS.ToShortDateString(), iai.DTS.ToShortTimeString(), itemType));
//int k = lbChanges.Items.Add(string.Format("{0} @ {1} - {2}", "Item Deleted", ii.DTS.ToString(), "TODO: figure out how to get iai.DisplayText"));
//ListViewItem lvi = new ListViewItem("Item Deleted");
//lvi.SubItems.Add(iai.ItemID.ToString());
//lvi.SubItems.Add(iai.DTS.ToString()); //iai.MyContent.DTS.ToString()
//lvi.SubItems.Add("TODO: figure out how to get iai.DisplayText"); //TODO: figure out how to get iai.DisplayText
//lvi.SubItems.Add("After " + ii.ShortPath.Substring(lenNumber));
}
else
{
PartAuditInfoList pail = null;
pail = PartAuditInfoList.GetByItemID(iai.ItemID);
if (pail.Count > 0)
{
foreach (PartAuditInfo pai in pail)
{
itemType = pai.FromType == 3 ? "Caution for" : pai.FromType == 4 ? "Note for" : pai.FromType == 6 ? "Step" : "Item" + pai.FromType.ToString();
lbChanges.Items.Add(string.Format("{4} {0} deleted by {1} on {2} @ {3}", ii.ShortPath.Substring(lenNumber), iai.UserID, iai.DTS.ToShortDateString(), iai.DTS.ToShortTimeString(), itemType));
}
}
}
}
//annotations
if (ii.ItemAnnotations != null)
{
foreach (AnnotationInfo ai in ii.ItemAnnotations)
{
if (ai.IsAnnotationNew)
{
int k = lbChanges.Items.Add(string.Format("{0} @ {1} - {2}", "Annotation Added", ai.DTS.ToString(), ai.SearchText));
//ListViewItem lvi = new ListViewItem("Annotation Added");
//lvi.SubItems.Add(ai.AnnotationID.ToString());
//lvi.SubItems.Add(ai.DTS.ToString());
//lvi.SubItems.Add(ai.SearchText);
//lvi.SubItems.Add(ii.ShortPath.Substring(lenNumber));
//listView1.Items.Add(lvi);
}
else
{
int k = lbChanges.Items.Add(string.Format("{0} @ {1} - {2}", "Annotation Changed", ai.DTS.ToString(), ai.SearchText));
//ListViewItem lvi = new ListViewItem("Annotation Changed");
//lvi.SubItems.Add(ai.AnnotationID.ToString());
//lvi.SubItems.Add(ai.DTS.ToString());
//lvi.SubItems.Add(ai.SearchText);
//lvi.SubItems.Add(ii.ShortPath.Substring(lenNumber));
//listView1.Items.Add(lvi);
}
}
AnnotationAuditInfoList aail = AnnotationAuditInfoList.GetByItemID(ii.ItemID);
foreach (AnnotationAuditInfo aai in aail)
{
if (aai.DeleteStatus > 0)
{
int k = lbChanges.Items.Add(string.Format("{0} @ {1} - {2}", "Annotation Deleted", aai.DTS.ToString(), aai.SearchText));
//ListViewItem lvi = new ListViewItem("Annotation Deleted");
//lvi.SubItems.Add(aai.AnnotationID.ToString());
//lvi.SubItems.Add(aai.DTS.ToString());
//lvi.SubItems.Add(aai.SearchText);
//lvi.SubItems.Add(ii.ShortPath.Substring(lenNumber));
//listView1.Items.Add(lvi);
}
}
}
//content changes
//ContentAuditInfoList cail = ContentAuditInfoList.Get(ii.MyContent.ContentID);
//foreach (ContentAuditInfo cai in cail)
//{
// int k = lbChanges.Items.Add(string.Format("{0} @ {1} - {2}", "Content Changed", cai.DTS.ToString(), cai.Text));
//ListViewItem lvi = new ListViewItem("Content Changed");
//lvi.SubItems.Add(cai.ContentID.ToString());
//lvi.SubItems.Add(cai.DTS.ToString());
//lvi.SubItems.Add(cai.Text);
//lvi.SubItems.Add(ii.ShortPath.Substring(lenNumber));
//listView1.Items.Add(lvi);
//}
ii = ii.SearchNext;
}
btnViewSummaryReport.Enabled = btnViewChronologyReport.Enabled = lbChanges.Items.Count > 0;
}
private static string FixPath(string path)
{
string itemTitle = Regex.Replace(path, "^..+?\\u0007", "");
itemTitle = itemTitle.Replace("\x11", itemTitle[0] == '\x11' ? "" : " - ").Replace("\\u8209?", "-");
return itemTitle;
}
private void btnViewChronologyReport_Click(object sender, EventArgs e)
{
//if (lbChanges.Items.Count > 0)
//{
OnChronologyPrintRequest(new DisplayHistoryReportEventArgs(Volian.Base.Library.VlnSettings.TemporaryFolder + @"\MyChronology.pdf", MyItemInfo.MyProcedure, _ChronologyAuditList, _AnnotationList));
//}
}
private void btnViewSummaryReport_Click(object sender, EventArgs e)
{
//if (lbChanges.Items.Count > 0)
//{
OnSummaryPrintRequest(new DisplayHistoryReportEventArgs(Volian.Base.Library.VlnSettings.TemporaryFolder + @"\MySummary.pdf", MyItemInfo.MyProcedure, _SummaryAuditList, _AnnotationList));
//}
}
private void btnRefresh_Click(object sender, EventArgs e)
{
RefreshList();
}
private void btnRestore_Click(object sender, EventArgs e)
{
TreeNode tn = tvAudits.SelectedNode;
if (tn.Tag is ContentAuditInfo)
{
ContentAuditInfo cai = tn.Tag as ContentAuditInfo;
if (MessageBox.Show(this, "Do you want to restore this content change?", "Confirm Content Change Restore", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
{
ContentInfo ci = ContentInfo.RestoreContent(cai);
UpdateHistory();
myRTB.Clear();
myVFG.Clear();
}
}
if (tn.Tag is ItemAuditInfo)
{
ItemAuditInfo iai = tn.Tag as ItemAuditInfo;
if (MessageBox.Show(this, string.Format("Do you want to restore this {0}?",iai.ItemType), string.Format("Confirm {0} Restore",iai.ItemType), MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
{
//Console.WriteLine("DisplayHistory.btnRestore_Click @ {0}", DateTime.Now);
ItemInfo ii = null;
if (iai.Level == 2)
{
ii = MyItemInfo.RestoreItem(iai);
//_MyEditItem.AddChild((E_FromType)fromtype, contenttype);
//ii.ItemParts[0].FromType
//ii.MyContent.Type
EditItem nextItem = MyEditItem.GetNextItem((E_FromType)ii.ItemParts[0].FromType, ii);
//MyEditItem.AddChild(ii.MyContent.Text, (E_FromType)ii.ItemParts[0].FromType, (int)ii.MyContent.Type, null);
if (ii.IsStep)
ii = StepInfo.Get(ii.ItemID);
else if (ii.IsSection)
ii = SectionInfo.Get(ii.ItemID);
else if (ii.IsProcedure)
ii = ProcedureInfo.Get(ii.ItemID);
if (nextItem != null)
{
switch (nextItem.MyChildRelation)
{
case ChildRelation.None:
break;
case ChildRelation.After:
MyEditItem.AddChildAfter(ii, nextItem);
break;
case ChildRelation.Before:
MyEditItem.AddChildBefore(ii, nextItem);
break;
case ChildRelation.RNO:
MyEditItem.AddChildRNO(ii, nextItem);
break;
default:
break;
}
}
else
{
switch ((E_FromType)ii.ItemParts[0].FromType)
{
case E_FromType.Caution:
MyEditItem.AddChildBefore(ii, nextItem);
break;
case E_FromType.Note:
MyEditItem.AddChildBefore(ii, nextItem);
break;
case E_FromType.Procedure:
MyEditItem.AddChildAfter(ii, nextItem);
break;
case E_FromType.RNO:
MyEditItem.AddChildRNO(ii, nextItem);
break;
case E_FromType.Section:
MyEditItem.AddChildAfter(ii, nextItem);
break;
case E_FromType.Step:
MyEditItem.AddChildAfter(ii, nextItem);
break;
case E_FromType.Table:
MyEditItem.AddChildAfter(ii, nextItem);
break;
default:
MyEditItem.AddChildAfter(ii, nextItem);
break;
}
}
}
else
{
ii = MyItemInfo.RestoreSibling(iai);
if (ii.IsStep)
ii = StepInfo.Get(ii.ItemID);
else if (ii.IsSection)
ii = SectionInfo.Get(ii.ItemID);
else if (ii.IsProcedure)
ii = ProcedureInfo.Get(ii.ItemID);
EditItem nextItem = iai.Level == 0 ? MyEditItem : MyEditItem.MyNextEditItem;
switch (MyEditItem.MyChildRelation)
{
case ChildRelation.None:
break;
case ChildRelation.After:
MyEditItem.ActiveParent.AddChildAfter(ii, nextItem);
break;
case ChildRelation.Before:
MyEditItem.ActiveParent.AddChildBefore(ii, nextItem);
break;
case ChildRelation.RNO:
MyEditItem.ActiveParent.AddChildRNO(ii, nextItem);
break;
default:
break;
}
}
if(MyEditItem.MyPreviousEditItem != null)
MyEditItem.MyPreviousEditItem.SetAllTabs();
else
MyEditItem.SetAllTabs();
UpdateHistory();
myRTB.Clear();
myVFG.Clear();
}
}
if (tn.Tag is AnnotationAuditInfo)
{
AnnotationAuditInfo aai = tn.Tag as AnnotationAuditInfo;
if (MessageBox.Show(this, "Do you want to restore this annotation?", "Confirm Annotation Restore", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
{
AnnotationInfo ai = AnnotationInfo.RestoreAnnotation(aai);
UpdateHistory();
myRTB.Clear();
myVFG.Clear();
}
}
if (tn.Tag is GridAuditInfo)
{
GridAuditInfo gai = tn.Tag as GridAuditInfo;
if (MessageBox.Show(this, "Do you want to restore this table?", "Confirm Table Restore", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
{
ContentAuditInfo cai = ContentAuditInfo.Get(gai.ContentAuditID);
ContentInfo ci = ContentInfo.RestoreContent(cai);
UpdateHistory();
myRTB.Clear();
myVFG.Clear();
}
}
}
private void DisplayTagRTF(TreeNode tn)
{
if (tn.Tag != null)
{
if (tn.Tag is GridAuditInfo)
{
btnRestore.Enabled = true;
GridAuditInfo gai = tn.Tag as GridAuditInfo;
myVFG.Visible = true;
myVFG.BringToFront();
panel1.Invalidate(new Rectangle(0, 0, myVFG.Width + 4, 4));
panel1.Invalidate(new Rectangle(0, 0, 4, myVFG.Height + 4));
myRTB.Visible = false;
panel1.Visible = false;
using (StringReader sr = new StringReader(gai.Data))
{
myVFG.ReadXml(sr);
sr.Close();
}
panel1.Visible = true;
return;
}
if (tn.Tag is ContentAuditInfo)
{
btnRestore.Enabled = true;
myVFG.Clear();
ContentAuditInfo cai = tn.Tag as ContentAuditInfo;
GridAuditInfoList gail = GridAuditInfoList.Get(cai.ContentID);
if (gail.Count > 0)
{
foreach (GridAuditInfo gai in gail)
{
if (gai.DTS == cai.DTS)
{
myVFG.Visible = true;
myVFG.BringToFront();
myRTB.Visible = false;
using (StringReader sr = new StringReader(gai.Data))
{
myVFG.ReadXml(sr);
sr.Close();
}
return;
}
}
}
else
{
myRTB.Visible = true;
myRTB.BringToFront();
myVFG.Visible = false;
// myRTB.Font = new Font("Arial", 12, FontStyle.Regular);
// myRTB.Text = cai.Text;
myRTB.SetupRichText(cai.Text, MyItemInfo.FormatStepData.Font);
}
}
if (tn.Tag is ItemAuditInfo)
{
btnRestore.Enabled = true;
ItemAuditInfo iai = tn.Tag as ItemAuditInfo;
ContentAuditInfoList cail = ContentAuditInfoList.Get(iai.ContentID);
foreach (ContentAuditInfo cai in cail)
{
if (cai.DeleteStatus == iai.DeleteStatus)
{
//myRTB.Font = new Font("Arial", 12, FontStyle.Regular);
//myRTB.Text = cai.Text;
if (MyItemInfo.FormatStepData != null)
myRTB.SetupRichText(cai.Text, MyItemInfo.FormatStepData.Font);
else
{
myRTB.SetupRichText(cai.Text, new VE_Font(StepRTB.MyFontFamily != null ? StepRTB.MyFontFamily.Name : "arial", 12, E_Style.None, 8));
}
}
}
}
if (tn.Tag is AnnotationAuditInfo)
{
btnRestore.Enabled = true;
AnnotationAuditInfo iai = tn.Tag as AnnotationAuditInfo;
myRTB.Font = new Font("Arial", 12, FontStyle.Regular);
myRTB.Rtf = iai.RtfText;
//myRTB.Rtf = iai.RtfText;
}
}
else
{
btnRestore.Enabled = false;
myRTB.Clear();
myVFG.Clear();
}
}
private void tvAudits_AfterSelect(object sender, TreeViewEventArgs e)
{
DisplayTagRTF(e.Node);
}
private void DisplayHistory_Resize(object sender, EventArgs e)
{
tvAudits.Height = ((tcpDetail.Height - btnRestore.Height) / 4) * 3;
}
private void DisplayHistory_VisibleChanged(object sender, EventArgs e)
{
if(this.Visible)this.RefreshList();
}
public void RefreshChangeList()
{
myTimer.Enabled = false;
myTimer.Enabled = true;
}
private void myTimer_Tick(object sender, System.EventArgs e)
{
myTimer.Enabled = false;
RefreshList();
}
}
public delegate void ItemRestoredHandler(ItemInfo restoredItemInfo);
public delegate void DisplayHistoryReportEvent(object sender, DisplayHistoryReportEventArgs args);
public delegate void DisplayHistoryEvent(object sender, DisplayHistoryEventArgs args);
public class DisplayHistoryReportEventArgs
{
private string _ReportName;
public string ReportTitle
{
get { return _ReportName; }
set { _ReportName = value; }
}
private ProcedureInfo _ProcedureInfo;
public ProcedureInfo ProcedureInfo
{
get { return _ProcedureInfo; }
set { _ProcedureInfo = value; }
}
private ContentAuditInfoList _AuditList;
public ContentAuditInfoList AuditList
{
get { return _AuditList; }
set { _AuditList = value; }
}
private AnnotationAuditInfoList _AnnotationList;
public AnnotationAuditInfoList AnnotationList
{
get { return _AnnotationList; }
set { _AnnotationList = value; }
}
public DisplayHistoryReportEventArgs(string reportName, ProcedureInfo procedureInfo, ContentAuditInfoList auditList, AnnotationAuditInfoList annotationList)
{
_ReportName = reportName;
_ProcedureInfo = procedureInfo;
_AuditList = auditList;
_AnnotationList = annotationList;
}
}
public class DisplayHistoryEventArgs
{
private int _ItemID;
public int ItemID
{
get { return _ItemID; }
set { _ItemID = value; }
}
public DisplayHistoryEventArgs(int itemID)
{
_ItemID = itemID;
}
}
}