Compare commits
97 Commits
B2025-004
...
505c396283
| Author | SHA1 | Date | |
|---|---|---|---|
| 505c396283 | |||
| 76502e6d97 | |||
| 851a0b3810 | |||
| fd8dbb4c8b | |||
| 4ffd994c5e | |||
| a34828113a | |||
| 461329468c | |||
| 35de5df04d | |||
| 4f0548fd60 | |||
| 5c1d96cc51 | |||
| 57049c0c52 | |||
| 31326e1c91 | |||
| 3c60994a0a | |||
| 773cc42346 | |||
| f46a1f39dc | |||
| b7175bf77f | |||
| ec22232aa8 | |||
| f303cd2236 | |||
| f40cef4416 | |||
| fbca97d38d | |||
| 28bd2cba5c | |||
| 4b35f73bbf | |||
| f4706eb126 | |||
| 21bcb90558 | |||
| ae48ac0cae | |||
| cb4979d5bc | |||
| 7d3ae74e1f | |||
| 9d680aa500 | |||
| 0d50b1c2fe | |||
| 75e034863f | |||
| 3b42de1571 | |||
| 668472286e | |||
| e00d34c99d | |||
| 9fb496dfb3 | |||
| f4eaa4a3ef | |||
| 5d50ed6bdf | |||
| d7ace4eaf9 | |||
| 16a4d335ea | |||
| ba69bb0772 | |||
| 455940caa2 | |||
| 439344757e | |||
| ad912691c9 | |||
| 237144aff6 | |||
| 810332d558 | |||
| f8431d0ba1 | |||
| 57c3bfa16a | |||
| 61f1077608 | |||
| 8877e968b9 | |||
| 4575c90bee | |||
| 21279a87ae | |||
| 3d5ad4a17e | |||
| 9bb7b044a8 | |||
| dc8f2f7561 | |||
| 829dbf84da | |||
| 7b156c17f8 | |||
| cbf7cbc164 | |||
| b04faa816e | |||
| 517ebe2902 | |||
| 03d0d314e3 | |||
| 3e804c5cce | |||
| ee2b8b538e | |||
| fdfd34fe92 | |||
| 2d6fb6523b | |||
| 3084bf3982 | |||
| 5ba51e8392 | |||
| fb5eb43e34 | |||
| b154056276 | |||
| c67b8f9ca1 | |||
| 95e4181360 | |||
| 32dffbe56b | |||
| 6b3c8d373b | |||
| db29107f47 | |||
| 355537f2ab | |||
| 0729ef0c21 | |||
| 6fe82bfd0f | |||
| 39bf072363 | |||
| da7c384fd8 | |||
| 95130fd9a0 | |||
| 978e2344a3 | |||
| c9bf45602c | |||
| aa160b2036 | |||
| f82b32d351 | |||
| e519dc9a57 | |||
| f020c37db9 | |||
| 5a4ec3b6b1 | |||
| 2602d6c9d2 | |||
| ff403583d7 | |||
| c5577cc2bd | |||
| 78be6e5dc1 | |||
| b954a41375 | |||
| 0100a11cfe | |||
| 04cf2e8534 | |||
| be00724818 | |||
| 274d93c61a | |||
| 7dc4c30436 | |||
| 028ef4bc31 | |||
| 42124d65c7 |
@@ -8447,7 +8447,97 @@ namespace VEPROMS.CSLA.Library
|
||||
Dr = dr;
|
||||
}
|
||||
}
|
||||
public static DataTable GetDisplayTabs(int itemID) //, string displayTabID, string displayTabName)
|
||||
{
|
||||
try
|
||||
{
|
||||
DataTable tmp = DataPortal.Fetch<DataTable>(new DisplayTabs(itemID, "", "")); //, displayTabID, displayTabName));
|
||||
//ItemInfo.AddList(tmp);
|
||||
//tmp.AddEvents();
|
||||
return tmp;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new DbCslaException("Error on ItemInfoList.GetChildren", ex);
|
||||
}
|
||||
}
|
||||
private DataTable dt = new DataTable();
|
||||
private DataTable DataPortal_Fetch(DisplayTabs criteria)
|
||||
{
|
||||
|
||||
using (SqlConnection cn = Database.VEPROMS_SqlConnection)
|
||||
{
|
||||
using (SqlCommand cm = cn.CreateCommand())
|
||||
{
|
||||
try
|
||||
{
|
||||
cm.CommandType = CommandType.StoredProcedure;
|
||||
cm.CommandText = "GetDisplayTabData";
|
||||
cm.CommandTimeout = Database.DefaultTimeout;
|
||||
SqlDataAdapter da = new SqlDataAdapter(cm);
|
||||
da.Fill(dt);
|
||||
cn.Close();
|
||||
da.Dispose();
|
||||
return dt;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//if (_MyLog.IsErrorEnabled) _MyLog.Error("ItemExt.DataPortal_Fetch", ex);
|
||||
throw new DbCslaException("ItemExt.DataPortal_Fetch", ex);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
//public static void AddDisplayTabsState(int itemID, string displayTabID, string displayTabName)
|
||||
//{
|
||||
// try
|
||||
// {
|
||||
// //DisplayTabs tmp =
|
||||
// DataPortal.Fetch<DisplayTabs>(new DisplayTabs(itemID, displayTabID, displayTabName)); //, displayTabID, displayTabName));
|
||||
// //ItemInfo.AddList(tmp);
|
||||
// //tmp.AddEvents();
|
||||
// //return tmp;
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// throw new DbCslaException("Error on ItemInfoList.GetChildren", ex);
|
||||
// }
|
||||
//}
|
||||
//private DataTable dt = new DataTable();
|
||||
//private void DataPortal_Fetch(int itemID, string displayTabID, string displayTabName)
|
||||
//{
|
||||
|
||||
// using (SqlConnection cn = Database.VEPROMS_SqlConnection)
|
||||
// {
|
||||
// using (SqlCommand cm = cn.CreateCommand())
|
||||
// {
|
||||
// try
|
||||
// {
|
||||
// cm.CommandType = CommandType.StoredProcedure;
|
||||
// cm.CommandText = "AddDisplayTabState";
|
||||
// cm.CommandTimeout = Database.DefaultTimeout;
|
||||
// cm.Parameters.AddWithValue("@ItemID", ItemID);
|
||||
// cm.Parameters.AddWithValue("@displayTabID", displayTabID);
|
||||
// cm.Parameters.AddWithValue("@displayTabName", displayTabName);
|
||||
// cm.ExecuteNonQuery();
|
||||
// //SqlDataAdapter da = new SqlDataAdapter(cm);
|
||||
// //da.Fill(dt);
|
||||
// //cn.Close();
|
||||
// //da.Dispose();
|
||||
// //return dt; // fix
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// //if (_MyLog.IsErrorEnabled) _MyLog.Error("ItemExt.DataPortal_Fetch", ex);
|
||||
// throw new DbCslaException("ItemExt.DataPortal_Fetch", ex);
|
||||
// }
|
||||
|
||||
// }
|
||||
// }
|
||||
|
||||
//}
|
||||
public static void AddDisplayTabsState(int itemID, string displayTabID, string displayTabName)
|
||||
//private void DataPortal_Fetch(int itemID, string displayTabID, string displayTabName)
|
||||
{
|
||||
|
||||
@@ -2650,174 +2650,97 @@ namespace VEPROMS.CSLA.Library
|
||||
firstTrans = false;
|
||||
if (!CanDeleteObject())
|
||||
throw new System.Security.SecurityException("User not authorized to remove a Item");
|
||||
// B2016-009 check source and destination types and display message box if needed
|
||||
// B2016-009 check source and desintation types and display message box if needed
|
||||
// C2022-017 moved the CheckSourceDestinationType call to btnPasteReplace_Click in StepTabRibbon
|
||||
// B2023-101 Handle Paste Replace when procedure to be replaced has Incoming Transitions, i.e. do a separate try/catch for this case
|
||||
ItemInfo newItemInfo = null;
|
||||
using (ItemInfo copyItemInfo = ItemInfo.Get(copyStartID))
|
||||
try
|
||||
{
|
||||
try
|
||||
// C2017-031: Support for paste/replace an enhanced step, if this is replacing enhanced, do a specific query
|
||||
if (itemInfo.IsEnhancedStep)
|
||||
{
|
||||
// C2017-031: Support for paste/replace an enhanced step, if this is replacing enhanced, do a specific query
|
||||
if (itemInfo.IsEnhancedStep)
|
||||
{
|
||||
newItemInfo = ItemInfo.CopyPasteReplaceEnhancedItemInfoFetch(copyStartID, itemInfo);
|
||||
if (newItemInfo == null) return null;
|
||||
}
|
||||
//C2025-003 Enhanced Copy/Paste Upgrade - Added support for paste/replace on a master step
|
||||
else if (itemInfo.HasEnhancedLinkedStep || copyItemInfo.HasEnhancedLinkedStep)
|
||||
{
|
||||
DialogResult rslt = DialogResult.No;
|
||||
|
||||
SectionConfig secCfg = itemInfo.ActiveSection.MyConfig as SectionConfig;
|
||||
if (copyItemInfo.HasEnhancedLinkedStep && secCfg.MyEnhancedDocuments.Count > 0)
|
||||
rslt = FlexibleMessageBox.Show("The step you are copying contains linked background documents." +
|
||||
"\r\n\r\nDo you also wish to make a copy of the background documents?",
|
||||
"Paste background documents", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
||||
|
||||
//unlink and remove any background documents attached to where you are copying to
|
||||
//and then delete them
|
||||
//if selected want to replace BG step (DialogResult.Yes)
|
||||
if (itemInfo.HasEnhancedLinkedStep && rslt == DialogResult.Yes)
|
||||
{
|
||||
foreach (EnhancedDocument ed in itemInfo.GetMyEnhancedDocuments())
|
||||
{
|
||||
using (ItemInfo exEnh = ItemInfo.Get(ed.ItemID))
|
||||
{
|
||||
exEnh.DoUnlinkEnhanced(exEnh, 0, false);
|
||||
DeleteItemAndChildren(exEnh);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//do copy/paste replace of the master step
|
||||
newItemInfo = ItemInfo.CopyPasteReplaceItemInfoFetch(copyStartID, itemInfo);
|
||||
if (newItemInfo == null) return null;
|
||||
|
||||
//copy any background documents
|
||||
//if selected want to replace BG step (DialogResult.Yes)
|
||||
if (copyItemInfo.HasEnhancedLinkedStep && rslt == DialogResult.Yes)
|
||||
{
|
||||
foreach (EnhancedDocument ed in copyItemInfo.GetMyEnhancedDocuments())
|
||||
{
|
||||
using (ItemInfo exEnh = newItemInfo.DoAddMissingEnhancedItems(ed.Type))
|
||||
{
|
||||
PasteReplace(exEnh, ed.ItemID, chgid, ref firstTrans);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else if (rslt == DialogResult.No)
|
||||
{
|
||||
//if selected didn't want to copy BG documents (DialogResult.No)
|
||||
//need to unlink BG doc from old removed content (what was pasted over top of)
|
||||
//re-link BG document to new paste replace master doc
|
||||
//this should also auto update the text of the main linked item
|
||||
//to match the new master doc wording
|
||||
|
||||
//get original BG documents
|
||||
EnhancedDocuments orig_eds = itemInfo.GetMyEnhancedDocuments();
|
||||
|
||||
//remove link from pre-existing BG docs
|
||||
foreach (EnhancedDocument ed in orig_eds)
|
||||
{
|
||||
using (ItemInfo exEnh = ItemInfo.Get(ed.ItemID))
|
||||
{ exEnh.DoUnlinkEnhanced(exEnh, 0, false); }
|
||||
}
|
||||
|
||||
//remove link from steps just copied
|
||||
ItemInfo.PasteClearEnhanced(newItemInfo);
|
||||
|
||||
//re-link pre-existing BG docs to newly replaced master step
|
||||
foreach (EnhancedDocument ed in orig_eds)
|
||||
{
|
||||
using (ItemInfo orig_ed_item = ItemInfo.Get(ed.ItemID))
|
||||
{ newItemInfo.DoCreateLinksEnhancedSingleItem(orig_ed_item, ed.Type); }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
newItemInfo = ItemInfo.CopyPasteReplaceItemInfoFetch(copyStartID, itemInfo); if (newItemInfo == null) return null;
|
||||
}
|
||||
newItemInfo = ItemInfo.CopyPasteReplaceEnhancedItemInfoFetch(copyStartID, itemInfo);
|
||||
if (newItemInfo == null) return null;
|
||||
}
|
||||
catch (Exception ex1)
|
||||
else
|
||||
{
|
||||
if (ex1.Message.Contains("has External Transitions and has no next step")
|
||||
newItemInfo = ItemInfo.CopyPasteReplaceItemInfoFetch(copyStartID, itemInfo); if (newItemInfo == null) return null;
|
||||
}
|
||||
}
|
||||
catch (Exception ex1)
|
||||
{
|
||||
if (ex1.Message.Contains("has External Transitions and has no next step")
|
||||
|| ex1.Message.Contains("has External Transitions to Procedure")
|
||||
|| ex1.Message.Contains("has External Transitions to it's children"))
|
||||
|
||||
{
|
||||
FlexibleMessageBox.Show("This procedure has external transition references to it that must be resolved before doing the Paste/Replace.\r\nRight Click on the procedure and select the Incoming Transitions menu option to find these references and resolve them.", "Paste Replace Failed", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
try
|
||||
{
|
||||
// Delete business objects, including remove from tree
|
||||
ItemInfo.DeleteItemInfoAndChildren(itemInfo.ItemID); // Dispose ItemInfo and Children
|
||||
using (Item item = Get(newItemInfo.ItemID)) ItemInfo.Refresh(item);
|
||||
ItemInfo.PasteSetChangeId(newItemInfo, chgid);
|
||||
if (!copyItemInfo.HasEnhancedLinkedStep && !itemInfo.HasEnhancedLinkedStep) ItemInfo.PasteClearEnhanced(newItemInfo);
|
||||
if (newItemInfo.NextItem != null) using (Item item = newItemInfo.NextItem.Get()) ItemInfo.Refresh(item);
|
||||
newItemInfo.RefreshNextItems();
|
||||
// if inserting after a caution or note, refreshes tabs. This will adjust bullets
|
||||
// of any previous cautions or notes.
|
||||
if (newItemInfo.IsCaution || newItemInfo.IsNote) newItemInfo.ResetOrdinal();
|
||||
newItemInfo.UpdateTransitionText();
|
||||
newItemInfo.UpdateROText();
|
||||
newItemInfo.UpdatePastedStepTransitionText();
|
||||
|
||||
// Add to tree
|
||||
if (newItemInfo.NextItem != null)
|
||||
{
|
||||
using (ItemInfo itm = ItemInfo.GetNonCached(newItemInfo.NextItem.ItemID))
|
||||
{
|
||||
itm.OnNewSiblingBefore(new ItemInfoInsertEventArgs(newItemInfo, ItemInfo.EAddpingPart.Before));
|
||||
}
|
||||
}
|
||||
else if (newItemInfo.PreviousID != null)
|
||||
{
|
||||
using (ItemInfo itm2 = ItemInfo.GetNonCached((int)newItemInfo.PreviousID))
|
||||
{
|
||||
itm2.OnNewSiblingAfter(new ItemInfoInsertEventArgs(newItemInfo, ItemInfo.EAddpingPart.After));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// B2024-045, 049 and 050: if not a single procedure replace, update user interface by using the 'OnNewChild'. Single
|
||||
// procedure's MyParent is null because its parent is a working draft (docversion) since MyParent's type is iteminfo.
|
||||
// For the single procedure case, the user interface code in vlntreeview will update the tree.
|
||||
if (newItemInfo.MyParent != null)
|
||||
newItemInfo.MyParent.OnNewChild(new ItemInfoInsertEventArgs(newItemInfo, ItemInfo.EAddpingPart.Child));
|
||||
}
|
||||
return newItemInfo;
|
||||
FlexibleMessageBox.Show("This procedure has external transition references to it that must be resolved before doing the Paste/Replace.\r\nRight Click on the procedure and select the Incoming Transitions menu option to find these references and resolve them.", "Paste Replace Failed", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
|
||||
return null;
|
||||
}
|
||||
catch (Exception ex)
|
||||
}
|
||||
try
|
||||
{
|
||||
// Delete business objects, including remove from tree
|
||||
ItemInfo.DeleteItemInfoAndChildren(itemInfo.ItemID); // Dispose ItemInfo and Children
|
||||
using (Item item = Get(newItemInfo.ItemID)) ItemInfo.Refresh(item);
|
||||
ItemInfo.PasteSetChangeId(newItemInfo, chgid);
|
||||
ItemInfo.PasteClearEnhanced(newItemInfo);
|
||||
if (newItemInfo.NextItem != null) using (Item item = newItemInfo.NextItem.Get()) ItemInfo.Refresh(item);
|
||||
newItemInfo.RefreshNextItems();
|
||||
// if inserting after a caution or note, refreshes tabs. This will adjust bullets
|
||||
// of any previous cautions or notes.
|
||||
if (newItemInfo.IsCaution || newItemInfo.IsNote) newItemInfo.ResetOrdinal();
|
||||
newItemInfo.UpdateTransitionText();
|
||||
newItemInfo.UpdateROText();
|
||||
newItemInfo.UpdatePastedStepTransitionText();
|
||||
|
||||
// Add to tree
|
||||
if (newItemInfo.NextItem != null)
|
||||
{
|
||||
ItemInfo iii = itemInfo.HandleSqlExceptionOnDelete(ex);
|
||||
if (iii == itemInfo) return null;// If self returned then return null
|
||||
if (iii != null)
|
||||
using (ItemInfo itm = ItemInfo.GetNonCached(newItemInfo.NextItem.ItemID))
|
||||
{
|
||||
firstTrans = true; // B2017-179 set the firstTrans to true and return the itminfo of the first transition location that needs resolved
|
||||
return iii;
|
||||
itm.OnNewSiblingBefore(new ItemInfoInsertEventArgs(newItemInfo, ItemInfo.EAddpingPart.Before));
|
||||
}
|
||||
if (!HandleSqlExceptionOnCopy(ex))
|
||||
{
|
||||
if (ex.Message.Contains("has External Transitions and has no next step")
|
||||
|| ex.Message.Contains("has External Transitions to Procedure")
|
||||
|| ex.Message.Contains("has External Transitions to it's children")
|
||||
|| ex.Message.Contains("This step has been deleted"))
|
||||
throw ex;
|
||||
|
||||
FlexibleMessageBox.Show("Details were written to the Error Log.", "Paste Replace Failed", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
|
||||
return itemInfo;
|
||||
}
|
||||
else
|
||||
return itemInfo;
|
||||
}
|
||||
else if (newItemInfo.PreviousID != null)
|
||||
{
|
||||
using (ItemInfo itm2 = ItemInfo.GetNonCached((int)newItemInfo.PreviousID))
|
||||
{
|
||||
itm2.OnNewSiblingAfter(new ItemInfoInsertEventArgs(newItemInfo, ItemInfo.EAddpingPart.After));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// B2024-045, 049 and 050: if not a single procedure replace, update user interface by using the 'OnNewChild'. Single
|
||||
// procedure's MyParent is null because its parent is a working draft (docversion) since MyParent's type is iteminfo.
|
||||
// For the single procedure case, the user interface code in vlntreeview will update the tree.
|
||||
if (newItemInfo.MyParent != null)
|
||||
newItemInfo.MyParent.OnNewChild(new ItemInfoInsertEventArgs(newItemInfo, ItemInfo.EAddpingPart.Child));
|
||||
}
|
||||
return newItemInfo;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ItemInfo iii = itemInfo.HandleSqlExceptionOnDelete(ex);
|
||||
if (iii == itemInfo) return null;// If self returned then return null
|
||||
if (iii != null)
|
||||
{
|
||||
firstTrans = true; // B2017-179 set the firstTrans to true and return the itminfo of the first transition location that needs resolved
|
||||
return iii;
|
||||
}
|
||||
if (!HandleSqlExceptionOnCopy(ex))
|
||||
{
|
||||
if (ex.Message.Contains("has External Transitions and has no next step")
|
||||
|| ex.Message.Contains("has External Transitions to Procedure")
|
||||
|| ex.Message.Contains("has External Transitions to it's children")
|
||||
|| ex.Message.Contains("This step has been deleted")
|
||||
)
|
||||
throw ex;
|
||||
FlexibleMessageBox.Show("Details were written to the Error Log.", "Paste Replace Failed", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
|
||||
return itemInfo;
|
||||
}
|
||||
else
|
||||
return itemInfo;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -1195,7 +1195,12 @@ namespace VEPROMS.CSLA.Library
|
||||
cm.CommandText = "GetDisplayTabdata";
|
||||
cm.CommandTimeout = Database.DefaultTimeout;
|
||||
cm.Parameters.AddWithValue("@UserID", UserID);
|
||||
//cm.ExecuteNonQuery();
|
||||
SqlDataAdapter da = new SqlDataAdapter(cm);
|
||||
//da.Fill(dt);
|
||||
//cn.Close();
|
||||
//da.Dispose();
|
||||
//return dt; // fix
|
||||
|
||||
SqlDataReader reader = cm.ExecuteReader();
|
||||
DataTable dt = new DataTable();
|
||||
@@ -1205,10 +1210,8 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//B2025-004
|
||||
//if it fails loading previously open tabs, simply treat it as if no tabs were open
|
||||
//instead of crashing
|
||||
return new DataTable();
|
||||
//if (_MyLog.IsErrorEnabled) _MyLog.Error("ItemExt.DeactivateStateDisplayTabTmp", ex);
|
||||
throw new DbCslaException("ItemExt.DeactivateStateDisplayTabTmp", ex);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1806,7 +1806,7 @@ namespace Volian.Controls.Library
|
||||
//B20170-158 Don't allow a step to replace a linked step
|
||||
//B2017-180: The fix for B2017-158 also needed the 'HasEnhancedLinkedStep' to check if the copied step is a source step
|
||||
// C2017-031: Support for paste/replace an enhanced step, enable button
|
||||
btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = enable;
|
||||
btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = enable && ((!MyItemInfo.IsEnhancedStep && !MyItemInfo.HasEnhancedLinkedStep) || (MyItemInfo.IsEnhancedStep));
|
||||
}
|
||||
private void SetPasteButtonEnabled()
|
||||
{
|
||||
@@ -1866,6 +1866,25 @@ namespace Volian.Controls.Library
|
||||
if (stepToCfg.MyEnhancedDocuments != null && stepToCfg.MyEnhancedDocuments.Count > 0 && stepToCfg.MyEnhancedDocuments[0].Type != 0) toSourceHasEnhancedLinks = true;
|
||||
}
|
||||
}
|
||||
// enhanced: if 'from' step is not enhanced, only allow paste before/after
|
||||
if (MyItemInfo.IsHigh && !MyItemInfo.IsEnhancedStep)
|
||||
{
|
||||
stepToCfg = MyItemInfo.MyConfig as StepConfig;
|
||||
if (stepToCfg.MyEnhancedDocuments != null && stepToCfg.MyEnhancedDocuments.Count > 0 && stepToCfg.MyEnhancedDocuments[0].Type != 0)
|
||||
{
|
||||
// Current selected step is source (i.e. has enhanced links to enhanced steps)
|
||||
// check if 'from' step is non. If so, allow paste before/after but not replace
|
||||
if (tmp.MyDisplayTabControl.MyCopyStep.IsHigh)
|
||||
{
|
||||
StepConfig fromCfg = tmp.MyDisplayTabControl.MyCopyStep.MyConfig as StepConfig;
|
||||
if (fromCfg != null && (fromCfg.MyEnhancedDocuments==null || fromCfg.MyEnhancedDocuments.Count==0))
|
||||
{
|
||||
btnPasteReplace.Enabled = btnCMPasteReplace.Enabled = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//copy item is high level step
|
||||
// Allow a High Level step to be pasted to a sub-step, but not to a table, figure, section or procedure type
|
||||
if (tmp.MyDisplayTabControl.MyCopyStep.IsHigh && (MyItemInfo.IsTable || MyItemInfo.IsFigure || MyItemInfo.IsSection || MyItemInfo.IsProcedure))
|
||||
|
||||
Reference in New Issue
Block a user