From 629fe1b6154050ff4c54febd2605fb3e2f0d5e4b Mon Sep 17 00:00:00 2001 From: Kevin Laskey Date: Wed, 19 Jun 2024 13:50:52 -0400 Subject: [PATCH] Updated to include passing teh selected tree node parent for cases where the only procedure in a folder is being replaced. otherwise i pass null for that as its not really used. --- .../Extension/ItemInsertExt.cs | 23 ++++++++--- PROMS/Volian.Controls.Library/EditItem.cs | 3 +- PROMS/Volian.Controls.Library/vlnTreeView.cs | 40 ++++++++++++++----- 3 files changed, 49 insertions(+), 17 deletions(-) diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs index 34b307ee..26487957 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs @@ -1309,7 +1309,8 @@ namespace VEPROMS.CSLA.Library else if (addType == EAddpingPart.Replace) // what about user interface for enhanced pasted steps? { ItemInfo enhReplaceItem = ItemInfo.Get(edSource.ItemID); - newEnhancedItemInfo = Item.PasteReplace(enhReplaceItem, tmpCopyEnhancedID, chgid); + TreeNode trn = null; + newEnhancedItemInfo = Item.PasteReplace(enhReplaceItem, tmpCopyEnhancedID, chgid, trn); } // update the config data for the new enhanced item (procedure, section or step) to point back to the correct source @@ -2497,13 +2498,16 @@ namespace VEPROMS.CSLA.Library } #endregion #region PasteReplace - public static ItemInfo PasteReplace(ItemInfo itemInfo, int copyStartID, string chgid) + + + + public static ItemInfo PasteReplace(ItemInfo itemInfo, int copyStartID, string chgid, TreeNode treeNodeReplace) { - bool tmp= false; - return PasteReplace(itemInfo, copyStartID, chgid, ref tmp); + bool tmp = false; + return PasteReplace(itemInfo, copyStartID, chgid, treeNodeReplace, ref tmp); } // B2017-179 return a bool (firstTrans) if we could not replace the step but the user wants to position to the first transition that needs resolved - public static ItemInfo PasteReplace(ItemInfo itemInfo, int copyStartID, string chgid, ref bool firstTrans) + public static ItemInfo PasteReplace(ItemInfo itemInfo, int copyStartID, string chgid, TreeNode treeNodeReplace, ref bool firstTrans) { firstTrans = false; if (!CanDeleteObject()) @@ -2560,7 +2564,14 @@ namespace VEPROMS.CSLA.Library } else { - newItemInfo.MyParent.OnNewChild(new ItemInfoInsertEventArgs(newItemInfo, ItemInfo.EAddpingPart.Child)); + //Create tree node for copied procedure when no other procedures exist in the folder + VETreeNode vtn = treeNodeReplace as VETreeNode; + DocVersionInfo dvi = vtn.VEObject as DocVersionInfo; + + ItemInfo newProc = dvi.PasteChild(copyStartID); + VETreeNode tn1 = new VETreeNode(newProc); + treeNodeReplace.Nodes.Add(tn1); // add tree node to end of list. + treeNodeReplace = tn1; } return newItemInfo; } diff --git a/PROMS/Volian.Controls.Library/EditItem.cs b/PROMS/Volian.Controls.Library/EditItem.cs index 545d7885..1862999b 100644 --- a/PROMS/Volian.Controls.Library/EditItem.cs +++ b/PROMS/Volian.Controls.Library/EditItem.cs @@ -1836,7 +1836,8 @@ namespace Volian.Controls.Library bool gotoFirstTrans = false; try { - newItemInfo = Item.PasteReplace(MyItemInfo, copyStartID, GetChangeId(MyItemInfo), ref gotoFirstTrans); + TreeNode treeNodeReplace = null; + newItemInfo = Item.PasteReplace(MyItemInfo, copyStartID, GetChangeId(MyItemInfo), treeNodeReplace, ref gotoFirstTrans); if (gotoFirstTrans) //B2017-179 could not replace step, we are positioning onto the first transition that needs resolved { MyStepPanel.MyStepTabPanel.MyDisplayTabControl.OpenItem(newItemInfo); diff --git a/PROMS/Volian.Controls.Library/vlnTreeView.cs b/PROMS/Volian.Controls.Library/vlnTreeView.cs index 17505c56..5757a7b0 100644 --- a/PROMS/Volian.Controls.Library/vlnTreeView.cs +++ b/PROMS/Volian.Controls.Library/vlnTreeView.cs @@ -2035,7 +2035,8 @@ namespace Volian.Controls.Library if (ovewriteEx == DialogResult.Cancel) break; else - { + { + TreeNode treenodeDirectory = SelectedNode.Parent; tv_NodePaste(mi.Text); break; } @@ -2407,6 +2408,7 @@ namespace Volian.Controls.Library } } VETreeNode tn = SelectedNode as VETreeNode; + TreeNode treeNodeReplace = SelectedNode.Parent; //Get Tree Node of Parent we are proc we are placing into. DocVersionInfo dvi = tn.VEObject as DocVersionInfo; // Check for paste into a docversion - queries/code is different than paste related to an item (into a proc or section) if (dvi != null) @@ -2442,8 +2444,8 @@ namespace Volian.Controls.Library else if (p.IndexOf("After") > -1) PasteBeforeOrAfter(MenuSelections.StepAfter, tn, iiClipboard.ItemID); else if (p.IndexOf("Replace") > -1) - { - PasteReplace(tn, iiClipboard.ItemID); + { + PasteReplace(tn, iiClipboard.ItemID, treeNodeReplace); } else // paste as child PasteAsChild(tn, iiClipboard.ItemID); @@ -2452,7 +2454,7 @@ namespace Volian.Controls.Library this.Cursor = Cursors.Default; } - private void PasteAsDocVersionChild(VETreeNode tn, int copyStartID) + public void PasteAsDocVersionChild(VETreeNode tn, int copyStartID) { // Only need to handle paste in tree since this will create a new procedure. DocVersionInfo dvi = tn.VEObject as DocVersionInfo; @@ -2539,7 +2541,7 @@ namespace Volian.Controls.Library } SelectedNode = (VETreeNode)((newtype == MenuSelections.StepAfter) ? tn.NextNode : tn.PrevNode); } - private void PasteReplace(VETreeNode tn, int copyStartID) + private void PasteReplace(VETreeNode tn, int copyStartID, TreeNode treeNodeReplace) { VETreeNode prevtn = (VETreeNode) tn.PrevNode; VETreeNode partn = (VETreeNode) tn.Parent; @@ -2550,7 +2552,7 @@ namespace Volian.Controls.Library { // first, check if a changeid is required. string chgId = OnGetChangeId(this, new vlnTreeItemInfoEventArgs(ii)); - ItemInfo replItemInfo = Item.PasteReplace(ii, copyStartID, chgId); + ItemInfo replItemInfo = Item.PasteReplace(ii, copyStartID, chgId, treeNodeReplace); StepConfig replItemConfig = ii.MyConfig as StepConfig; if (replItemInfo != null) @@ -2563,12 +2565,30 @@ namespace Volian.Controls.Library } - private void tv_NodeCopy() + public void PasteRepalceEmpty(VETreeNode tn, int copyStartID) { - if (SelectedNode==null)return; - VETreeNode tn = SelectedNode as VETreeNode; - OnNodeCopy(this, new vlnTreeEventArgs(tn)); + // Only need to handle paste in tree since this will create a new procedure. + DocVersionInfo dvi = tn.VEObject as DocVersionInfo; + if (dvi.DocVersionAssociationCount == 0) + { + // Set docversionassociation to the copied docversion association + // so that the rofst for ro's can be found. (if there is no association set) + ROFstInfo rfi = GetAssociationRofstId(copyStartID); + Association myAs = Association.MakeAssociation(dvi.Get(), rfi.GetJustROFst(), ""); + dvi.RefreshDocVersionAssociations(); + } + ItemInfo newProc = dvi.PasteChild(copyStartID); + VETreeNode tn1 = new VETreeNode(newProc); + SelectedNode.Nodes.Add(tn1); // add tree node to end of list. + SelectedNode = tn1; } + private void tv_NodeCopy() + { + if (SelectedNode == null) return; + VETreeNode tn = SelectedNode as VETreeNode; + OnNodeCopy(this, new vlnTreeEventArgs(tn)); + } + #endregion #region PropertyPagesInterface private void SetupNodeProperties()