Use the TreeView timer to select the newly created step when a step is added from the TreeView. This assures that it will get focus.

Changed OnChange to be called for a specific instance
Don't select newly created Step if it was created from the TreeView
Adjust the locations of steps properly if a caution or note is deleted
Reduce repeated setup of the RTF data in a step
Add an event that fires after the Step is added from the TreeView so that the newly created step can get focus
This commit is contained in:
Rich 2010-12-02 22:23:50 +00:00
parent d01b27c80d
commit 5b70652cb4
8 changed files with 80 additions and 34 deletions

View File

@ -153,6 +153,7 @@ namespace VEPROMS
tv.OpenItem += new vlnTreeViewItemInfoEvent(tv_OpenItem); tv.OpenItem += new vlnTreeViewItemInfoEvent(tv_OpenItem);
tv.DeleteItemInfo += new vlnTreeViewItemInfoDeleteEvent(tv_DeleteItemInfo); tv.DeleteItemInfo += new vlnTreeViewItemInfoDeleteEvent(tv_DeleteItemInfo);
tv.InsertItemInfo += new vlnTreeViewItemInfoInsertEvent(tv_InsertItemInfo); tv.InsertItemInfo += new vlnTreeViewItemInfoInsertEvent(tv_InsertItemInfo);
tv.NodeInsert += new vlnTreeViewEvent(tv_NodeInsert);
tv.PasteItemInfo += new vlnTreeViewItemInfoPasteEvent(tv_PasteItemInfo); tv.PasteItemInfo += new vlnTreeViewItemInfoPasteEvent(tv_PasteItemInfo);
tc.ItemPaste += new StepPanelItemPastedEvent(tc_ItemPasted); tc.ItemPaste += new StepPanelItemPastedEvent(tc_ItemPasted);
_CommentTitleBckColor = epAnnotations.TitleStyle.BackColor1.Color; _CommentTitleBckColor = epAnnotations.TitleStyle.BackColor1.Color;
@ -168,6 +169,15 @@ namespace VEPROMS
this.Activated += new EventHandler(frmVEPROMS_Activated); this.Activated += new EventHandler(frmVEPROMS_Activated);
VlnSettings.StepTypeToolType = Settings.Default.StepTypeToolTip; VlnSettings.StepTypeToolType = Settings.Default.StepTypeToolTip;
} }
/// <summary>
/// Activate tmrTreeView so that the newly created Step recieves focus
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
void tv_NodeInsert(object sender, vlnTreeEventArgs args)
{
tmrTreeView.Enabled = true;
}
void frmVEPROMS_Activated(object sender, EventArgs e) void frmVEPROMS_Activated(object sender, EventArgs e)
{ {
// refresh anything that pertains to external files or programs: // refresh anything that pertains to external files or programs:
@ -194,9 +204,9 @@ namespace VEPROMS
} }
bool tv_InsertItemInfo(object sender, vlnTreeItemInfoInsertEventArgs args) bool tv_InsertItemInfo(object sender, vlnTreeItemInfoInsertEventArgs args)
{ {
return tc.InsertStepItem(args.MyItemInfo, args.StepText, args.InsertType, args.FromType, args.Type); // Don't select the newly created Step. This will be handled by tmrTreeView
return tc.InsertStepItem(args.MyItemInfo, args.StepText, args.InsertType, args.FromType, args.Type, false);
} }
private bool tv_DeleteItemInfo(object sender, vlnTreeItemInfoEventArgs args) private bool tv_DeleteItemInfo(object sender, vlnTreeItemInfoEventArgs args)
{ {
return tc.DeleteStepItem(args.MyItemInfo); return tc.DeleteStepItem(args.MyItemInfo);
@ -345,7 +355,8 @@ namespace VEPROMS
DisplayTabItem tabItem = tc.GetProcDisplayTabItem(mySection); DisplayTabItem tabItem = tc.GetProcDisplayTabItem(mySection);
if(tabItem != null)tabItem.MyStepTabPanel.MyStepPanel.Reset(); if(tabItem != null)tabItem.MyStepTabPanel.MyStepPanel.Reset();
} }
SetupNodes((VETreeNode)args.Node); // Don't select the newly created Step. This will be handled by tmrTreeView
//SetupNodes((VETreeNode)args.Node);
} }
private void tv_NodeSelect(object sender, vlnTreeEventArgs args) private void tv_NodeSelect(object sender, vlnTreeEventArgs args)
{ {

View File

@ -31,16 +31,7 @@ namespace VEPROMS.CSLA.Library
private void OnChange(ContentInfo contentInfo) private void OnChange(ContentInfo contentInfo)
{ {
if (Changed != null) if (Changed != null)
{
//if (ContentItems[0].ItemID == 54)
//Console.WriteLine("OnChange: ItemID = {0}, Unique = {1}", ContentItems[0].ItemID, ContentItems[0].MyItemInfoUnique);
//Console.WriteLine("'Tab Bug','OnChange','{0}',{1},{2},{3},{4}", ContentItems[0].Path, ContentItems[0].ItemID, ContentItems[0].MyItemInfoUnique,
//ContentID,MyContentInfoUnique);
Changed(this); Changed(this);
}
//else
//Console.WriteLine("'Tab Bug','OnChange NoChange','{0}',{1},{2},{3},{4}", ContentItems[0].Path, ContentItems[0].ItemID, ContentItems[0].MyItemInfoUnique,
//ContentID, MyContentInfoUnique);
} }
private void OnChange() private void OnChange()
{ {
@ -553,7 +544,7 @@ namespace VEPROMS.CSLA.Library
// _MyZContent = null;// Reset related value // _MyZContent = null;// Reset related value
// } // }
_ContentZContentCount = -1;// Reset Count _ContentZContentCount = -1;// Reset Count
OnChange();// raise an event OnChange(this);// raise an event only for this instance
} }
public static void Refresh(FormatContent tmp) public static void Refresh(FormatContent tmp)
{ {
@ -598,7 +589,7 @@ namespace VEPROMS.CSLA.Library
// _MyZContent = null;// Reset related value // _MyZContent = null;// Reset related value
// } // }
_ContentZContentCount = -1;// Reset Count _ContentZContentCount = -1;// Reset Count
OnChange();// raise an event OnChange(this);// raise an event only for this instance
} }
public static ContentInfo Get(int contentID) public static ContentInfo Get(int contentID)
{ {

View File

@ -363,7 +363,7 @@ namespace Volian.Controls.Library
} }
return false; return false;
} }
public bool InsertStepItem(ItemInfo myItemInfo, string text, E_InsertType insertType, E_FromType fromType, int type) public bool InsertStepItem(ItemInfo myItemInfo, string text, E_InsertType insertType, E_FromType fromType, int type,bool updateSelection)
{ {
CleanUpClosedItems(); CleanUpClosedItems();
ItemInfo proc = myItemInfo.MyProcedure; // Find procedure Item ItemInfo proc = myItemInfo.MyProcedure; // Find procedure Item
@ -378,10 +378,10 @@ namespace Volian.Controls.Library
switch (insertType) switch (insertType)
{ {
case E_InsertType.Before: case E_InsertType.Before:
stpitm.AddSiblingBefore(text); stpitm.AddSiblingBefore(text,updateSelection);
break; break;
case E_InsertType.After: case E_InsertType.After:
stpitm.AddSiblingAfter(text); stpitm.AddSiblingAfter(text,updateSelection);
break; break;
case E_InsertType.Child: case E_InsertType.Child:
stpitm.AddChild(text, fromType, type); stpitm.AddChild(text, fromType, type);

View File

@ -1219,21 +1219,21 @@ namespace Volian.Controls.Library
/// </summary> /// </summary>
public void AddSiblingAfter() public void AddSiblingAfter()
{ {
AddSiblingAfter(""); AddSiblingAfter("",true);
} }
public void AddSiblingAfter(string text) public void AddSiblingAfter(string text,bool updateStatus)
{ {
MyStepRTB.SaveText(); MyStepRTB.SaveText();
ItemInfo newItemInfo = MyItemInfo.InsertSiblingAfter(text); ItemInfo newItemInfo = MyItemInfo.InsertSiblingAfter(text);
DoAddSiblingAfter(newItemInfo); DoAddSiblingAfter(newItemInfo, updateStatus);
} }
public void AddSiblingAfter(int? type) public void AddSiblingAfter(int? type, bool updateStatus)
{ {
MyStepRTB.SaveText(); MyStepRTB.SaveText();
ItemInfo newItemInfo = MyItemInfo.InsertSiblingAfter("","",type); ItemInfo newItemInfo = MyItemInfo.InsertSiblingAfter("","",type);
DoAddSiblingAfter(newItemInfo); DoAddSiblingAfter(newItemInfo,updateStatus);
} }
private void DoAddSiblingAfter(ItemInfo newItemInfo) private void DoAddSiblingAfter(ItemInfo newItemInfo, bool updateStatus)
{ {
StepItem newStepItem = null; StepItem newStepItem = null;
switch (_MyChildRelation) switch (_MyChildRelation)
@ -1251,14 +1251,15 @@ namespace Volian.Controls.Library
break; break;
} }
//StepItem newStepItem = ActiveParent.AddChildAfter(newItemInfo, ); //StepItem newStepItem = ActiveParent.AddChildAfter(newItemInfo, );
_MyStepPanel.SelectedStepRTB = newStepItem.MyStepRTB;//Update Screen if(updateStatus)
_MyStepPanel.SelectedStepRTB = newStepItem.MyStepRTB;//Update Screen
} }
private static int _WatchThis = 1; private static int _WatchThis = 1;
public void AddSiblingBefore() public void AddSiblingBefore()
{ {
AddSiblingBefore(""); AddSiblingBefore("",true);
} }
public void AddSiblingBefore(string text) public void AddSiblingBefore(string text, bool updateSelection)
{ {
// Save RTB text before creating a new item because the process of creating // Save RTB text before creating a new item because the process of creating
// a new item will save a change to iteminfo excluding text changes. This // a new item will save a change to iteminfo excluding text changes. This
@ -1283,7 +1284,8 @@ namespace Volian.Controls.Library
default: // Need debug default: // Need debug
break; break;
} }
_MyStepPanel.SelectedStepRTB = newStepItem.MyStepRTB;//Update Screen if(updateSelection)
_MyStepPanel.SelectedStepRTB = newStepItem.MyStepRTB;//Update Screen
} }
public void AddChild(E_FromType fromType, int type) public void AddChild(E_FromType fromType, int type)
{ {

View File

@ -363,10 +363,35 @@ namespace Volian.Controls.Library
} }
if (shouldDelete) if (shouldDelete)
{ {
float oldTop = lastRTB.MyStepItem.Top;
StepItem newFocus = lastRTB.MyStepItem.DeleteItem(); StepItem newFocus = lastRTB.MyStepItem.DeleteItem();
float newTop = newFocus.Top;
lastRTB.MyStepItem.Dispose(); lastRTB.MyStepItem.Dispose();
newFocus.SetAllTabs(); newFocus.SetAllTabs();
newFocus.AdjustLocation(); // If the step being deleted appears above the step to recieve focus, find another step
// to use so that the steps are positioned properly (vertically)
if (oldTop < newTop)
{
if (newFocus.MyParentStepItem != null)
{
if (newFocus.Top > newFocus.MyParentStepItem.Top)
newFocus.MyParentStepItem.AdjustLocation();
else if (newFocus.MyParentStepItem.MyPreviousStepItem != null &&
newFocus.Top > newFocus.MyParentStepItem.MyPreviousStepItem.Top)
newFocus.MyParentStepItem.MyPreviousStepItem.AdjustLocation();
else if (newFocus.MyParentStepItem.MyParentStepItem != null &&
newFocus.Top > newFocus.MyParentStepItem.MyParentStepItem.Top)
newFocus.MyParentStepItem.MyParentStepItem.AdjustLocation();
else
newFocus.AdjustLocation();
}
else if (newFocus.MyPreviousStepItem != null)
newFocus.MyPreviousStepItem.AdjustLocation();
else
newFocus.AdjustLocation();
}
else
newFocus.AdjustLocation();
} }
else else
{ {

View File

@ -714,17 +714,25 @@ namespace Volian.Controls.Library
} }
#endregion #endregion
#region AddRtfTextAndStyles #region AddRtfTextAndStyles
private string _LastRtf = "";
private void AddRtfText(string txt) private void AddRtfText(string txt)
{ {
//Console.WriteLine("ItemID:{0}", MyItemInfo.ItemID);
//if(MyItemInfo.ItemID==10256)
// Volian.Base.Library.vlnStackTrace.ShowStackLocal("ItemID:{0}", MyItemInfo.ItemID.ToString());
StringBuilder selectedRtfSB = new StringBuilder(); StringBuilder selectedRtfSB = new StringBuilder();
AddFontTable(selectedRtfSB); AddFontTable(selectedRtfSB);
_RtfPrefix = selectedRtfSB.ToString(); _RtfPrefix = selectedRtfSB.ToString();
selectedRtfSB.Append(txt); selectedRtfSB.Append(txt);
string newRTF = selectedRtfSB.ToString() + "}"; string newRtf = selectedRtfSB.ToString() + "}";
SelectAll(); if(newRtf != _LastRtf)
if (SelectedRtf != newRTF) {
SelectedRtf = newRTF; //Console.WriteLine("ItemID:{0}\r\nOld:'{1}'\r\nNew:'{2}'\r\n", MyItemInfo.ItemID, Rtf, newRtf);
//SelectedRtf = selectedRtfSB.ToString() + "}"; this.ContentsResized -=new ContentsResizedEventHandler(StepRTB_ContentsResized);
Text = "";
this.ContentsResized += new ContentsResizedEventHandler(StepRTB_ContentsResized);
SelectedRtf = _LastRtf = newRtf;
}
FindAllLinks(); FindAllLinks();
} }
private void AddFontTable(StringBuilder selectedRtfSB) private void AddFontTable(StringBuilder selectedRtfSB)

