C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
Initial check-in / adding ui options / base for export
This commit is contained in:
parent
9ef9dcd7b9
commit
92522b1229
@ -164,6 +164,9 @@
|
||||
<Compile Include="dlgCheckedOutProcedure.designer.cs">
|
||||
<DependentUpon>dlgCheckedOutProcedure.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="dlgExportImportEP.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="dlgMSWordMessage.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
|
@ -29,6 +29,7 @@ namespace VEPROMS
|
||||
}
|
||||
private bool _ConvertROsToTextDuringImport = false;
|
||||
private bool _ConvertROsAndTransitionsToText = false; // set to true when Approval creates an Export file
|
||||
protected bool _ExportBothConvertedandNot = false; // set to true when Electronic Procedure export
|
||||
|
||||
// B2016-225 notify user when Transitions and/or ROs are converted to text
|
||||
private bool _DidConvertTransitionsToText = false;
|
||||
@ -64,7 +65,7 @@ namespace VEPROMS
|
||||
private FolderInfo MyFolder = null;
|
||||
private DocVersionInfo MyDocVersion = null;
|
||||
private ProcedureInfo MyProcedure = null;
|
||||
private XmlAttribute AddAttribute(XmlDocument xd, string name, string value)
|
||||
protected XmlAttribute AddAttribute(XmlDocument xd, string name, string value)
|
||||
{
|
||||
XmlAttribute xa = xd.CreateAttribute(name);
|
||||
xa.InnerText = value;
|
||||
@ -2423,9 +2424,17 @@ namespace VEPROMS
|
||||
if (ii.ItemAnnotationCount > 0)
|
||||
foreach (AnnotationInfo ai in ii.ItemAnnotations)
|
||||
ExportAnnotation(xe, ai, "annotation");
|
||||
|
||||
ExportEPAnnotationInfo(xe, ii);
|
||||
}
|
||||
|
||||
private void ExportItemAudits(XmlElement xn, ItemInfo ii)
|
||||
protected virtual void ExportEPAnnotationInfo(XmlElement xe, ItemInfo ii)
|
||||
{
|
||||
//do nothing - this will be for Electronic procedures only
|
||||
//and handled/overridden in dlgExportEP.cs
|
||||
}
|
||||
|
||||
private void ExportItemAudits(XmlElement xn, ItemInfo ii)
|
||||
{
|
||||
if (cbxExportAudits.Checked)
|
||||
{
|
||||
@ -2566,6 +2575,7 @@ namespace VEPROMS
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ci.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ci.UserID.ToString()));
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "formatfilename", formatFileName));
|
||||
if (_ExportBothConvertedandNot) xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "textwithlinks", ci.Text));
|
||||
|
||||
//content audits
|
||||
ExportContentAudits(xe, ci);
|
||||
@ -2652,6 +2662,7 @@ namespace VEPROMS
|
||||
MyWriter.WriteAttributeString("dts", ci.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
|
||||
MyWriter.WriteAttributeString("userid", ci.UserID.ToString());
|
||||
MyWriter.WriteAttributeString("formatfilename", formatFileName);
|
||||
if (_ExportBothConvertedandNot) MyWriter.WriteAttributeString("textwithlinks", ci.Text);
|
||||
|
||||
if (ci.ContentTransitionCount > 0)
|
||||
foreach (TransitionInfo ti in ci.ContentTransitions)
|
||||
@ -2699,6 +2710,7 @@ namespace VEPROMS
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", gi.Config));
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", gi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", gi.UserID.ToString()));
|
||||
if (_ExportBothConvertedandNot) xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "datawithlinks", gi.Data));
|
||||
|
||||
//grid audits
|
||||
ExportGridAudits(xe, gi);
|
||||
@ -2758,6 +2770,7 @@ namespace VEPROMS
|
||||
MyWriter.WriteAttributeString("config", gi.Config);
|
||||
MyWriter.WriteAttributeString("dts", gi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
|
||||
MyWriter.WriteAttributeString("userid", gi.UserID.ToString());
|
||||
if (_ExportBothConvertedandNot) MyWriter.WriteAttributeString("datawithlinks", gi.Data);
|
||||
MyWriter.WriteEndElement();
|
||||
}
|
||||
|
||||
@ -2932,6 +2945,7 @@ namespace VEPROMS
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", di.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", di.UserID.ToString()));
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "fileextension", di.FileExtension));
|
||||
if (_ExportBothConvertedandNot) xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "doccontentwithlinks", Convert.ToBase64String(di.DocContent)));
|
||||
|
||||
//document audits
|
||||
ExportDocumentAudits(xe, di);
|
||||
@ -2998,6 +3012,7 @@ namespace VEPROMS
|
||||
MyWriter.WriteAttributeString("dts", di.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
|
||||
MyWriter.WriteAttributeString("userid", di.UserID.ToString());
|
||||
MyWriter.WriteAttributeString("fileextension", di.FileExtension);
|
||||
if (_ExportBothConvertedandNot) MyWriter.WriteAttributeString("doccontentwithlinks", Convert.ToBase64String(di.DocContent));
|
||||
MyWriter.WriteEndElement();
|
||||
}
|
||||
|
||||
|
202
PROMS/VEPROMS User Interface/dlgExportImportEP.cs
Normal file
202
PROMS/VEPROMS User Interface/dlgExportImportEP.cs
Normal file
@ -0,0 +1,202 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml;
|
||||
using VEPROMS.CSLA.Library;
|
||||
|
||||
namespace VEPROMS
|
||||
{
|
||||
//C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
|
||||
//class inherits from normal import/export form
|
||||
//then adds additional functionality
|
||||
public partial class dlgExportImportEP : dlgExportImport
|
||||
{
|
||||
private readonly AnnotationTypeInfo _AnnotationType;
|
||||
|
||||
private string multiseparator = ",";
|
||||
|
||||
private static Regex _ROAccPageTokenPattern = new Regex("[<][^<>-]+-[^<>]+[>]");
|
||||
|
||||
public dlgExportImportEP(string mode, FolderInfo folderInfo, frmVEPROMS myFrmVEPROMS, int annotationTypeId) : base(mode, folderInfo, myFrmVEPROMS, (E_UCFImportOptions) 0)
|
||||
{
|
||||
_AnnotationType = AnnotationTypeInfo.Get(annotationTypeId);
|
||||
_ExportBothConvertedandNot = true;
|
||||
DocReplace = new Dictionary<int, byte[]>();
|
||||
FormClosed += OnClose;
|
||||
Text = $"{mode} Electronic Procedure ({_AnnotationType.Name}) Dialog for {folderInfo.Name}";
|
||||
}
|
||||
|
||||
public dlgExportImportEP(string mode, DocVersionInfo docVersionInfo, frmVEPROMS myFrmVEPROMS, int annotationTypeId) : base(mode, docVersionInfo, myFrmVEPROMS, (E_UCFImportOptions)0)
|
||||
{
|
||||
_AnnotationType = AnnotationTypeInfo.Get(annotationTypeId);
|
||||
_ExportBothConvertedandNot = true;
|
||||
DocReplace = new Dictionary<int, byte[]>();
|
||||
FormClosed += OnClose;
|
||||
Text = $"{mode} Electronic Procedure ({_AnnotationType.Name}) Dialog for {docVersionInfo.Name} of {docVersionInfo.MyFolder.Name}";
|
||||
}
|
||||
public dlgExportImportEP(string mode, ProcedureInfo procedureInfo, frmVEPROMS myFrmVEPROMS, int annotationTypeId) : base(mode, procedureInfo, myFrmVEPROMS, (E_UCFImportOptions)0)
|
||||
{
|
||||
_AnnotationType = AnnotationTypeInfo.Get(annotationTypeId);
|
||||
_ExportBothConvertedandNot = true;
|
||||
DocReplace = new Dictionary<int, byte[]>();
|
||||
FormClosed += OnClose;
|
||||
Text = $"{mode} Electronic Procedure ({_AnnotationType.Name}) Dialog for {procedureInfo.DisplayNumber}";
|
||||
}
|
||||
|
||||
//Overridden function to handle export of EP data
|
||||
protected override void ExportEPAnnotationInfo(XmlElement xe, ItemInfo ii)
|
||||
{
|
||||
//switch to handle customizations for different formats
|
||||
switch (ii.ActiveFormat.PlantFormat.EPFormatFiles.Find(x => x.AnnotationTypeID == _AnnotationType.TypeID)?.Name)
|
||||
{
|
||||
default:
|
||||
ExportEPAnnotationInfo_Default(xe, ii);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//default export of EP Data
|
||||
private void ExportEPAnnotationInfo_Default(XmlElement xe, ItemInfo ii)
|
||||
{
|
||||
//Add tab text to item
|
||||
string steptab = Volian.Print.Library.PDFReport.BuildStepTab(ii);
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "StepTab", steptab));
|
||||
|
||||
//get first transition in item and add it as an xml element
|
||||
if (ii.MyContent.ContentTransitionCount > 0)
|
||||
{
|
||||
TransitionInfo ct = ii.MyContent.ContentTransitions[0];
|
||||
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "TransitionToItemID", ct.ToID.ToString()));
|
||||
}
|
||||
|
||||
//export EP annotation details under an EPInfo node
|
||||
if (ii.ItemAnnotations != null)
|
||||
{
|
||||
XmlElement xepinfo = xe.OwnerDocument.CreateElement("EPInfo");
|
||||
|
||||
EPFields myEPFields = ii.GetValidEPFields(_AnnotationType.TypeID);
|
||||
|
||||
ROFSTLookup lookup = ii.MyDocVersion.DocVersionAssociations[0].MyROFst.GetROFSTLookup(ii.MyDocVersion);
|
||||
|
||||
//For each annotation in the item that is of the current EP Annotation type
|
||||
foreach (var EPAnnotation in ii.ItemAnnotations.Where(x => x.TypeID == _AnnotationType.TypeID))
|
||||
{
|
||||
var EPAnnotationConfig = new AnnotationConfig(EPAnnotation.Config);
|
||||
|
||||
XmlElement xepdetails = xe.OwnerDocument.CreateElement("Details");
|
||||
//include the annotation ID for reference
|
||||
xepdetails.Attributes.SetNamedItem(AddAttribute(xepdetails.OwnerDocument, "AnnotationID", EPAnnotation.AnnotationID.ToString()));
|
||||
|
||||
//loop through each EP Field - name the xml elements the EP.name
|
||||
foreach (EPField EP in myEPFields)
|
||||
{
|
||||
string val = EPAnnotationConfig.GetValue("EP", EP.name);
|
||||
|
||||
XmlElement xindivid = xe.OwnerDocument.CreateElement(EP.name);
|
||||
|
||||
//need to resolve ROs ROSingle, ROMulti, in text
|
||||
//get values
|
||||
//should we export blank?
|
||||
//
|
||||
switch (EP.type.ToLower())
|
||||
{
|
||||
case "text":
|
||||
|
||||
//for text, check if any embedded ROs
|
||||
//if none, set the xml element to the text
|
||||
//otherwise resolve the Ros
|
||||
MatchCollection matches = _ROAccPageTokenPattern.Matches(val);
|
||||
if (matches.Count == 0)
|
||||
{
|
||||
xindivid.InnerText = val;
|
||||
}
|
||||
else
|
||||
{
|
||||
//resolve ROs
|
||||
//text ROs will replace the AccID key in the text
|
||||
//for binary objects like images,
|
||||
//we will keep the AccID in the text and output the binary as a separate child
|
||||
//XML element with the same xml name as the AccID
|
||||
foreach (Match m in matches)
|
||||
{
|
||||
ROFSTLookup.rochild roc = lookup.GetROChildByAccPageID(m.Groups[1].Value);
|
||||
|
||||
|
||||
if (roc.type == 8) // Exclude replacing Images since are binary - for those, add a sub item
|
||||
{
|
||||
XmlElement xroid = xindivid.OwnerDocument.CreateElement(m.Groups[1].Value);
|
||||
xroid.InnerText = roc.value;
|
||||
xindivid.AppendChild(xroid);
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(roc.value))
|
||||
{
|
||||
bool convertCaretToDeltaSymbol = (ii.ActiveSection != null) && ii.ActiveSection.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta;
|
||||
|
||||
string rocvalue = roc.value.Replace("`", "\xB0");
|
||||
rocvalue = rocvalue.Replace("\xF8", "\xB0");
|
||||
rocvalue = rocvalue.Replace("\x7F", "\x394"); //delta
|
||||
if (convertCaretToDeltaSymbol) rocvalue = rocvalue.Replace("^", "\x394"); // delta
|
||||
val = val.Replace($"<{m.Groups[1].Value}>", rocvalue);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
xindivid.InnerText = val;
|
||||
}
|
||||
break;
|
||||
case "rosingle":
|
||||
//Get the output columns from the EPFormatFile
|
||||
//set the "Item" nodes value = to those resolved items
|
||||
//separated by multiseparator
|
||||
XmlElement xindivid_rosingle = xindivid.OwnerDocument.CreateElement("Item");
|
||||
xindivid_rosingle.Attributes.SetNamedItem(AddAttribute(xindivid_rosingle.OwnerDocument, "ROID", val));
|
||||
List<string> ro_single_tmp = EP.getROValuesList(EPAnnotation, val);
|
||||
xindivid_rosingle.InnerText = String.Join(multiseparator, ro_single_tmp.ToArray());
|
||||
xindivid.AppendChild(xindivid_rosingle);
|
||||
break;
|
||||
case "romulti":
|
||||
//Get the output columns from the EPFormatFile
|
||||
//create an "Item" subnode for each selected RO
|
||||
//set the nodes value = to those resolved items
|
||||
//separated by multiseparator
|
||||
foreach (string ival in val.Split(multiseparator.ToCharArray()))
|
||||
{
|
||||
XmlElement xindivid_romulti = xindivid.OwnerDocument.CreateElement("Item");
|
||||
xindivid_romulti.Attributes.SetNamedItem(AddAttribute(xindivid_romulti.OwnerDocument, "ROID", ival));
|
||||
List<string> ro_multi_tmp = EP.getROValuesList(EPAnnotation, ival);
|
||||
xindivid_romulti.InnerText = String.Join(multiseparator, ro_multi_tmp.ToArray());
|
||||
xindivid.AppendChild(xindivid_romulti);
|
||||
}
|
||||
break;
|
||||
case "tableinput":
|
||||
xindivid.InnerText = val;
|
||||
break;
|
||||
default:
|
||||
xindivid.InnerText = val;
|
||||
break;
|
||||
}
|
||||
xepdetails.AppendChild(xindivid);
|
||||
}
|
||||
|
||||
xepinfo.AppendChild(xepdetails);
|
||||
}
|
||||
|
||||
xe.AppendChild(xepinfo);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//clear objects to release memory
|
||||
private void OnClose(object sender, EventArgs e)
|
||||
{
|
||||
DocReplace.Clear();
|
||||
DocReplace = null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -709,14 +709,31 @@ namespace VEPROMS
|
||||
{
|
||||
int ownerid = MySessionInfo.CheckOutItem(fi.FolderID, CheckOutType.Session);
|
||||
|
||||
dlgExportImport dlg = new dlgExportImport(args.Index == 0 ? "Export" : "Import", fi, this, (E_UCFImportOptions)Properties.Settings.Default.UCFImportOpt);//Added frmVEPROMS Parameter
|
||||
dlg.ShowDialog(this);
|
||||
|
||||
MySessionInfo.CheckInItem(ownerid);
|
||||
|
||||
if (args.Index == 1 && dlg.MyNewFolder != null)
|
||||
//C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
|
||||
//form for exporting Electronic Procedures from FolderInfo
|
||||
if (args.AnnotationTypeId > 0)
|
||||
{
|
||||
tv.AddNewNode(dlg.MyNewFolder);
|
||||
dlgExportImportEP dlg = new dlgExportImportEP(args.Index == 0 ? "Export" : "Import", fi, this, args.AnnotationTypeId);
|
||||
dlg.ShowDialog(this);
|
||||
|
||||
MySessionInfo.CheckInItem(ownerid);
|
||||
|
||||
if (args.Index == 1 && dlg.MyNewFolder != null)
|
||||
{
|
||||
tv.AddNewNode(dlg.MyNewFolder);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dlgExportImport dlg = new dlgExportImport(args.Index == 0 ? "Export" : "Import", fi, this, (E_UCFImportOptions)Properties.Settings.Default.UCFImportOpt);//Added frmVEPROMS Parameter
|
||||
dlg.ShowDialog(this);
|
||||
|
||||
MySessionInfo.CheckInItem(ownerid);
|
||||
|
||||
if (args.Index == 1 && dlg.MyNewFolder != null)
|
||||
{
|
||||
tv.AddNewNode(dlg.MyNewFolder);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -742,18 +759,40 @@ namespace VEPROMS
|
||||
|
||||
int ownerid = MySessionInfo.CheckOutItem(dvi.VersionID, CheckOutType.DocVersion);
|
||||
|
||||
dlgExportImport dlg = new dlgExportImport("Import", dvi, this, (E_UCFImportOptions)Properties.Settings.Default.UCFImportOpt);//Added frmVEPROMS Parameter
|
||||
dlg.MyNewProcedure = null;
|
||||
dlg.ExternalTransitionItem = null;
|
||||
dlg.ShowDialog(this);
|
||||
//C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
|
||||
//form for exporting Electronic Procedures from DocVersionInfo
|
||||
if (args.AnnotationTypeId > 0)
|
||||
{
|
||||
dlgExportImportEP dlg = new dlgExportImportEP(args.Index == 0 ? "Export" : "Import", dvi, this, args.AnnotationTypeId);
|
||||
dlg.MyNewProcedure = null;
|
||||
dlg.ExternalTransitionItem = null;
|
||||
dlg.ShowDialog(this);
|
||||
|
||||
MySessionInfo.CheckInItem(ownerid);
|
||||
MySessionInfo.CheckInItem(ownerid);
|
||||
|
||||
if (dlg.MyNewProcedure != null)
|
||||
tv.AddNewNode(dlg.MyNewProcedure);
|
||||
if (dlg.MyNewProcedure != null)
|
||||
tv.AddNewNode(dlg.MyNewProcedure);
|
||||
|
||||
if (dlg.ExternalTransitionItem != null)
|
||||
tc.OpenItem(dlg.ExternalTransitionItem);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
dlgExportImport dlg = new dlgExportImport("Import", dvi, this, (E_UCFImportOptions)Properties.Settings.Default.UCFImportOpt);//Added frmVEPROMS Parameter
|
||||
dlg.MyNewProcedure = null;
|
||||
dlg.ExternalTransitionItem = null;
|
||||
dlg.ShowDialog(this);
|
||||
|
||||
MySessionInfo.CheckInItem(ownerid);
|
||||
|
||||
if (dlg.MyNewProcedure != null)
|
||||
tv.AddNewNode(dlg.MyNewProcedure);
|
||||
|
||||
if (dlg.ExternalTransitionItem != null)
|
||||
tc.OpenItem(dlg.ExternalTransitionItem);
|
||||
}
|
||||
|
||||
if (dlg.ExternalTransitionItem != null)
|
||||
tc.OpenItem(dlg.ExternalTransitionItem);
|
||||
}
|
||||
}
|
||||
|
||||
@ -769,10 +808,24 @@ namespace VEPROMS
|
||||
else
|
||||
{
|
||||
int ownerid = MySessionInfo.CheckOutItem(pi.ItemID, CheckOutType.Procedure);
|
||||
dlgExportImport dlg = new dlgExportImport("Export", pi, this, (E_UCFImportOptions)0);//Added frmVEPROMS Parameter
|
||||
dlg.ShowDialog(this);
|
||||
|
||||
MySessionInfo.CheckInItem(ownerid);
|
||||
//C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
|
||||
//form for exporting Electronic Procedures from ProcedureInfo
|
||||
if (args.AnnotationTypeId > 0)
|
||||
{
|
||||
dlgExportImportEP dlg = new dlgExportImportEP("Export", pi, this, args.AnnotationTypeId);
|
||||
dlg.ShowDialog(this);
|
||||
|
||||
MySessionInfo.CheckInItem(ownerid);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
dlgExportImport dlg = new dlgExportImport("Export", pi, this, (E_UCFImportOptions)0);//Added frmVEPROMS Parameter
|
||||
dlg.ShowDialog(this);
|
||||
|
||||
MySessionInfo.CheckInItem(ownerid);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -22,8 +22,8 @@ namespace Volian.Controls.Library
|
||||
public delegate void vlnTreeViewEvent(object sender, vlnTreeEventArgs args);
|
||||
public delegate void vlnTreeViewTimeEvent(object sender, vlnTreeTimeEventArgs args);
|
||||
public delegate void vlnTreeViewStatusEvent(object sender, vlnTreeStatusEventArgs args);
|
||||
public delegate ItemInfo vlnTreeViewClipboardStatusEvent(object sender, vlnTreeEventArgs args);
|
||||
public delegate void vlnTreeViewItemInfoEvent(object sender, vlnTreeItemInfoEventArgs args);
|
||||
public delegate ItemInfo vlnTreeViewClipboardStatusEvent(object sender, vlnTreeEventArgs args);
|
||||
public delegate void vlnTreeViewItemInfoEvent(object sender, vlnTreeItemInfoEventArgs args);
|
||||
public delegate bool vlnTreeViewBoolEvent(object sender, vlnTreeEventArgs args);
|
||||
public delegate bool vlnTreeViewItemInfoDeleteEvent(object sender, vlnTreeItemInfoEventArgs args);
|
||||
|
||||
@ -152,6 +152,15 @@ namespace Volian.Controls.Library
|
||||
get { return _Index; }
|
||||
set { _Index = value; }
|
||||
}
|
||||
|
||||
//C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
|
||||
//AnnotationType that would be doing an export for
|
||||
private int _AnnotationTypeId = -1;
|
||||
public int AnnotationTypeId
|
||||
{
|
||||
get { return _AnnotationTypeId; }
|
||||
set { _AnnotationTypeId = value; }
|
||||
}
|
||||
//jcb multiunit
|
||||
private string _Unit;
|
||||
public string Unit
|
||||
@ -179,6 +188,13 @@ namespace Volian.Controls.Library
|
||||
_Destination = destination;
|
||||
_Index = index;
|
||||
}
|
||||
public vlnTreeEventArgs(TreeNode node, TreeNode destination, int index, int annTypeId)
|
||||
{
|
||||
_Node = node;
|
||||
_Destination = destination;
|
||||
_Index = index;
|
||||
_AnnotationTypeId = annTypeId;
|
||||
}
|
||||
//jcb multiunit
|
||||
public vlnTreeEventArgs(TreeNode node, TreeNode destination, int index, string unit, int unitIndex)
|
||||
{
|
||||
@ -188,11 +204,20 @@ namespace Volian.Controls.Library
|
||||
_Unit = unit;
|
||||
_UnitIndex = unitIndex;
|
||||
}
|
||||
public vlnTreeEventArgs(TreeNode node, TreeNode destination, int index, string unit, int unitIndex, int annTypeId)
|
||||
{
|
||||
_Node = node;
|
||||
_Destination = destination;
|
||||
_Index = index;
|
||||
_Unit = unit;
|
||||
_UnitIndex = unitIndex;
|
||||
_AnnotationTypeId = annTypeId;
|
||||
}
|
||||
//end jcb multiunit
|
||||
#endregion
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("Node={0},Destination={1},Index={2},Unit={3},UnitIndex={4}", NodePath(this.Node), this.Destination, this.Index, this.Unit, this.UnitIndex);
|
||||
return string.Format("Node={0},Destination={1},Index={2},Unit={3},UnitIndex={4}", NodePath(this.Node), this.Destination, this.Index, this.Unit, this.UnitIndex);
|
||||
}
|
||||
|
||||
private string NodePath(TreeNode node)
|
||||
@ -578,11 +603,11 @@ namespace Volian.Controls.Library
|
||||
|
||||
|
||||
|
||||
public event vlnTreeViewEvent ExportImportProcedureSets;
|
||||
private void OnExportImportProcedureSets(object sender, vlnTreeEventArgs args)
|
||||
{
|
||||
if (ExportImportProcedureSets != null) ExportImportProcedureSets(sender, args);
|
||||
}
|
||||
public event vlnTreeViewEvent ExportImportProcedureSets;
|
||||
private void OnExportImportProcedureSets(object sender, vlnTreeEventArgs args)
|
||||
{
|
||||
if (ExportImportProcedureSets != null) ExportImportProcedureSets(sender, args);
|
||||
}
|
||||
public event vlnTreeViewEvent PrintTransitionReport;
|
||||
private void OnPrintTransitionReport(object sender, vlnTreeEventArgs args)
|
||||
{
|
||||
@ -711,7 +736,10 @@ namespace Volian.Controls.Library
|
||||
if (ui.IsAdministrator() || ui.IsSetAdministrator(fi))// && fi.MyParent == null) //VEPROMS level
|
||||
{
|
||||
if (fi.HasWorkingDraft)
|
||||
{
|
||||
cm.MenuItems.Add("Export Procedure Set", new EventHandler(mi_Click));
|
||||
//AddEPExport(cm.MenuItems, 0, null);
|
||||
}
|
||||
else
|
||||
cm.MenuItems.Add("Import Procedure Set", new EventHandler(mi_Click));
|
||||
if (DoSpecificInfo)
|
||||
@ -745,10 +773,10 @@ namespace Volian.Controls.Library
|
||||
//_MyLog.WarnFormat("Context Menu 1c - {0}", GC.GetTotalMemory(true));
|
||||
DocVersionInfo dvi = tn.VEObject as DocVersionInfo;
|
||||
if (ui.IsAdministrator() || ui.IsSetAdministrator(dvi))
|
||||
{
|
||||
cm.MenuItems.Add("Import Procedure", mi_Click);
|
||||
}
|
||||
if (ui.IsAdministrator() || ui.IsSetAdministrator(dvi) || ui.IsWriter(dvi))
|
||||
{
|
||||
cm.MenuItems.Add("Import Procedure", mi_Click);
|
||||
}
|
||||
if (ui.IsAdministrator() || ui.IsSetAdministrator(dvi) || ui.IsWriter(dvi))
|
||||
{
|
||||
OwnerInfoList.Reset();
|
||||
oil = OwnerInfoList.GetByVersionID(dvi.VersionID);
|
||||
@ -846,7 +874,8 @@ namespace Volian.Controls.Library
|
||||
oi = OwnerInfo.GetByItemID(pri.ItemID, CheckOutType.Procedure);
|
||||
if (ui.IsAdministrator() || ui.IsSetAdministrator(pri.MyDocVersion))
|
||||
{
|
||||
cm.MenuItems.Add("Export Procedure", mi_Click);
|
||||
cm.MenuItems.Add("Export Procedure", mi_Click);
|
||||
AddEPExport(cm.MenuItems, pri.MyDocVersion.MultiUnitCount, pri.MyDocVersion.UnitNames);
|
||||
}
|
||||
if (ui.IsAdministrator() || ui.IsSetAdministrator(pri.MyDocVersion) || ui.IsWriter(pri.MyDocVersion))
|
||||
{
|
||||
@ -1137,29 +1166,29 @@ namespace Volian.Controls.Library
|
||||
|
||||
|
||||
|
||||
{
|
||||
// Add delete to the menu unless at the very 'top' node, on a grouping (partinfo)
|
||||
// node (RNOs, Steps, Cautions, Notes) or Folder/DocVersion that contains any items.
|
||||
PartInfo pi = tn.VEObject as PartInfo;
|
||||
if (pi == null && tn.Parent != null) // it's not a part and it's not the top....
|
||||
{
|
||||
fi = tn.VEObject as FolderInfo;
|
||||
if (fi == null || tn.Nodes.Count == 0) // it's not a folder or it has no children
|
||||
// Add delete to the menu unless at the very 'top' node, on a grouping (partinfo)
|
||||
// node (RNOs, Steps, Cautions, Notes) or Folder/DocVersion that contains any items.
|
||||
PartInfo pi = tn.VEObject as PartInfo;
|
||||
if (pi == null && tn.Parent != null) // it's not a part and it's not the top....
|
||||
{
|
||||
DocVersionInfo di = tn.VEObject as DocVersionInfo;
|
||||
if (di == null || tn.Nodes.Count == 0) // it's not a docversion or it has no children
|
||||
fi = tn.VEObject as FolderInfo;
|
||||
if (fi == null || tn.Nodes.Count == 0) // it's not a folder or it has no children
|
||||
{
|
||||
// if it's an enhanced step that was linked from a source, don't allow delete
|
||||
bool canDoDel = true;
|
||||
ItemInfo iienh = tn.VEObject as ItemInfo;
|
||||
if (iienh != null && iienh.IsProcedure && iienh.IsEnhancedProcedure) canDoDel = false;
|
||||
if (iienh != null && iienh.IsSection && iienh.IsEnhancedSection && !iienh.IsEnhancedSectionTitleOnly) canDoDel = false;
|
||||
if (iienh != null && iienh.IsEnhancedStep) canDoDel = false;
|
||||
if (canDoDel) cm.MenuItems.Add("Delete", new EventHandler(mi_Click));
|
||||
DocVersionInfo di = tn.VEObject as DocVersionInfo;
|
||||
if (di == null || tn.Nodes.Count == 0) // it's not a docversion or it has no children
|
||||
{
|
||||
// if it's an enhanced step that was linked from a source, don't allow delete
|
||||
bool canDoDel = true;
|
||||
ItemInfo iienh = tn.VEObject as ItemInfo;
|
||||
if (iienh != null && iienh.IsProcedure && iienh.IsEnhancedProcedure) canDoDel = false;
|
||||
if (iienh != null && iienh.IsSection && iienh.IsEnhancedSection && !iienh.IsEnhancedSectionTitleOnly) canDoDel = false;
|
||||
if (iienh != null && iienh.IsEnhancedStep) canDoDel = false;
|
||||
if (canDoDel) cm.MenuItems.Add("Delete", new EventHandler(mi_Click));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
//_MyLog.WarnFormat("Context Menu 6 - {0}", GC.GetTotalMemory(true));
|
||||
@ -1359,7 +1388,53 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
|
||||
private void AddApprovedRevisionsMultiUnit(Menu.MenuItemCollection menuItemCollection, ProcedureInfo pri)
|
||||
//C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
|
||||
// Add context menu for exporting Electronic Procedures
|
||||
// if has an Electronic procedure
|
||||
// then loop through and add an Export for each EP Viewer
|
||||
private void AddEPExport(Menu.MenuItemCollection menuItems, int MultiUnitCount, string[] UnitNames)
|
||||
{
|
||||
//get EP Annotations
|
||||
AnnotationTypeInfoList annotations = AnnotationTypeInfoList.Get();
|
||||
List<AnnotationTypeInfo> epAnnotations = new List<AnnotationTypeInfo>();
|
||||
foreach (AnnotationTypeInfo tmp in annotations)
|
||||
{
|
||||
if (tmp.IsEPAnnotationType) epAnnotations.Add(tmp);
|
||||
}
|
||||
|
||||
if (epAnnotations.Count == 0) return; // no Electronic Procedures
|
||||
|
||||
//add outer menu
|
||||
MenuItem mi = menuItems.Add("Electronic Procedure Viewer Export");
|
||||
foreach (AnnotationTypeInfo epAnn in epAnnotations)
|
||||
{
|
||||
//Add item for each individual EP Viewer
|
||||
MenuItem mv = mi.MenuItems.Add(epAnn.Name);
|
||||
|
||||
//tag will be of format:
|
||||
//{EP Annotation Type ID},{Unit}
|
||||
//if not multi-unit, unit will be zero.
|
||||
if (MultiUnitCount > 1)
|
||||
{
|
||||
//if multi-unit, add menu item for each unit
|
||||
int k = 0;
|
||||
foreach (string s in UnitNames)
|
||||
{
|
||||
k++;
|
||||
MenuItem multiunit_mv = mv.MenuItems.Add(s);
|
||||
multiunit_mv.Tag = $"{epAnn.TypeID},{k}";
|
||||
multiunit_mv.Click += new EventHandler(miEP_Click);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mv.Tag = $"{epAnn.TypeID},0";
|
||||
mv.Click += new EventHandler(miEP_Click);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void AddApprovedRevisionsMultiUnit(Menu.MenuItemCollection menuItemCollection, ProcedureInfo pri)
|
||||
{
|
||||
_currentPri = pri;
|
||||
RevisionInfoList ril = RevisionInfoList.GetByItemID(pri.ItemID);
|
||||
@ -1410,11 +1485,11 @@ namespace Volian.Controls.Library
|
||||
ril = null;
|
||||
}
|
||||
}
|
||||
public void AddNewNode(IVEDrillDownReadOnly o)
|
||||
{
|
||||
VETreeNode tn = new VETreeNode(o);
|
||||
SelectedNode.Nodes.Add(tn);
|
||||
}
|
||||
public void AddNewNode(IVEDrillDownReadOnly o)
|
||||
{
|
||||
VETreeNode tn = new VETreeNode(o);
|
||||
SelectedNode.Nodes.Add(tn);
|
||||
}
|
||||
private void AddApprovedRevisions(Menu.MenuItemCollection menuItemCollection, ProcedureInfo pri)
|
||||
{
|
||||
try
|
||||
@ -1423,7 +1498,7 @@ namespace Volian.Controls.Library
|
||||
_currentPri = pri;
|
||||
using (RevisionInfoList ril = RevisionInfoList.GetByItemID(pri.ItemID))
|
||||
{
|
||||
//_MyLog.WarnFormat("Context Menu 1 After GET - {0}", GC.GetTotalMemory(true));
|
||||
//_MyLog.WarnFormat("Context Menu 1 After GET - {0}", GC.GetTotalMemory(true));
|
||||
if (ril.Count == 0) return; // no versions to list
|
||||
MenuItem mi = menuItemCollection.Add("Versions");
|
||||
int lastApprovedRevisionID = 0;
|
||||
@ -1557,7 +1632,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
vlnTreeViewPdfArgs args = new vlnTreeViewPdfArgs(Volian.Base.Library.TmpFile.CreateFileName(ProcedureInfo.Get(ri.ItemID).PDFNumber), ri.LatestVersion.PDF, superceded ? "Superceded" : "");
|
||||
OnViewPDF(sender, args);
|
||||
// System.Diagnostics.Process pp = System.Diagnostics.Process.Start(GetDocPdf(ri, superceded));
|
||||
// System.Diagnostics.Process pp = System.Diagnostics.Process.Start(GetDocPdf(ri, superceded));
|
||||
}
|
||||
void MultiUnitApprovedRevision_Click(object sender, EventArgs e)
|
||||
{
|
||||
@ -1701,7 +1776,7 @@ namespace Volian.Controls.Library
|
||||
if (iiClipboard.IsRtfRaw) canPaste = false; // never paste an equation.
|
||||
if (canPaste) cm.MenuItems.Add("Paste Procedure", new EventHandler(mi_Click));
|
||||
}
|
||||
#endregion
|
||||
#endregion
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2000,7 +2075,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
ItemInfo lprc = ItemInfo.Get(ed.ItemID);
|
||||
bool hasValidConnectingProc = CheckForValidEnhLink(lprc);
|
||||
// if there is a valid connection, unlink both. Otherwise, just unlink this selected procedure.
|
||||
// if there is a valid connection, unlink both. Otherwise, just unlink this selected procedure.
|
||||
if (hasValidConnectingProc)
|
||||
lprc.DoUnlinkEnhanced(lprc, ed.Type, !hasValidConnectingProc);
|
||||
else
|
||||
@ -2024,11 +2099,11 @@ namespace Volian.Controls.Library
|
||||
OnNodeSI(this, new vlnTreeEventArgs(tn, null, 0));
|
||||
return;
|
||||
}
|
||||
if (mi.Text.StartsWith("Collapse"))
|
||||
{
|
||||
if (mi.Text.StartsWith("Collapse"))
|
||||
{
|
||||
CollapseProcedures();
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (mi.Text == "Print Transition Report")
|
||||
{
|
||||
OnPrintTransitionReport(this, new vlnTreeEventArgs(SelectedNode as VETreeNode));
|
||||
@ -2044,17 +2119,17 @@ namespace Volian.Controls.Library
|
||||
|
||||
|
||||
|
||||
if (mi.Text == "Export Procedure Set" || mi.Text == "Export Procedure")
|
||||
{
|
||||
OnExportImportProcedureSets(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
|
||||
return;
|
||||
}
|
||||
if (mi.Text == "Import Procedure Set" || mi.Text == "Import Procedure")
|
||||
{
|
||||
OnExportImportProcedureSets(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 1));
|
||||
return;
|
||||
}
|
||||
if (mi.Text.StartsWith("Procedure Checked Out to") || mi.Text.StartsWith("Document Checked Out to"))
|
||||
if (mi.Text == "Export Procedure Set" || mi.Text == "Export Procedure")
|
||||
{
|
||||
OnExportImportProcedureSets(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
|
||||
return;
|
||||
}
|
||||
if (mi.Text == "Import Procedure Set" || mi.Text == "Import Procedure")
|
||||
{
|
||||
OnExportImportProcedureSets(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 1));
|
||||
return;
|
||||
}
|
||||
if (mi.Text.StartsWith("Procedure Checked Out to") || mi.Text.StartsWith("Document Checked Out to"))
|
||||
{
|
||||
OnProcedureCheckedOutTo(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
|
||||
return;
|
||||
@ -2124,7 +2199,7 @@ namespace Volian.Controls.Library
|
||||
tv_NodeCopy();
|
||||
break;
|
||||
// lots of paste options:
|
||||
case "Paste Procedure":
|
||||
case "Paste Procedure":
|
||||
case "Paste Procedure Before":
|
||||
case "Paste Procedure After":
|
||||
case "Paste Section":
|
||||
@ -2226,12 +2301,12 @@ namespace Volian.Controls.Library
|
||||
case "Create Continuous Action Summary":
|
||||
OnCreateContinuousActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
|
||||
break;
|
||||
// F2022-024 Time Critical Action Summary
|
||||
// F2022-024 Time Critical Action Summary
|
||||
case "Create Time Critical Action Summary":
|
||||
OnCreateTimeCriticalActionSummary(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
|
||||
break;
|
||||
// B2017-243 added the following two Cannot Paste items when dealing with enhanced documents
|
||||
// when then user selects these menu items a message box will appear giving more information as to why it cannot be pasted
|
||||
// B2017-243 added the following two Cannot Paste items when dealing with enhanced documents
|
||||
// when then user selects these menu items a message box will appear giving more information as to why it cannot be pasted
|
||||
case "CANNOT PASTE HERE. Click for more information...":
|
||||
FlexibleMessageBox.Show("You have copied a document that is linked to an Enhanced Document.\n\n" +
|
||||
"It can only be pasted before or after another document, within the set, that is linked to an Enhanced Document.", "Cannot Paste Here");
|
||||
@ -2255,6 +2330,23 @@ namespace Volian.Controls.Library
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//C2025-024 Electronic Procedures - Phase 2 (PROMS XML output)
|
||||
// Handles clicking of items in the context menu
|
||||
// for exporting Electronic Procedures
|
||||
// tag will be of format:
|
||||
// {EP Annotation Type ID},{Unit}
|
||||
// if not multi-unit, unit will be zero.
|
||||
void miEP_Click(object sender, EventArgs e)
|
||||
{
|
||||
MenuItem mi = sender as MenuItem;
|
||||
int annTypeid = int.Parse(((string)mi.Tag).Split(',')[0]);
|
||||
int unit = int.Parse(((string)mi.Tag).Split(',')[1]);
|
||||
if (unit == 0)
|
||||
OnExportImportProcedureSets(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, annTypeid));
|
||||
else
|
||||
OnExportImportProcedureSets(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0, "", unit, annTypeid));
|
||||
}
|
||||
private bool _doingCollapseNode = false; // B2016-058 when collapse is done, it always calls the drag node event which doesn't appear to be needed
|
||||
private void CollapseProcedures()
|
||||
{
|
||||
@ -2273,7 +2365,7 @@ namespace Volian.Controls.Library
|
||||
foreach (VETreeNode tnc in tn.Nodes)
|
||||
CollapseProcedures(tnc);
|
||||
if (tn.VEObject as DocVersionInfo == null && tn.VEObject as FolderInfo == null)
|
||||
tn.Collapse();
|
||||
tn.Collapse();
|
||||
_doingCollapseNode = true; // B2016-058 this will prevent a Drag Node error when collapsing an RNOs, Cautions, or Notes tree node
|
||||
}
|
||||
private void tv_RemoveChgIds()
|
||||
@ -2333,7 +2425,7 @@ namespace Volian.Controls.Library
|
||||
using (DocVersion dv = DocVersion.Get(MyDVI.VersionID))
|
||||
{
|
||||
swROUpdate = new System.IO.StreamWriter(ROFstInfo.ROUpdateResultsPath(MyDVI)); // RO changes placed in file in the Documents\VEPROMS folder
|
||||
// B2022-026 RO Memory Reduction code - first load the new ro.fst so that we can assign the ROTableUpdate event to the correct roFstInfo
|
||||
// B2022-026 RO Memory Reduction code - first load the new ro.fst so that we can assign the ROTableUpdate event to the correct roFstInfo
|
||||
if (dv.ROfstLoadingFigures || dv.NewerRoFst) // B2017-125 see if loading figures was completed
|
||||
{
|
||||
// only load the RO.fst
|
||||
@ -2584,7 +2676,7 @@ namespace Volian.Controls.Library
|
||||
|
||||
|
||||
//if (p.IndexOf("Replace") <= -1)
|
||||
this.Cursor = Cursors.Default;
|
||||
this.Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
public void PasteAsDocVersionChild(VETreeNode tn, int copyStartID)
|
||||
@ -2716,7 +2808,7 @@ namespace Volian.Controls.Library
|
||||
SelectedNode.Nodes.Add(tn1); // add tree node to end of list.
|
||||
SelectedNode = tn1;
|
||||
}
|
||||
private void tv_NodeCopy()
|
||||
private void tv_NodeCopy()
|
||||
{
|
||||
if (SelectedNode == null) return;
|
||||
VETreeNode tn = SelectedNode as VETreeNode;
|
||||
@ -2754,7 +2846,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
using (Folder folder = folderInfo.Get())
|
||||
{
|
||||
OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(string.Format("{0} Properties", folder.FolderConfig.Name), folder.FolderConfig));
|
||||
OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(string.Format("{0} Properties", folder.FolderConfig.Name), folder.FolderConfig));
|
||||
}
|
||||
}
|
||||
private void OpenProperties(DocVersionInfo dvInfo)
|
||||
@ -2768,7 +2860,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
using (Procedure proc = procInfo.Get())
|
||||
{
|
||||
OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(string.Format("{0} {1} Properties", proc.ProcedureConfig.Number, proc.ProcedureConfig.Title), proc.ProcedureConfig));
|
||||
OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(string.Format("{0} {1} Properties", proc.ProcedureConfig.Number, proc.ProcedureConfig.Title), proc.ProcedureConfig));
|
||||
}
|
||||
}
|
||||
private void OpenProperties(SectionInfo sectInfo)
|
||||
@ -2781,7 +2873,7 @@ namespace Volian.Controls.Library
|
||||
title = string.Format("{0} {1} Properties", sectInfo.SectionConfig.Number, sectInfo.SectionConfig.Title);
|
||||
else
|
||||
title = string.Format("{0} Properties", sectInfo.SectionConfig.Title);
|
||||
OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(title, sect.SectionConfig));
|
||||
OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(title, sect.SectionConfig));
|
||||
}
|
||||
}
|
||||
private void OpenProperties(StepInfo stpinfo)
|
||||
@ -2919,7 +3011,7 @@ namespace Volian.Controls.Library
|
||||
procedure.Save();
|
||||
tn = new VETreeNode(_LastProcedureInfo);
|
||||
SelectedNode.Nodes.Add(tn); // add tree node to end of list.
|
||||
// The following line will allow for a refresh of the procedure list on the Working Draft's treenodes docversion (B2016-034)
|
||||
// The following line will allow for a refresh of the procedure list on the Working Draft's treenodes docversion (B2016-034)
|
||||
if (((SelectedNode as VETreeNode).VEObject as DocVersionInfo) != null) ((SelectedNode as VETreeNode).VEObject as DocVersionInfo).ResetProcedures();
|
||||
if (procedure.MyProcedureInfo.CreateEnhanced)
|
||||
{
|
||||
@ -2971,11 +3063,11 @@ namespace Volian.Controls.Library
|
||||
string message = string.Empty;
|
||||
if (_LastProcedureInfo != null)
|
||||
if (!MySessionInfo.CanCheckOutItem(_LastProcedureInfo.ItemID, CheckOutType.Procedure, ref message))
|
||||
{
|
||||
FlexibleMessageBox.Show(this, message, "Item Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
OnUnPauseRefresh(this, null);
|
||||
return;
|
||||
}
|
||||
{
|
||||
FlexibleMessageBox.Show(this, message, "Item Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
OnUnPauseRefresh(this, null);
|
||||
return;
|
||||
}
|
||||
int s1 = -1;
|
||||
if (!(_LastProcedureInfo == null) || !(_LastSectionInfo == null))
|
||||
{
|
||||
@ -3028,8 +3120,8 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
tn = new VETreeNode(_LastSectionInfo);
|
||||
SelectedNode.Nodes.Add(tn); // add tree node to end of list.
|
||||
// if the new section was flagged as either having an enhanced link for Title or Contents, create the
|
||||
// Enhanced section:
|
||||
// if the new section was flagged as either having an enhanced link for Title or Contents, create the
|
||||
// Enhanced section:
|
||||
Section sectiontmp = Section.Get(section.ItemID); // need to do this because of 'caching' problem.
|
||||
if (sectiontmp.SectionConfig.LinkEnhanced == "T" || sectiontmp.SectionConfig.LinkEnhanced == "Y")
|
||||
CreateEnhancedForSection(newtype, sectiontmp, savLastSectionInfo, sectiontmp.DisplayNumber, sectiontmp.MyContent.Text);
|
||||
@ -3057,7 +3149,7 @@ namespace Volian.Controls.Library
|
||||
if (s1 != -1)
|
||||
{
|
||||
DeleteItemInfoAndChildren(_LastSectionInfo);// Delete Item and reset Previous and Next
|
||||
// B2020-087 refresh the tree node after canceling the creation of the subsection
|
||||
// B2020-087 refresh the tree node after canceling the creation of the subsection
|
||||
_LastTreeNode.ChildrenLoaded = false;
|
||||
_LastTreeNode.RefreshNode();
|
||||
_LastTreeNode.Collapse();
|
||||
@ -3104,7 +3196,7 @@ namespace Volian.Controls.Library
|
||||
if (s2 != -1)
|
||||
{
|
||||
DeleteItemInfoAndChildren(_LastSectionInfo);// Delete Item and reset Previous and Next
|
||||
// B2020-087 refresh the tree node after canceling the creation of the subsection
|
||||
// B2020-087 refresh the tree node after canceling the creation of the subsection
|
||||
_LastTreeNode.ChildrenLoaded = false;
|
||||
_LastTreeNode.RefreshNode();
|
||||
_LastTreeNode.Collapse();
|
||||
@ -4046,7 +4138,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
return;
|
||||
}
|
||||
//if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("Line at {0} Node {1}[{2}] {3}", _location, _dropNode.Text, _index, _position.ToString());
|
||||
//if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("Line at {0} Node {1}[{2}] {3}", _location, _dropNode.Text, _index, _position.ToString());
|
||||
// Changed the color of the drag indicator to always be red
|
||||
Color lc = (_position == DropPosition.After ? Color.Red : Color.Red);
|
||||
Brush lb = (_position == DropPosition.After ? Brushes.Red : Brushes.Red);
|
||||
@ -4073,12 +4165,12 @@ namespace Volian.Controls.Library
|
||||
//if (e.Effect == DragDropEffects.None) return;
|
||||
if (_dropNode != null)
|
||||
{
|
||||
// if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("ShowLocation1 {0} {1}", e.Effect.ToString(), DateTime.Now.Millisecond);
|
||||
// if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("ShowLocation1 {0} {1}", e.Effect.ToString(), DateTime.Now.Millisecond);
|
||||
DragHelper.ImageList_DragShowNolock(false);
|
||||
TreeView tv = _dropNode.TreeView;
|
||||
TreeNode tmp = tv.GetNodeAt(tv.PointToClient(new Point(e.X, e.Y)));
|
||||
// if (!ScrollOnly)
|
||||
// {
|
||||
// if (!ScrollOnly)
|
||||
// {
|
||||
if (ScrollTreeView(tmp) || !ScrollOnly)
|
||||
{
|
||||
//if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("ShowLocation2 {0} {1}", e.Effect.ToString(), DateTime.Now.Millisecond);
|
||||
@ -4091,8 +4183,8 @@ namespace Volian.Controls.Library
|
||||
if (_position != DropPosition.Child) InsertPointer(tmp, g);
|
||||
}
|
||||
}
|
||||
// }
|
||||
// else ScrollTreeView(tmp);
|
||||
// }
|
||||
// else ScrollTreeView(tmp);
|
||||
DragHelper.ImageList_DragShowNolock(true);
|
||||
}
|
||||
}
|
||||
@ -4115,10 +4207,10 @@ namespace Volian.Controls.Library
|
||||
tn.NextVisibleNode.EnsureVisible();// Make sure that the next node is visible
|
||||
else
|
||||
if (tn.PrevVisibleNode != null && tn.PrevVisibleNode.PrevVisibleNode != null && tn.PrevVisibleNode.PrevVisibleNode.IsVisible == false)
|
||||
tn.PrevVisibleNode.PrevVisibleNode.EnsureVisible();// Make sure that the previous node is visible }
|
||||
else
|
||||
tn.PrevVisibleNode.PrevVisibleNode.EnsureVisible();// Make sure that the previous node is visible }
|
||||
else
|
||||
if (tn.PrevVisibleNode != null && tn.PrevVisibleNode.IsVisible == false)
|
||||
tn.PrevVisibleNode.EnsureVisible();// Make sure that the previous node is visible
|
||||
tn.PrevVisibleNode.EnsureVisible();// Make sure that the previous node is visible
|
||||
retval = (top != tn.Bounds.Top);
|
||||
// if (retval) if(_MyLog.IsInfoEnabled)_MyLog.Info("Scroll");
|
||||
}
|
||||
@ -4347,28 +4439,28 @@ namespace Volian.Controls.Library
|
||||
if (_MyLog.IsErrorEnabled) _MyLog.Error("tv_DragDrop", ex);
|
||||
}
|
||||
}
|
||||
// private void DumpMembers(object o)
|
||||
// {
|
||||
// Type t = o.GetType();
|
||||
// //if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("\r\n\r\nMembers for type {0}", t.ToString());
|
||||
// MemberInfo[] mis = t.GetMembers();
|
||||
// int i = 0;
|
||||
// foreach (MemberInfo mi in mis)
|
||||
// {
|
||||
// i++;
|
||||
// try
|
||||
// {
|
||||
// //if(mi.MemberType != MemberTypes.Method)
|
||||
// //if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("{0} {1} {2}", i, mi.Name, mi.MemberType);
|
||||
//// if (fi.Name == "TreeView")
|
||||
//// fi.SetValue(o, null);
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// if(_MyLog.IsErrorEnabled)_MyLog.Error("DumpMembers", ex);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// private void DumpMembers(object o)
|
||||
// {
|
||||
// Type t = o.GetType();
|
||||
// //if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("\r\n\r\nMembers for type {0}", t.ToString());
|
||||
// MemberInfo[] mis = t.GetMembers();
|
||||
// int i = 0;
|
||||
// foreach (MemberInfo mi in mis)
|
||||
// {
|
||||
// i++;
|
||||
// try
|
||||
// {
|
||||
// //if(mi.MemberType != MemberTypes.Method)
|
||||
// //if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("{0} {1} {2}", i, mi.Name, mi.MemberType);
|
||||
//// if (fi.Name == "TreeView")
|
||||
//// fi.SetValue(o, null);
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// if(_MyLog.IsErrorEnabled)_MyLog.Error("DumpMembers", ex);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
private TreeNode Clone(TreeNode tn)
|
||||
{
|
||||
|
||||
|
@ -1688,7 +1688,7 @@ namespace Volian.Print.Library
|
||||
System.Windows.Forms.MessageBox.Show(msg.ToString(), "Error during PDF creation for search:", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation);
|
||||
}
|
||||
|
||||
private static string BuildStepTab(ItemInfo item)
|
||||
public static string BuildStepTab(ItemInfo item)
|
||||
{
|
||||
if (item == null)
|
||||
return string.Empty;
|
||||
|
Loading…
x
Reference in New Issue
Block a user