From 49aba5c67b18fa46afad0ae6b2b6f4a5c48cb14e Mon Sep 17 00:00:00 2001 From: Kevin Laskey Date: Fri, 7 Jun 2024 10:34:46 -0400 Subject: [PATCH 1/4] update --- PROMS/Volian.Controls.Library/vlnTreeView.cs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/PROMS/Volian.Controls.Library/vlnTreeView.cs b/PROMS/Volian.Controls.Library/vlnTreeView.cs index 05e3d73e..5691a6ea 100644 --- a/PROMS/Volian.Controls.Library/vlnTreeView.cs +++ b/PROMS/Volian.Controls.Library/vlnTreeView.cs @@ -2018,7 +2018,6 @@ namespace Volian.Controls.Library // lots of paste options: case "Paste Procedure": case "Paste Procedure Before": - case "Replace Existing Procedure": case "Paste Procedure After": case "Paste Section": case "Paste Section Before": @@ -2031,6 +2030,17 @@ namespace Volian.Controls.Library case "Paste Subsection": tv_NodePaste(mi.Text); break; + case "Replace Existing Procedure": + DialogResult ovewriteEx = FlexibleMessageBox.Show("This will overwrite the procedure with then one you copied, would you like to overwrite it?\r\n\r\nSelecting 'Cancel' will cancel the paste action.", "Overwrite the procedure?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);// == DialogResult.Yes; + + if (ovewriteEx == DialogResult.Cancel) break; + else + { + tv_NodePaste(mi.Text); + break; + } + + case "Delete": if (tv_NodeDelete()) { @@ -2435,7 +2445,9 @@ namespace Volian.Controls.Library PasteReplace(tn, iiClipboard.ItemID); else // paste as child PasteAsChild(tn, iiClipboard.ItemID); - this.Cursor = Cursors.Default; + + if (p.IndexOf("Replace") <= -1) + this.Cursor = Cursors.Default; } private void PasteAsDocVersionChild(VETreeNode tn, int copyStartID) -- 2.47.2 From 9d1b99b08e8168e9e95695b8a9e0570d4c74e15a Mon Sep 17 00:00:00 2001 From: Kevin Laskey Date: Thu, 13 Jun 2024 09:00:49 -0400 Subject: [PATCH 2/4] Update --- PROMS/Volian.Controls.Library/vlnTreeView.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/PROMS/Volian.Controls.Library/vlnTreeView.cs b/PROMS/Volian.Controls.Library/vlnTreeView.cs index 5691a6ea..c9da73c4 100644 --- a/PROMS/Volian.Controls.Library/vlnTreeView.cs +++ b/PROMS/Volian.Controls.Library/vlnTreeView.cs @@ -2446,7 +2446,7 @@ namespace Volian.Controls.Library else // paste as child PasteAsChild(tn, iiClipboard.ItemID); - if (p.IndexOf("Replace") <= -1) + //if (p.IndexOf("Replace") <= -1) this.Cursor = Cursors.Default; } @@ -2552,7 +2552,6 @@ namespace Volian.Controls.Library StepConfig replItemConfig = ii.MyConfig as StepConfig; if (replItemInfo != null) { - OnOpenItem(this, new vlnTreeItemInfoEventArgs(replItemInfo)); ItemInfo newEnhStep = replItemInfo.PasteEnhancedItems(copyStartID, ii, ItemInfo.EAddpingPart.Replace, chgId); } } -- 2.47.2 From c92b888ec2ee32bf9153449878f030b6ffc36c5c Mon Sep 17 00:00:00 2001 From: Kevin Laskey Date: Tue, 18 Jun 2024 10:48:28 -0400 Subject: [PATCH 3/4] Update to close the procedure when opened during the paste/replace option. --- PROMS/Volian.Controls.Library/DisplayTabControl.cs | 8 +++++++- PROMS/Volian.Controls.Library/EditItem.cs | 1 + PROMS/Volian.Controls.Library/vlnTreeView.cs | 9 +++++++-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/PROMS/Volian.Controls.Library/DisplayTabControl.cs b/PROMS/Volian.Controls.Library/DisplayTabControl.cs index eb9fe50c..5df5eee1 100644 --- a/PROMS/Volian.Controls.Library/DisplayTabControl.cs +++ b/PROMS/Volian.Controls.Library/DisplayTabControl.cs @@ -688,8 +688,14 @@ namespace Volian.Controls.Library edtitm.PasteSiblingAfter(copyStartID); break; case ItemInfo.EAddpingPart.Replace: + EditItem ei = edtitm.PasteReplace(copyStartID); - if (ei == null) return false; //B2017-179 PasteReplace will return null if was aborted + if (ei == null) + { + CloseTabItem(_MyDisplayTabItems["Item - " + myItemInfo.ItemID.ToString()]); //Grab itemID and set to close open tab. + return false; //B2017-179 PasteReplace will return null if was aborted + } + if (ei.MyItemInfo.ItemID != edtitm.MyItemInfo.ItemID) { edtitm.Dispose(); diff --git a/PROMS/Volian.Controls.Library/EditItem.cs b/PROMS/Volian.Controls.Library/EditItem.cs index 8bb85288..545d7885 100644 --- a/PROMS/Volian.Controls.Library/EditItem.cs +++ b/PROMS/Volian.Controls.Library/EditItem.cs @@ -1825,6 +1825,7 @@ namespace Volian.Controls.Library EditItem newFocus = null; EditItem nextEditItem = MyNextEditItem; EditItem prevEditItem = MyPreviousEditItem; + if (MyStepPanel?.SelectedEditItem?.ActiveParent == null) return null; //Was causing an error when active parent was null and the replaced proc was opened in the editor. EditItem parentEditItem = ActiveParent; StepConfig savOrigPasteConfig = MyItemInfo.MyConfig as StepConfig; diff --git a/PROMS/Volian.Controls.Library/vlnTreeView.cs b/PROMS/Volian.Controls.Library/vlnTreeView.cs index c9da73c4..17505c56 100644 --- a/PROMS/Volian.Controls.Library/vlnTreeView.cs +++ b/PROMS/Volian.Controls.Library/vlnTreeView.cs @@ -2031,11 +2031,11 @@ namespace Volian.Controls.Library tv_NodePaste(mi.Text); break; case "Replace Existing Procedure": - DialogResult ovewriteEx = FlexibleMessageBox.Show("This will overwrite the procedure with then one you copied, would you like to overwrite it?\r\n\r\nSelecting 'Cancel' will cancel the paste action.", "Overwrite the procedure?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);// == DialogResult.Yes; + DialogResult ovewriteEx = FlexibleMessageBox.Show("This will overwrite the selected procedure with then one you copied, would you like to overwrite it?\r\n\r\nSelecting 'Cancel' will cancel the paste action.", "Overwrite the procedure?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);// == DialogResult.Yes; if (ovewriteEx == DialogResult.Cancel) break; else - { + { tv_NodePaste(mi.Text); break; } @@ -2442,7 +2442,9 @@ 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); + } else // paste as child PasteAsChild(tn, iiClipboard.ItemID); @@ -2549,6 +2551,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); + StepConfig replItemConfig = ii.MyConfig as StepConfig; if (replItemInfo != null) { @@ -2557,6 +2560,8 @@ namespace Volian.Controls.Library } // B2018-047: was crashing on the following line (before change it was casting the result to a VETreeNote when the partn.FirstNode was just a TreeNode) SelectedNode = prevtn != null ? prevtn.NextNode : partn.FirstNode; + + } private void tv_NodeCopy() { -- 2.47.2 From 629fe1b6154050ff4c54febd2605fb3e2f0d5e4b Mon Sep 17 00:00:00 2001 From: Kevin Laskey Date: Wed, 19 Jun 2024 13:50:52 -0400 Subject: [PATCH 4/4] 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() -- 2.47.2