View File

@ -238,7 +238,7 @@ namespace Volian.Controls.Library
StepItem hlsStepItem = _MyStepItem; StepItem hlsStepItem = _MyStepItem;
while (!hlsStepItem.MyItemInfo.IsHigh) while (!hlsStepItem.MyItemInfo.IsHigh)
hlsStepItem = hlsStepItem.ActiveParent; hlsStepItem = hlsStepItem.ActiveParent;
hlsStepItem.AddSiblingAfter((int ?)contenttype); hlsStepItem.AddSiblingAfter((int ?)contenttype,true);
} }
else else
{ {

View File

@ -307,6 +307,14 @@ namespace Volian.Controls.Library
{ {
if (NodeNew != null) NodeNew(sender, args); if (NodeNew != null) NodeNew(sender, args);
} }
/// <summary>
/// Raised after a new step is added.
/// </summary>
public event vlnTreeViewEvent NodeInsert;
private void OnNodeInsert(object sender, vlnTreeEventArgs args)
{
if (NodeInsert != null) NodeInsert(sender, args);
}
public event vlnTreeViewEvent NodeSelectionChange; public event vlnTreeViewEvent NodeSelectionChange;
private void OnNodeSelectionChange(object sender, vlnTreeEventArgs args) private void OnNodeSelectionChange(object sender, vlnTreeEventArgs args)
{ {
@ -969,6 +977,7 @@ namespace Volian.Controls.Library
SelectedNode = tn; SelectedNode = tn;
OnNodeNew(this, new vlnTreeEventArgs(SelectedNode)); OnNodeNew(this, new vlnTreeEventArgs(SelectedNode));
Refresh(); Refresh();
OnNodeInsert(this, new vlnTreeEventArgs(SelectedNode));
} }
} }