diff --git a/PROMS/Volian.Controls.Library/vlnTreeView.cs b/PROMS/Volian.Controls.Library/vlnTreeView.cs index 9cbefa79..46901853 100644 --- a/PROMS/Volian.Controls.Library/vlnTreeView.cs +++ b/PROMS/Volian.Controls.Library/vlnTreeView.cs @@ -101,6 +101,20 @@ namespace Volian.Controls.Library get { return _Index; } set { _Index = value; } } + //jcb multiunit + private string _Unit; + public string Unit + { + get { return _Unit; } + set { _Unit = value; } + } + private int _UnitIndex = -1; + public int UnitIndex + { + get { return _UnitIndex; } + set { _UnitIndex = value; } + } + //end jcb multiunit #endregion #region Factory Methods private vlnTreeEventArgs() { ;} @@ -114,6 +128,16 @@ namespace Volian.Controls.Library _Destination = destination; _Index = index; } + //jcb multiunit + public vlnTreeEventArgs(TreeNode node, TreeNode destination, int index, string unit, int unitIndex) + { + _Node = node; + _Destination = destination; + _Index = index; + _Unit = unit; + _UnitIndex = unitIndex; + } + //end jcb multiunit #endregion } public partial class vlnTreeItemInfoEventArgs @@ -479,9 +503,39 @@ namespace Volian.Controls.Library else if (tn.VEObject as DocVersionInfo != null) // DocVersions can only contain procs { cm.MenuItems.Add("New Procedure", new EventHandler(mi_Click)); - cm.MenuItems.Add("Print All Procedures", new EventHandler(mi_Click)); - cm.MenuItems.Add("Approve All Procedures", new EventHandler(mi_Click)); - cm.MenuItems.Add("Approve Some Procedures", new EventHandler(mi_Click)); + DocVersionInfo dvi = tn.VEObject as DocVersionInfo; + if (dvi.MultiUnitCount > 1) + { + MenuItem mip = new MenuItem("Print All Procedures for"); + MenuItem mia= new MenuItem("Approve All Procedures for"); + MenuItem mis = new MenuItem("Approve Some Procedures for"); + int k = 0; + foreach (string s in dvi.UnitNames) + { + k++; + MenuItem mp = mip.MenuItems.Add(s, new EventHandler(miMultiUnit_Click)); + mp.Tag = k; + MenuItem ma = mia.MenuItems.Add(s, new EventHandler(miMultiUnit_Click)); + ma.Tag = k; + MenuItem ms = mis.MenuItems.Add(s, new EventHandler(miMultiUnit_Click)); + ms.Tag = k; + } + //MenuItem mmp = mip.MenuItems.Add("All Units", new EventHandler(miMultiUnit_Click)); + //mmp.Tag = 0; + //MenuItem mma = mia.MenuItems.Add("All Units", new EventHandler(miMultiUnit_Click)); + //mma.Tag = 0; + //MenuItem mms = mis.MenuItems.Add("All Units", new EventHandler(miMultiUnit_Click)); + //mms.Tag = 0; + cm.MenuItems.Add(mip); + cm.MenuItems.Add(mia); + cm.MenuItems.Add(mis); + } + else + { + cm.MenuItems.Add("Print All Procedures", new EventHandler(mi_Click)); + cm.MenuItems.Add("Approve All Procedures", new EventHandler(mi_Click)); + cm.MenuItems.Add("Approve Some Procedures", new EventHandler(mi_Click)); + } cm.MenuItems.Add("Report All Procedures Inconsistencies", new EventHandler(mi_Click)); } else if (tn.VEObject as ProcedureInfo != null) // Procs can only contain sections @@ -491,9 +545,29 @@ namespace Volian.Controls.Library cm.MenuItems.Add("Insert Procedure Before", new EventHandler(mi_Click)); cm.MenuItems.Add("Insert Procedure After", new EventHandler(mi_Click)); cm.MenuItems.Add("New Section", new EventHandler(mi_Click)); - cm.MenuItems.Add("Print", new EventHandler(mi_Click)); - cm.MenuItems.Add("Approve", new EventHandler(mi_Click)); - AddApprovedRevisions(cm.MenuItems, pri); + if (pri.MyDocVersion.MultiUnitCount > 1) + { + MenuItem mip = new MenuItem("Print"); + MenuItem mia = new MenuItem("Approve"); + int k = 0; + foreach (string s in pri.MyDocVersion.UnitNames) + { + k++; + MenuItem mp = mip.MenuItems.Add(s, new EventHandler(miMultiUnit_Click)); + mp.Tag = k; + MenuItem ma = mia.MenuItems.Add(s, new EventHandler(miMultiUnit_Click)); + ma.Tag = k; + } + cm.MenuItems.Add(mip); + cm.MenuItems.Add(mia); + AddApprovedRevisionsMultiUnit(cm.MenuItems, pri); + } + else + { + cm.MenuItems.Add("Print", new EventHandler(mi_Click)); + cm.MenuItems.Add("Approve", new EventHandler(mi_Click)); + AddApprovedRevisions(cm.MenuItems, pri); + } } else if (tn.VEObject as SectionInfo != null) { @@ -578,6 +652,43 @@ namespace Volian.Controls.Library } } + private void AddApprovedRevisionsMultiUnit(Menu.MenuItemCollection menuItemCollection, ProcedureInfo pri) + { + RevisionInfoList ril = RevisionInfoList.GetByItemID(pri.ItemID); + if (ril.Count == 0) return; + MenuItem mi = menuItemCollection.Add("Versions"); + int k = 0; + int lastApprovedRevisionID = 0; + foreach (string s in pri.MyDocVersion.UnitNames) + { + k++; + MenuItem mv = mi.MenuItems.Add(s); + mv.Tag = k; + ril = RevisionInfoList.GetByItemIDandUnitID(pri.ItemID, k); + foreach (RevisionInfo ri in ril) + { + MenuItem mir = mv.MenuItems.Add(ri.ToString()); + mir.Tag = ri; + if (ri.LatestVersion.MyStage.IsApproved > 0 && (ri.RevisionID > lastApprovedRevisionID)) + lastApprovedRevisionID = ri.RevisionID; + if (ri.LatestVersion.PDF != null) + { + MenuItem mirp = mir.MenuItems.Add("View Procedure"); + mirp.Tag = ri; + mirp.Click += new EventHandler(MultiUnitApprovedRevision_Click); + } + if (ri.LatestVersion.SummaryPDF != null) + { + MenuItem mirs = mir.MenuItems.Add("View Summary of Changes"); + mirs.Tag = ri; + mirs.Click += new EventHandler(MultiUnitSummaryOfChanges_Click); + } + //end added jcb 20111031 + mv.Tag = lastApprovedRevisionID; + } + } + } + private void AddApprovedRevisions(Menu.MenuItemCollection menuItemCollection, ProcedureInfo pri) { RevisionInfoList ril = null; @@ -632,6 +743,23 @@ namespace Volian.Controls.Library OnViewPDF(sender, args); // System.Diagnostics.Process pp = System.Diagnostics.Process.Start(GetDocPdf(ri, superceded)); } + void MultiUnitApprovedRevision_Click(object sender, EventArgs e) + { + bool superceded = false; + MenuItem mi = sender as MenuItem; + if (mi == null) return; + RevisionInfo ri = mi.Tag as RevisionInfo; + { + MenuItem mip = mi.Parent as MenuItem; + if (ri.RevisionID < int.Parse(mip.Parent.Tag.ToString())) + superceded = true; + } + ItemInfo ii = ItemInfo.Get(ri.ItemID); + ii.MyDocVersion.DocVersionConfig.SelectedSlave = ri.MyConfig.Applicability_Index; + vlnTreeViewPdfArgs args = new vlnTreeViewPdfArgs(Volian.Base.Library.TmpFile.CreateFileName(ii.DisplayNumber), ri.LatestVersion.PDF, superceded ? "Superceded" : ""); + OnViewPDF(sender, args); + // System.Diagnostics.Process pp = System.Diagnostics.Process.Start(GetDocPdf(ri, superceded)); + } void SummaryOfChanges_Click(object sender, EventArgs e) { MenuItem mi = sender as MenuItem; @@ -641,6 +769,17 @@ namespace Volian.Controls.Library OnViewPDF(sender, args); // System.Diagnostics.Process pps = System.Diagnostics.Process.Start(GetDocSummaryPdf(ri)); } + void MultiUnitSummaryOfChanges_Click(object sender, EventArgs e) + { + MenuItem mi = sender as MenuItem; + if (mi == null) return; + RevisionInfo ri = mi.Tag as RevisionInfo; + ItemInfo ii = ItemInfo.Get(ri.ItemID); + ii.MyDocVersion.DocVersionConfig.SelectedSlave = ri.MyConfig.Applicability_Index; + vlnTreeViewPdfArgs args = new vlnTreeViewPdfArgs(Volian.Base.Library.TmpFile.CreateFileName(ii.DisplayNumber + " Summary of Changes"), ri.LatestVersion.SummaryPDF, ""); + OnViewPDF(sender, args); + // System.Diagnostics.Process pps = System.Diagnostics.Process.Start(GetDocSummaryPdf(ri)); + } //private string GetDocPdf(RevisionInfo ri, bool superceded) //{ // string fileName = Volian.Base.Library.TmpFile.CreateFileName(ItemInfo.Get(ri.ItemID).DisplayNumber); @@ -735,7 +874,34 @@ namespace Volian.Controls.Library } #endregion } - + //jcb multiunit + void miMultiUnit_Click(object sender, EventArgs e) + { + MenuItem mi = sender as MenuItem; + MenuItem mip = mi.Parent as MenuItem; + switch (mip.Text) + { + case "Print": + OnPrintProcedure(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag)); + break; + case "Print All Procedures for": + OnPrintAllProcedures(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0,mi.Text,(int)mi.Tag)); + break; + case "Approve": + OnApproveProcedure(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag)); + break; + case "Approve All Procedures for": + OnApproveAllProcedures(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag)); + break; + case "Approve Some Procedures for": + OnApproveSomeProcedures(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, mi.Text, (int)mi.Tag)); + break; + default: + MessageBox.Show(string.Format("Unrecognized Menu Item '{0}'", mip.Text)); + break; + } + } + //end jcb multiunit void mi_Click(object sender, EventArgs e) { MenuItem mi = sender as MenuItem;