C2024-026 Add feature to the transitions panel to allow user to hold currently selected procedure/set in the panel.

This commit is contained in:
2024-11-05 10:59:01 -05:00
parent 592d28e898
commit e9ec884eb9
3 changed files with 601 additions and 494 deletions

View File

@@ -27,7 +27,31 @@ namespace Volian.Controls.Library
set
{
if (DesignMode || !Visible) return; // B2019-043 need to check if we are just saving changes to the user interface
if (value == null) // Insert a transition
//CSM-C2024-026 Evaluate the transitions panel
//Create a way to keep it from reverting the transition display panel to the currently selected item/transition.
//HeldLinkText will store if a transition was manually selected
//to override defaulting the listboxes to the current step / selected transition
if (HeldLinkText != "" && value != null)
{
//handle case where is held text and click on an already existing transition so cannot save one on top of the other.
_CurTrans = value;
btnTranSave.Enabled = false;
btnTranCancel.Enabled = true;
return;
}
else if (HeldLinkText != "" && MyRTB.MyItemInfo.ActiveFormat.Name == HeldLink_CurItemFrom.ActiveFormat.Name)
{
//this else if will handle case of defaulting to held transition instead of what has been clicked on
//Note that if format is not the same, it will ignore the held item
//This is because if different format, then options / selections may be different so will need to refresh the lists
if (_CurTrans == value && _CurItemFrom == HeldLink_CurItemFrom) return;
_CurItemFrom = HeldLink_CurItemFrom;
_TranFmtIndx = HeldLink_TranFmtIndx;
bool isenh = MyRTB != null && HeldLink_CurItemFrom != null && HeldLink_CurItemFrom.IsEnhancedStep;
btnTranSave.Enabled = !isenh && UserInfo.CanEdit(MyUserInfo, Mydvi) && (value == null); //Can Insert Transitions
btnTranCancel.Enabled = true;
}
else if (value == null) // Insert a transition
{
if (MyRTB == null) return;
if (_CurTrans == value && _CurItemFrom == MyRTB.MyItemInfo) return;
@@ -115,19 +139,13 @@ namespace Volian.Controls.Library
_MyRTB.LinkChanged += new StepRTBLinkEvent(_MyRTB_LinkChanged);
if (_MyRTB.MyLinkText == null)
{
CurTrans = null;
CurTrans = null;
}
}
}
}
void _MyRTB_LinkChanged(object sender, StepPanelLinkEventArgs args)
{
//if (_MyRTB.MyLinkText == null)
// CurTrans = null;
//else
//{
// StepPanelLinkEventArgs tmp = new StepPanelLinkEventArgs(null, e);
CurTrans = args.MyLinkText.MyTransitionInfo;
//}
CurTrans = args.MyLinkText.MyTransitionInfo;
}
private ItemInfo _CurrentItemProcedure; // the selected item's procedure
private ItemInfo _CurrentToProcedure; // the 'to' location's procedure (may be same as _CurrentItemProcedure)
@@ -138,6 +156,12 @@ namespace Volian.Controls.Library
private Color _OrigGroupPanelProcs;
private Color _OrigGroupPanelSects;
private Color _OrigGroupPanelSteps;
//CSM-C2024-026 Evaluate the transitions panel
//Create a way to keep it from reverting the transition display panel to the currently selected item/transition.
public string HeldLinkText { get; protected set; } = ""; //will hold link text to stay on
public int HeldLink_TranFmtIndx { get; protected set; } = 0; //this will hold transition format that was selected on held item
public ItemInfo HeldLink_CurItemFrom { get; protected set; } //this will hold item that transitioning from
#endregion
#region Constructors
public DisplayTransition()
@@ -237,7 +261,7 @@ namespace Volian.Controls.Library
if (selitm != null && selitm.MyContent.Type >= 20000)
{
if (_DoingRange)
if (_DoingRange && CurTrans != null)
{
tvInitHiliteRange(); //rangeSameLevel, stpitm, rngitm, (i1 < i2) ? i2 : i1);
}
@@ -938,6 +962,17 @@ namespace Volian.Controls.Library
}
_InitializingTrans = false;
SaveCancelEnabling();
//CSM-C2024-026 Evaluate the transitions panel
//Create a way to keep it from reverting the transition display panel to the currently selected item/transition.
//If checkbox is checked to enable holding an item,
//then store the first step in the currently selected item
if (cbHoldProcSet.Checked && secitm.Steps != null && secitm.Steps.Count > 0)
{
HeldLinkText = string.Format("#Link:Transition:{0} <NewID> {1}", listBoxTranFmt.SelectedIndex, secitm.Steps[0].ItemID);
HeldLink_TranFmtIndx = listBoxTranFmt.SelectedIndex;
HeldLink_CurItemFrom = secitm.Steps[0];
}
}
}
// B2024-016 Hide the step tree when the transition definition does not include a step number {First Step}
@@ -1089,6 +1124,18 @@ namespace Volian.Controls.Library
return;
}
SaveCancelEnabling();
//CSM-C2024-026 Evaluate the transitions panel
//Create a way to keep it from reverting the transition display panel to the currently selected item/transition.
//If checkbox is checked to enable holding an item,
//then store the currently selected item
if (cbHoldProcSet.Checked)
{
HeldLinkText = string.Format("#Link:Transition:{0} <NewID> {1}", listBoxTranFmt.SelectedIndex, selii.ItemID);
HeldLink_TranFmtIndx = listBoxTranFmt.SelectedIndex;
HeldLink_CurItemFrom = selii;
}
if (_DoingRange)
{
if (_RangeNode1 == null || (_RangeNode1 != null && _RangeNode2 != null))
@@ -1370,6 +1417,13 @@ namespace Volian.Controls.Library
_MyLog.InfoFormat("ItemID {0}, LinkText '{1}'", MyRTB.MyItemInfo.ItemID, linkText);
int sel = MyRTB.SelectionStart + MyRTB.SelectionLength;
MyRTB.Select(sel, 0);// Move cursor to end of LINK
//CSM-C2024-026 Evaluate the transitions panel
//Create a way to keep it from reverting the transition display panel to the currently selected item/transition.
//After save a transition, set the Linktext / tab to go back to the held transition
//if none then this will refresh it to the currently selected item as it did before this csm
MyRTB.MyLinkText = HeldLinkText;
MyRTB.Focus();
}
#endregion
@@ -1489,8 +1543,34 @@ namespace Volian.Controls.Library
btnTranSave.Enabled = UserInfo.CanEdit(MyUserInfo, Mydvi); //Can Insert Transitons
}
}
}
public class TransItem
//CSM-C2024-026 Evaluate the transitions panel
//Create a way to keep it from reverting the transition display panel to the currently selected item/transition.
//If checkbox is checked to enable holding an item,
//then store the currently selected item
//if checkbox becomes unchecked then clear item.
private void cbHoldProcSet_CheckedChanged(object sender, EventArgs e)
{
if (cbHoldProcSet.Checked)
{
VETreeNode vt = tvTran.SelectedNode as VETreeNode;
ItemInfo selii = vt.VEObject as ItemInfo;
if (selii != null)
{
HeldLinkText = string.Format("#Link:Transition:{0} <NewID> {1}", listBoxTranFmt.SelectedIndex, selii.ItemID);
HeldLink_TranFmtIndx = listBoxTranFmt.SelectedIndex;
HeldLink_CurItemFrom = selii;
}
}
else
{
HeldLinkText = "";
HeldLink_CurItemFrom = null;
HeldLink_TranFmtIndx = 0;
}
}
}
public class TransItem
{
private string _ItemDescription;