B2022-055 Fix to help prevent crashing when opening/closing/re-opening procedures.

This commit is contained in:
John Jenko 2022-05-25 19:59:41 +00:00
parent b9a444c941
commit e0acae62c9

View File

@ -83,7 +83,8 @@ namespace Volian.Controls.Library
if (_MyStepTabPanel == null) return null; if (_MyStepTabPanel == null) return null;
return _MyStepTabPanel.SelectedItemInfo; return _MyStepTabPanel.SelectedItemInfo;
} }
set {// B2018-074 Don't crash if opening MSWord section from Tools window in Debug Mode set
{// B2018-074 Don't crash if opening MSWord section from Tools window in Debug Mode
if (_MyStepTabPanel != null) if (_MyStepTabPanel != null)
_MyStepTabPanel.SelectedItemInfo = value; _MyStepTabPanel.SelectedItemInfo = value;
} }
@ -115,13 +116,20 @@ namespace Volian.Controls.Library
else else
SetupDSOTabPanel(); SetupDSOTabPanel();
SetupSecurity(myItemInfo); SetupSecurity(myItemInfo);
if (MyDSOTabPanel == null || MyDSOTabPanel.MyEdWord != null) // B2017-219 check needed if we could not open a word attachment // B2022-055 assigning the Name caused a duplicate name error
Name = string.Format("DisplayTabItem {0}", myItemInfo.ItemID); // we found that the procedure tab control remained in the Control list after the procedure was closed
// later on we need to find out why it isn't removed when the procedure is closed
//if (MyDSOTabPanel == null || MyDSOTabPanel.MyEdWord != null) // B2017-219 check needed if we could not open a word attachment
//{
// //Name = string.Format("DisplayTabItem {0}", myItemInfo.ItemID);
//}
} }
private bool MesssageShown = false; private bool MesssageShown = false;
public void SetupSecurity(ItemInfo myItem) public void SetupSecurity(ItemInfo myItem)
{ {
UserInfo ui = UserInfo.GetByUserID(OwnerInfo.Get(OwnerID).SessionUserID); UserInfo ui = UserInfo.GetByUserID(OwnerInfo.Get(OwnerID).SessionUserID);
if (ui == null) if (ui == null)
{ {
if (!MesssageShown) if (!MesssageShown)
@ -133,8 +141,9 @@ namespace Volian.Controls.Library
} }
else if (ui.IsAdministrator()) else if (ui.IsAdministrator())
{ {
if(_MyStepTabPanel != null) if (_MyStepTabPanel != null)
_MyStepTabPanel.MyStepTabRibbon.SetupAdminMode(); _MyStepTabPanel.MyStepTabRibbon.SetupAdminMode();
MyUserRole = Volian.Base.Library.VlnSettings.UserID + " - Administrator"; MyUserRole = Volian.Base.Library.VlnSettings.UserID + " - Administrator";
} }
else if (ui.IsSetAdministrator(myItem.MyDocVersion)) else if (ui.IsSetAdministrator(myItem.MyDocVersion))
@ -178,13 +187,16 @@ namespace Volian.Controls.Library
InitializeComponent(); InitializeComponent();
this.Click += new EventHandler(DisplayTabItem_Click); this.Click += new EventHandler(DisplayTabItem_Click);
SetupLibraryDocumentDSOTabPanel(); SetupLibraryDocumentDSOTabPanel();
Name = string.Format("DisplayTabLibraryDocument {0}", myDocumentInfo.DocID); // B2022-055 assigning the Name caused a duplicate name error
// we found that the procedure tab control remained in the Control list after the procedure was closed
// later on we need to find out why it isn't removed when the procedure is closed
//Name = string.Format("DisplayTabLibraryDocument {0}", myDocumentInfo.DocID);
} }
protected override void OnDisplayedChanged() protected override void OnDisplayedChanged()
{ {
//Console.WriteLine("=>=>=>=> OnDisplayedChanged"); //Console.WriteLine("=>=>=>=> OnDisplayedChanged");
if(_MyStepTabPanel != null) if (_MyStepTabPanel != null)
_MyStepTabPanel.MyStepPanel.DisplayItemChanging = true; _MyStepTabPanel.MyStepPanel.DisplayItemChanging = true;
base.OnDisplayedChanged(); base.OnDisplayedChanged();
if (_MyStepTabPanel != null) if (_MyStepTabPanel != null)
@ -222,12 +234,12 @@ namespace Volian.Controls.Library
{ {
// Tell the TabControl that the ItemSelected has changed // Tell the TabControl that the ItemSelected has changed
DisplayTabItem myTabItem = sender as DisplayTabItem; DisplayTabItem myTabItem = sender as DisplayTabItem;
if(myTabItem == null)return; if (myTabItem == null) return;
StepTabPanel myTabPanel = myTabItem.MyStepTabPanel as StepTabPanel; StepTabPanel myTabPanel = myTabItem.MyStepTabPanel as StepTabPanel;
if(myTabPanel == null) return; if (myTabPanel == null) return;
if (MyStepTabPanel.SelectedEditItem == null) return; if (MyStepTabPanel.SelectedEditItem == null) return;
MyStepTabPanel.MyDisplayTabControl.HandleChangeId(MyStepTabPanel.SelectedEditItem.MyItemInfo, myTabItem); MyStepTabPanel.MyDisplayTabControl.HandleChangeId(MyStepTabPanel.SelectedEditItem.MyItemInfo, myTabItem);
_MyDisplayTabControl.OnItemSelectedChanged(this,new ItemSelectedChangedEventArgs(MyStepTabPanel.SelectedEditItem)); _MyDisplayTabControl.OnItemSelectedChanged(this, new ItemSelectedChangedEventArgs(MyStepTabPanel.SelectedEditItem));
} }
#endregion #endregion
#region private Methods #region private Methods
@ -243,7 +255,10 @@ namespace Volian.Controls.Library
// tabItem // tabItem
// //
Control = _MyStepTabPanel; Control = _MyStepTabPanel;
Name = "tabItem Item " + _MyItemInfo.ItemID; // B2022-055 assigning the Name caused a duplicate name error
// we found that the procedure tab control remained in the Control list after the procedure was closed
// later on we need to find out why it isn't removed when the procedure is closed
//Name = "tabItem Item " + _MyItemInfo.ItemID;
Text = _MyItemInfo.TabTitle; Text = _MyItemInfo.TabTitle;
_MyItemInfo.Changed += new ItemInfoEvent(_MyItemInfo_Changed); _MyItemInfo.Changed += new ItemInfoEvent(_MyItemInfo_Changed);
Tooltip = _Tooltip = _MyItemInfo.TabToolTip.Replace("\u2011", "-").Replace(@"\u9586?", @"\"); Tooltip = _Tooltip = _MyItemInfo.TabToolTip.Replace("\u2011", "-").Replace(@"\u9586?", @"\");
@ -274,7 +289,7 @@ namespace Volian.Controls.Library
} }
void DisplayTabItem_LostFocus(object sender, EventArgs e) void DisplayTabItem_LostFocus(object sender, EventArgs e)
{ {
if(Tooltip != _Tooltip) if (Tooltip != _Tooltip)
Tooltip = _Tooltip; Tooltip = _Tooltip;
} }
private string _Tooltip; private string _Tooltip;
@ -285,7 +300,7 @@ namespace Volian.Controls.Library
void DisplayTabItem_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) void DisplayTabItem_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{ {
string newTooltip = e.Y > 30 ? null : _Tooltip; string newTooltip = e.Y > 30 ? null : _Tooltip;
if(Tooltip != newTooltip) if (Tooltip != newTooltip)
Tooltip = newTooltip; Tooltip = newTooltip;
} }
/// <summary> /// <summary>
@ -295,13 +310,16 @@ namespace Volian.Controls.Library
{ {
EntryInfo myEntry = _MyItemInfo.MyContent.MyEntry; EntryInfo myEntry = _MyItemInfo.MyContent.MyEntry;
UserInfo ui = UserInfo.GetByUserID(OwnerInfo.Get(OwnerID).SessionUserID); UserInfo ui = UserInfo.GetByUserID(OwnerInfo.Get(OwnerID).SessionUserID);
_MyDSOTabPanel = new DSOTabPanel(myEntry.MyDocument, _MyDisplayTabControl, _MyItemInfo, UserInfo.CanEdit(ui,MyItemInfo.MyDocVersion)); _MyDSOTabPanel = new DSOTabPanel(myEntry.MyDocument, _MyDisplayTabControl, _MyItemInfo, UserInfo.CanEdit(ui, MyItemInfo.MyDocVersion));
if (_MyDSOTabPanel.MyEdWord == null) return; // B2017-219 if we could not open the word attachment just return if (_MyDSOTabPanel.MyEdWord == null) return; // B2017-219 if we could not open the word attachment just return
// //
// tabItem // tabItem
// //
Control = _MyDSOTabPanel; Control = _MyDSOTabPanel;
Name = "tabItem Item " + _MyItemInfo.ItemID; // B2022-055 assigning the Name caused a duplicate name error
// we found that the procedure tab control remained in the Control list after the procedure was closed
// later on we need to find out why it isn't removed when the procedure is closed
//Name = "tabItem Item " + _MyItemInfo.ItemID;
Text = _MyItemInfo.TabTitle; Text = _MyItemInfo.TabTitle;
Tooltip = _Tooltip = _MyItemInfo.TabToolTip.Replace("\u2011", "-").Replace(@"\u9586?", @"\"); Tooltip = _Tooltip = _MyItemInfo.TabToolTip.Replace("\u2011", "-").Replace(@"\u9586?", @"\");
MouseMove += new System.Windows.Forms.MouseEventHandler(DisplayTabItem_MouseMove); MouseMove += new System.Windows.Forms.MouseEventHandler(DisplayTabItem_MouseMove);
@ -324,12 +342,15 @@ namespace Volian.Controls.Library
// B2016-131 if myiteminfo is null, then the lib doc is not referenced. // B2016-131 if myiteminfo is null, then the lib doc is not referenced.
// - Allow editting only if you are an Administrator // - Allow editting only if you are an Administrator
// - Cannot check if you are a Writer or Set Aministrator because we don't have a Doc Verion // - Cannot check if you are a Writer or Set Aministrator because we don't have a Doc Verion
_MyDSOTabPanel = new DSOTabPanel(_MyDocumentInfo, _MyDisplayTabControl, _MyItemInfo, (MyItemInfo != null) ? UserInfo.CanEdit(ui, MyItemInfo.MyDocVersion):ui.IsAdministrator()); _MyDSOTabPanel = new DSOTabPanel(_MyDocumentInfo, _MyDisplayTabControl, _MyItemInfo, (MyItemInfo != null) ? UserInfo.CanEdit(ui, MyItemInfo.MyDocVersion) : ui.IsAdministrator());
// //
// tabItem // tabItem
// //
Control = _MyDSOTabPanel; Control = _MyDSOTabPanel;
Name = "tabLibraryDocument " + _MyDocumentInfo.DocID; // B2022-055 assigning the Name caused a duplicate name error
// we found that the procedure tab control remained in the Control list after the procedure was closed
// later on we need to find out why it isn't removed when the procedure is closed
//Name = "tabLibraryDocument " + _MyDocumentInfo.DocID;
Text = _MyDocumentInfo.LibTitle; Text = _MyDocumentInfo.LibTitle;
DocumentConfig dc = new DocumentConfig(_MyDocumentInfo); DocumentConfig dc = new DocumentConfig(_MyDocumentInfo);
Tooltip = _Tooltip = dc.LibDoc_Comment; Tooltip = _Tooltip = dc.LibDoc_Comment;