1032 lines
36 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);
}
public event AnnotationRestoredHandler AnnotationRestored;
private void OnAnnotationRestored(AnnotationInfo restoredAnnotationInfo, ItemInfo currentItem)
{
if (AnnotationRestored != null) AnnotationRestored(restoredAnnotationInfo, currentItem);
}
#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 (value == null) return;
SetRevDate(MyProcedureInfo.DTS);
if (_MyProcedureInfo != null && this.Visible)
WalkProcedure();
}
}
private void SetRevDate(DateTime dts)
{
MyRevDate = dts;
RefreshRequired = true;
}
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;
this.Visible = true;
UpdateHistory();
if (this.lbChanges.Visible && RefreshRequired)
{
WalkProcedure();
}
}
else
this.Visible = false;
}
}
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 (MyEditItem == null)
this.Visible = false;
if (this.Visible)
{
WalkProcedure();
UpdateHistory();
}
}
private int _ApplDisplayMode = -1;
public int ApplDisplayMode
{
get { return _ApplDisplayMode; }
set
{
if (MyProcedureInfo == null) return;
_ApplDisplayMode = value;
RefreshRequired = true;
if (_ApplDisplayMode > 0)
{
MyProcedureInfo.MyProcedure.MyContent.RefreshContentDetails();
ProcedureConfig cfg = MyProcedureInfo.MyConfig as ProcedureConfig;
cfg.SelectedSlave = value;
if (cfg.Print_RevDate == null || cfg.Print_RevDate == string.Empty)
SetRevDate(MyProcedureInfo.DTS);
else
SetRevDate(DateTime.Parse(cfg.Print_RevDate));
}
else
{
DateTime minDts = DateTime.MaxValue;
for (int j = 1; j <= MyProcedureInfo.MyDocVersion.DocVersionConfig.Unit_Count; j++)
{
ProcedureConfig cfg = MyProcedureInfo.MyConfig as ProcedureConfig;
cfg.SelectedSlave = j;
if (cfg.Print_RevDate != null && cfg.Print_RevDate != string.Empty)
{
if (DateTime.Parse(cfg.Print_RevDate) < minDts && DateTime.Parse(cfg.Print_RevDate) > MyProcedureInfo.DTS)
minDts = DateTime.Parse(cfg.Print_RevDate);
}
else
minDts = MyProcedureInfo.DTS;
}
SetRevDate(minDts);
}
}
}
private DateTime _MyRevDate;
public DateTime MyRevDate
{
get { return _MyRevDate; }
set { _MyRevDate = value; }
}
private bool RefreshRequired = false;
public DisplayHistory()
{
InitializeComponent();
myRTB.FormatFont = null;
RefreshRequired = true;
//tabControl1.SelectedTab = tabItem2;// Start with Change List
}
private void lbChanges_VisibleChanged(object sender, System.EventArgs e)
{
if (ApplDisplayMode == -1)
{
ApplDisplayMode = 0;
}
if (RefreshRequired)
{
Console.WriteLine("before walkprocedure - {0}", DateTime.Now.ToLongTimeString());
WalkProcedure();
Console.WriteLine("after walkprocedure - {0}", DateTime.Now.ToLongTimeString());
}
}
private void lbChanges_SelectedIndexChanged(object sender, EventArgs e)
{
if (lbChanges.SelectedIndex > -1)
{
ContentAuditInfo cai = lbChanges.SelectedItem as ContentAuditInfo;
if (cai != null)
{
if (cai.DeleteStatus > 0)
MessageBox.Show("This item has been deleted.","Deleted Item",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
else
OnHistorySelectionChanged(new DisplayHistoryEventArgs(cai.ItemID));
}
else
{
AnnotationAuditInfo aai = lbChanges.SelectedItem as AnnotationAuditInfo;
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();
//myRTB.LastRtf = string.Empty;
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.ListString());
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, MyItemInfo.MyProcedure.DTS);
// 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.ListString());
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.ParentForm.Cursor = Cursors.WaitCursor;
Application.DoEvents();
//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 cail3;
AnnotationAuditInfoList aail2;
if (ApplDisplayMode > 0)
{
cail2 = ContentAuditInfoList.GetChronologyByUnit(MyProcedureInfo.ItemID, MyProcedureInfo.ItemID, false, ApplDisplayMode);
cail3 = ContentAuditInfoList.GetSummaryByUnit(MyProcedureInfo.ItemID, MyProcedureInfo.ItemID, false, ApplDisplayMode);
aail2 = AnnotationAuditInfoList.GetChronologyByUnit(MyProcedureInfo.ItemID, MyProcedureInfo.ItemID, ApplDisplayMode);
}
else
{
cail2 = ContentAuditInfoList.GetChronology(MyProcedureInfo.ItemID, MyProcedureInfo.ItemID, false);
cail3 = ContentAuditInfoList.GetSummary(MyProcedureInfo.ItemID, MyProcedureInfo.ItemID, false);
aail2 = AnnotationAuditInfoList.GetChronology(MyProcedureInfo.ItemID, MyProcedureInfo.ItemID);
}
//Console.WriteLine("WalkProcedure cail2: {0} seconds", TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks).TotalSeconds);
_ChronologyAuditList = cail2;
_SummaryAuditList = cail3;
//Console.WriteLine("WalkProcedure aail2: {0} seconds", TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks).TotalSeconds);
_AnnotationList = aail2;
foreach (ContentAuditInfo cai in cail2)
{
if (cai.DTS > MyRevDate || cai.ActionWhen > MyRevDate)
{
string itemTitle = FixPath(cai.Path);
lbChanges.Items.Add(cai);
}
}
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);
}
if (aai.DTS > MyRevDate)
lbChanges.Items.Add(aai);
}
//Console.WriteLine("WalkProcedure fini: {0} seconds", TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks).TotalSeconds);
this.ParentForm.Cursor = Cursors.Default;
btnViewSummaryReport.Enabled = btnViewChronologyReport.Enabled = lbChanges.Items.Count > 0;
RefreshRequired = false;
return;
#region oldstuff
//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;
//RefreshRequired = false;
#endregion
}
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)
{
RefreshList();
//if (lbChanges.Items.Count > 0)
//{
//jcb added 20120425 to suppress annotations in report
_AnnotationList = AnnotationAuditInfoList.GetChronology(0, 0);
//added setting selected slave in order for reports to replace unit number,etc jcb 20101010
MyItemInfo.MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = ApplDisplayMode;
OnChronologyPrintRequest(new DisplayHistoryReportEventArgs(Volian.Base.Library.VlnSettings.TemporaryFolder + @"\MyChronology.pdf", MyItemInfo.MyProcedure, _ChronologyAuditList, _AnnotationList));
//}
}
private void btnViewSummaryReport_Click(object sender, EventArgs e)
{
RefreshList();
//if (lbChanges.Items.Count > 0)
//{
//jcb added 20120425 to suppress annotations in report
_AnnotationList = AnnotationAuditInfoList.GetChronology(0, 0);
//added setting selected slave in order for reports to replace unit number,etc jcb 20101010
MyItemInfo.MyProcedure.MyDocVersion.DocVersionConfig.SelectedSlave = ApplDisplayMode;
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);
RefreshRequired = true;
UpdateHistory();
myRTB.Clear();
myVFG.Clear();
MyEditItem.SetAllTabs();
}
}
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;
}
ii.UpdateTransitionText();
}
if(MyEditItem.MyPreviousEditItem != null)
MyEditItem.MyPreviousEditItem.SetAllTabs();
else
MyEditItem.SetAllTabs();
RefreshRequired = true;
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);
OnAnnotationRestored(ai, ai.MyItem);
RefreshRequired = true;
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);
RefreshRequired = true;
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("bozo", MyItemInfo.FormatStepData == null ? MyItemInfo.ActiveFormat.PlantFormat.FormatData.Font : MyItemInfo.FormatStepData.Font);
//myRTB.LastRtf = string.Empty;
myRTB.SetupRichText(cai.Text, MyItemInfo.FormatStepData == null ? MyItemInfo.ActiveFormat.PlantFormat.FormatData.Font : 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;
myRTB.SetupRichText(cai.Text, MyItemInfo.FormatStepData == null ? MyItemInfo.ActiveFormat.PlantFormat.FormatData.Font : MyItemInfo.FormatStepData.Font);
}
}
}
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)
{
//this.tabControl1.SelectedTab = tabItem2;
//if(this.lbChanges.Visible)this.RefreshList();
//add jcb 20121008
//if (this.lbChanges.Visible && RefreshRequired)
// WalkProcedure();
//end jcb 20121008
}
public void RefreshChangeList()
{
myTimer.Enabled = false;
myTimer.Enabled = true;
}
private void myTimer_Tick(object sender, System.EventArgs e)
{
myTimer.Enabled = false;
if (this.lbChanges.Visible)
this.tabControl1.SelectedTab = tabItem2;
UpdateHistory();
RefreshRequired = true;
}
}
public delegate void ItemRestoredHandler(ItemInfo restoredItemInfo);
public delegate void AnnotationRestoredHandler(AnnotationInfo restoredAnnotationInfo, ItemInfo currentItem);
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;
}
}
}