- Fixed FindTop to work when the parent has a bottom value that is negative.
- Added code to remove a StepItem and the associated DB records. - Changed AdjustLocation to work properly when an AER and the next step has an RNO. - Temporary event handler to RemoveItem when the StepRTB is double-clicked.
This commit is contained in:
parent
988bd786a4
commit
5e3b830a3b
@ -319,12 +319,13 @@ namespace Volian.Controls.Library
|
|||||||
}
|
}
|
||||||
private int FindTop(int bottom)
|
private int FindTop(int bottom)
|
||||||
{
|
{
|
||||||
int lastBottomPrev = 0;
|
int lastBottomPrev = bottom; // This is necessary if the value of bottom can be negative.
|
||||||
int lastBottomParent = 0;
|
//int lastBottomPrev = 0;
|
||||||
|
//int lastBottomParent = 0;
|
||||||
if (_MyPreviousStepItem != null)
|
if (_MyPreviousStepItem != null)
|
||||||
lastBottomPrev = _MyPreviousStepItem.BottomMostStepItem.Bottom;
|
lastBottomPrev = _MyPreviousStepItem.BottomMostStepItem.Bottom;
|
||||||
else if(_MyParentStepItem != null)
|
//else if(_MyParentStepItem != null)
|
||||||
lastBottomParent = MyParentStepItem.BottomMostStepItem.Bottom;
|
// lastBottomParent = MyParentStepItem.BottomMostStepItem.Bottom;
|
||||||
int? bottomRNO = BottomOfParentRNO();
|
int? bottomRNO = BottomOfParentRNO();
|
||||||
//if (MyID == 2123)
|
//if (MyID == 2123)
|
||||||
// Console.WriteLine("Oops! {0},{1}", bottomRNO, bottom);
|
// Console.WriteLine("Oops! {0},{1}", bottomRNO, bottom);
|
||||||
@ -333,11 +334,11 @@ namespace Volian.Controls.Library
|
|||||||
// Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}", MyID, lastBottomPrev,lastBottomParent, bottom, bottomRNO);
|
// Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}", MyID, lastBottomPrev,lastBottomParent, bottom, bottomRNO);
|
||||||
//if (MyID == 2125)
|
//if (MyID == 2125)
|
||||||
// Console.WriteLine("Oops!");
|
// Console.WriteLine("Oops!");
|
||||||
if (lastBottomPrev > bottom) bottom = lastBottomPrev; // RHM 20090615 ES02 Step8
|
if (lastBottomPrev > bottom) bottom = (int)(lastBottomPrev); // RHM 20090615 ES02 Step8
|
||||||
// Moving from Step 8 to the Note preceeding step 8 caused the step 9 to be positioned in the wrong place.
|
// Moving from Step 8 to the Note preceeding step 8 caused the step 9 to be positioned in the wrong place.
|
||||||
//if (lastBottomParent > bottom) bottom = lastBottomParent;
|
//if (lastBottomParent > bottom) bottom = lastBottomParent;
|
||||||
if (bottomRNO == null) return bottom;
|
//if (bottomRNO == null) return bottom;
|
||||||
return (int) max(bottomRNO, bottom);
|
return (int) max(bottomRNO, bottom);
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The left edge of the Tab
|
/// The left edge of the Tab
|
||||||
@ -919,6 +920,157 @@ namespace Volian.Controls.Library
|
|||||||
// return tmp;
|
// return tmp;
|
||||||
//}
|
//}
|
||||||
#endregion
|
#endregion
|
||||||
|
#region RemoveItem
|
||||||
|
protected void ShowTops(string title)
|
||||||
|
{
|
||||||
|
int TopMostY = TopMostStepItem.Top;
|
||||||
|
int? TopMostParentY = (MyParentStepItem == null ? null : (int?)(MyParentStepItem.TopMostStepItem.Top));
|
||||||
|
int? ParentY = (MyParentStepItem == null ? null : (int?)(MyParentStepItem.Top));
|
||||||
|
//Console.Write("{0}: TopMostY={1}, TopMostParentY={2}, ParentY = {3}",title, TopMostY, TopMostParentY, ParentY);
|
||||||
|
Console.Write("{0}{1},{2},{3}", title, TopMostY, TopMostParentY.ToString() ?? "null", ParentY.ToString() ?? "null");
|
||||||
|
}
|
||||||
|
public void RemoveItem()
|
||||||
|
{
|
||||||
|
MyStepPanel.SelectedStepRTB = null; // Unselect the item to be deleted
|
||||||
|
StepItem newFocus = null;
|
||||||
|
ShowTops("\r\n");
|
||||||
|
int TopMostYBefore = TopMostStepItem.Top;
|
||||||
|
int? TopMostParentY = (MyParentStepItem == null ? null : (int?)(MyParentStepItem.TopMostStepItem.Top));
|
||||||
|
int? ParentY = (MyParentStepItem == null ? null : (int?)(MyParentStepItem.Top));
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Item.DeleteItemAndChildren(MyItemInfo);
|
||||||
|
}
|
||||||
|
catch (System.Data.SqlClient.SqlException ex)
|
||||||
|
{
|
||||||
|
HandleSqlExceptionOnDelete(ex);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Remove StepItems
|
||||||
|
RemoveFromParentsChildList();
|
||||||
|
if (MyNextStepItem != null)
|
||||||
|
{
|
||||||
|
if (MyPreviousStepItem != null)
|
||||||
|
{
|
||||||
|
MyNextStepItem.MyPreviousStepItem = MyPreviousStepItem;
|
||||||
|
MyPreviousStepItem = null;
|
||||||
|
newFocus = MyNextStepItem;
|
||||||
|
Console.Write(",\"Next 1\",");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MyNextStepItem.MyParentStepItem = MyParentStepItem;
|
||||||
|
MyParentStepItem = null;
|
||||||
|
MyNextStepItem.MyPreviousStepItem = null;
|
||||||
|
newFocus = MyNextStepItem;
|
||||||
|
Console.Write(",\"Next 2\",");
|
||||||
|
}
|
||||||
|
MyNextStepItem = null;
|
||||||
|
}
|
||||||
|
else if (MyPreviousStepItem != null)
|
||||||
|
{
|
||||||
|
MyPreviousStepItem.MyNextStepItem = null;
|
||||||
|
newFocus = MyPreviousStepItem;
|
||||||
|
MyPreviousStepItem = null;
|
||||||
|
Console.Write(",\"Previous\",");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newFocus = MyParentStepItem;
|
||||||
|
MyParentStepItem = null;
|
||||||
|
Console.Write(",\"Parent\",");
|
||||||
|
}
|
||||||
|
newFocus.MyStepRTB.Focus();
|
||||||
|
Dispose();
|
||||||
|
newFocus.SetAllTabs();
|
||||||
|
int TopMostYAfter = newFocus.TopMostStepItem.Top;
|
||||||
|
if (TopMostYAfter > TopMostYBefore)
|
||||||
|
newFocus.TopMostStepItem.Top = TopMostYBefore;
|
||||||
|
newFocus.AdjustLocation();
|
||||||
|
newFocus.ShowTops("");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void HandleSqlExceptionOnDelete(System.Data.SqlClient.SqlException ex)
|
||||||
|
{
|
||||||
|
if (ex.Message.Contains("has External Transitions and has no next step"))
|
||||||
|
{
|
||||||
|
using (TransitionInfoList exTrans = TransitionInfoList.GetExternalTransitions(MyID))
|
||||||
|
{
|
||||||
|
DialogResult ans = MessageBox.Show("Transitions exist to this step and cannot be adjusted automatically." +
|
||||||
|
"\r\n\r\nDo you want to be placed on the " + (exTrans.Count > 1 ? "first " : "") + "substep with the problem Transition?" +
|
||||||
|
"\r\n\r\nSubsteps with Problem Transitions" +
|
||||||
|
Summarize(exTrans) ,
|
||||||
|
"Cannot Delete This Step", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
||||||
|
if (ans == DialogResult.Yes)
|
||||||
|
{
|
||||||
|
MyStepPanel.MyStepTabPanel.MyDisplayTabControl.OpenItem(exTrans[0].MyContent.ContentItems[0]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
this.MyStepRTB.Focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (ex.Message.Contains("has External Transitions to it's children"))
|
||||||
|
{
|
||||||
|
using (TransitionInfoList exTrans = TransitionInfoList.GetExternalTransitionsToChildren(MyID))
|
||||||
|
{
|
||||||
|
DialogResult ans = MessageBox.Show("Transitions exist to substeps of this step and cannot be adjusted automatically." +
|
||||||
|
"\r\n\r\nDo you want to be placed on the " + (exTrans.Count > 1 ? "first " : "") + "substep with the problem Transition?" +
|
||||||
|
"\r\n\r\nSubsteps with Problem Transitions:" +
|
||||||
|
Summarize(exTrans),
|
||||||
|
"Cannot Delete This Step", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
||||||
|
if (ans == DialogResult.Yes)
|
||||||
|
{
|
||||||
|
MyStepPanel.MyStepTabPanel.MyDisplayTabControl.OpenItem(exTrans[0].MyContent.ContentItems[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
MessageBox.Show(ex.Message, "SQL Exception", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||||
|
}
|
||||||
|
private string Summarize(TransitionInfoList exTrans)
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder("");
|
||||||
|
foreach (TransitionInfo trans in exTrans)
|
||||||
|
sb.Append("\r\n" + trans.PathFrom);
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
private void RemoveFromParentsChildList()
|
||||||
|
{
|
||||||
|
StepItem top = this;
|
||||||
|
while (top.MyPreviousStepItem != null) top = top.MyPreviousStepItem;
|
||||||
|
StepItem parentStepItem = top.MyParentStepItem;
|
||||||
|
if (parentStepItem == null) return; // No parent, nothing to remove.
|
||||||
|
if (parentStepItem.MyAfterStepItems != null && parentStepItem.MyAfterStepItems.Contains(this))
|
||||||
|
{
|
||||||
|
parentStepItem.MyAfterStepItems.Remove(this);
|
||||||
|
if (parentStepItem.MyAfterStepItems.Count == 0)
|
||||||
|
parentStepItem.MyAfterStepItems = null;
|
||||||
|
}
|
||||||
|
else if (parentStepItem.MyBeforeStepItems != null && parentStepItem.MyBeforeStepItems.Contains(this))
|
||||||
|
{
|
||||||
|
parentStepItem.MyBeforeStepItems.Remove(this);
|
||||||
|
if(parentStepItem.MyBeforeStepItems.Count == 0)
|
||||||
|
parentStepItem.MyBeforeStepItems = null;
|
||||||
|
}
|
||||||
|
else if (parentStepItem.MyRNOStepItems != null && parentStepItem.MyRNOStepItems.Contains(this))
|
||||||
|
{
|
||||||
|
parentStepItem.MyRNOStepItems.Remove(this);
|
||||||
|
if(parentStepItem.MyRNOStepItems.Count == 0)
|
||||||
|
parentStepItem.MyRNOStepItems = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//private void ShowSiblings(string title)
|
||||||
|
//{
|
||||||
|
// Console.WriteLine("---{0} {1}---",title,MyID);
|
||||||
|
// StepItem top = this;
|
||||||
|
// while (top.MyPreviousStepItem != null) top = top.MyPreviousStepItem;
|
||||||
|
// do
|
||||||
|
// {
|
||||||
|
// Console.WriteLine("{0} StepItem - {1} {2}", top.MyID == MyID ? "*" : " ", top.MyID, top.MyItemInfo.MyContent.Text);
|
||||||
|
// top = top.MyNextStepItem;
|
||||||
|
// } while (top != null);
|
||||||
|
//}
|
||||||
|
#endregion
|
||||||
#region Add Children
|
#region Add Children
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Add a child before (Notes, Cautions, etc.)
|
/// Add a child before (Notes, Cautions, etc.)
|
||||||
@ -1606,7 +1758,7 @@ namespace Volian.Controls.Library
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
internal void AdjustLocation()
|
internal void AdjustLocation()
|
||||||
{
|
{
|
||||||
//if (RNORight) MoveRNO();
|
if (RNORight) MoveRNO(); // This is needed when an AER is Deleted that has an RNO.
|
||||||
StepItem nextStepItem = NextDownStepItem;
|
StepItem nextStepItem = NextDownStepItem;
|
||||||
//if (MyID == 2138)
|
//if (MyID == 2138)
|
||||||
// Console.WriteLine("2138");
|
// Console.WriteLine("2138");
|
||||||
@ -1902,5 +2054,9 @@ namespace Volian.Controls.Library
|
|||||||
return _MyItemInfo == null ? base.ToString() : string.Format("({0}) {1}", MyID, MyPath); // + "-" + MyItemInfo.MyContent.Text;
|
return _MyItemInfo == null ? base.ToString() : string.Format("({0}) {1}", MyID, MyPath); // + "-" + MyItemInfo.MyContent.Text;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
private void _MyStepRTB_DoubleClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
RemoveItem();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user