From aa0b906a9f5e0bcd7386f5dbc9a7b81466e66004 Mon Sep 17 00:00:00 2001 From: mschill Date: Mon, 2 Feb 2026 15:27:23 -0500 Subject: [PATCH] C2026-062 When Search clicked - Load the Incoming transitions for the Active Procedure --- .../CustomMessageBox.Designer.cs | 89 +++++++++++++ .../CustomMessageBox.cs | 58 +++++++++ .../CustomMessageBox.resx | 120 ++++++++++++++++++ .../Volian.Controls.Library/DisplaySearch.cs | 68 +++++++--- .../Volian.Controls.Library.csproj | 9 ++ 5 files changed, 329 insertions(+), 15 deletions(-) create mode 100644 PROMS/Volian.Controls.Library/CustomMessageBox.Designer.cs create mode 100644 PROMS/Volian.Controls.Library/CustomMessageBox.cs create mode 100644 PROMS/Volian.Controls.Library/CustomMessageBox.resx diff --git a/PROMS/Volian.Controls.Library/CustomMessageBox.Designer.cs b/PROMS/Volian.Controls.Library/CustomMessageBox.Designer.cs new file mode 100644 index 00000000..c804d557 --- /dev/null +++ b/PROMS/Volian.Controls.Library/CustomMessageBox.Designer.cs @@ -0,0 +1,89 @@ +namespace Volian.Controls.Library +{ + partial class CustomMessageBox + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.btn1 = new System.Windows.Forms.Button(); + this.btn2 = new System.Windows.Forms.Button(); + this.lblMessage = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // btn1 + // + this.btn1.AutoSize = true; + this.btn1.Location = new System.Drawing.Point(12, 99); + this.btn1.Name = "btn1"; + this.btn1.Size = new System.Drawing.Size(75, 23); + this.btn1.TabIndex = 0; + this.btn1.UseVisualStyleBackColor = true; + this.btn1.Click += new System.EventHandler(this.Btn1_Click); + // + // btn2 + // + this.btn2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btn2.AutoSize = true; + this.btn2.Location = new System.Drawing.Point(322, 99); + this.btn2.Name = "btn2"; + this.btn2.Size = new System.Drawing.Size(75, 23); + this.btn2.TabIndex = 1; + this.btn2.UseVisualStyleBackColor = true; + this.btn2.Click += new System.EventHandler(this.Btn2_Click); + // + // lblMessage + // + this.lblMessage.AutoSize = true; + this.lblMessage.Location = new System.Drawing.Point(33, 41); + this.lblMessage.Name = "lblMessage"; + this.lblMessage.Size = new System.Drawing.Size(0, 13); + this.lblMessage.TabIndex = 2; + this.lblMessage.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // CustomMessageBox + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoSize = true; + this.ClientSize = new System.Drawing.Size(419, 130); + this.Controls.Add(this.lblMessage); + this.Controls.Add(this.btn2); + this.Controls.Add(this.btn1); + this.Name = "CustomMessageBox"; + this.ShowIcon = false; + this.Text = "CustomMessageBox"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button btn1; + private System.Windows.Forms.Button btn2; + private System.Windows.Forms.Label lblMessage; + } +} \ No newline at end of file diff --git a/PROMS/Volian.Controls.Library/CustomMessageBox.cs b/PROMS/Volian.Controls.Library/CustomMessageBox.cs new file mode 100644 index 00000000..3a42d5e7 --- /dev/null +++ b/PROMS/Volian.Controls.Library/CustomMessageBox.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Volian.Controls.Library +{ + public partial class CustomMessageBox : Form + { + //Custome Message Box Class to allow renaming of buttons + // originally devleoped for use with + // C2025-062 When Search clicked - Load the Incoming transitions for the Active Procedure + // in order to allow the user to decide if they wanted to search on the selected step or the selected procedure + public CustomMessageBox(string message, string title, string button1Text = "OK", string button2Text = "") + { + InitializeComponent(); + this.Text = title; + lblMessage.Text = message; + btn1.Text = button1Text; + + if (!string.IsNullOrEmpty(button2Text)) + { + btn2.Text = button2Text; + btn2.Visible = true; + } + else + { + btn2.Visible = false; + } + } + + private void Btn1_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Yes; + Close(); + } + + private void Btn2_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.No; + Close(); + } + + //static method for calling custommessagebox directly + public static DialogResult Show(string message, string title, string button1Text = "OK", string button2Text = "") + { + using (var messageBox = new CustomMessageBox(message, title, button1Text, button2Text)) + { + return messageBox.ShowDialog(); + } + } + } +} diff --git a/PROMS/Volian.Controls.Library/CustomMessageBox.resx b/PROMS/Volian.Controls.Library/CustomMessageBox.resx new file mode 100644 index 00000000..1af7de15 --- /dev/null +++ b/PROMS/Volian.Controls.Library/CustomMessageBox.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/PROMS/Volian.Controls.Library/DisplaySearch.cs b/PROMS/Volian.Controls.Library/DisplaySearch.cs index 81c7511a..b0dd922e 100644 --- a/PROMS/Volian.Controls.Library/DisplaySearch.cs +++ b/PROMS/Volian.Controls.Library/DisplaySearch.cs @@ -414,6 +414,15 @@ namespace Volian.Controls.Library lbSrchResults.Visible = true; lbSrchResultsIncTrans.Visible = false; cbxRnoOnly.Visible = true; + + // C2025-062 When Search clicked - Load the Incoming transitions for the Active Procedure + //don't allow changing the Style for Incoming Transitions + //but allow them to change it if there are search results and it is another tab + if (_SearchResults != null && _SearchResults.Count > 0) + { + cmbResultsStyle.Enabled = true; + } + if (e.NewTab == tabIncTrans) // C2020-033: Incoming transitions { xpSetToSearch.Enabled = false; @@ -422,7 +431,7 @@ namespace Volian.Controls.Library lbSrchResultsIncTrans.Visible = true; lbSrchResultsIncTrans.CheckBoxesVisible = true; lbSrchResultsIncTrans.AutoScroll = true; - btnSearch.Enabled = false; // C2021 - 002: disable search button - no functionality for Incoming Transitions + cmbResultsStyle.Enabled = false; cbxRnoOnly.Visible = false; } else if (e.NewTab == tabROSearch) @@ -648,7 +657,6 @@ namespace Volian.Controls.Library } btnTranCvtAllToTxt.Enabled = IncTransCvtAllToTextPerm(); btnTranCvtSelToTxt.Enabled = false; - btnSearch.Enabled = false; // C2021 - 002: disable search button - no functionality for Incoming Transitions } public bool IncTranCvtPerm() @@ -1765,7 +1773,8 @@ namespace Volian.Controls.Library btnClearSearchResults.Enabled = true; btnCopySearchResults.Enabled = true; btnSaveSearchResults.Enabled = true; - cmbResultsStyle.Enabled = true; + if (tabSearchTypes.SelectedTab != tabIncTrans) + cmbResultsStyle.Enabled = true; } else { @@ -2188,21 +2197,39 @@ namespace Volian.Controls.Library // C2019-001: Search in RNO steps only if (cbxRnoOnlyTrans.Checked) GetInRNOResults(); } - else if (tabSearchTypes.SelectedTab == tabSearchTypes.Tabs[4]) + else if (tabSearchTypes.SelectedTab == tabIncTrans) { - // C2020-033: Incoming Transitions: Make an iteminfolist from the list returned from - // GetExternalTransitionsToChildren (also gets transitions to the item itself) - // B2021-010: Use IncomingTranGetMergedTranList to get a complete list of incoming transitions (transitions to procedure - // were only included if there were NO transitions to items within procedure) - ReportTitle = string.Format("Search For Incoming Transitions to {0}: ", SearchIncTransII.Path); - SearchResults = IncomingTranGetMergedTranList(); - cmbResultsStyleIndex = 1; //display step locations in results - if (SearchResults == null || SearchResults.Count == 0) + // C2025-062 When Search clicked - Load the Incoming transitions for the Active Procedure + + if (_TabControl?.MyEditItem?.MyItemInfo?.MyProcedure != null) { - FlexibleMessageBox.Show("No Matches Found.", "Search"); + + if (_TabControl?.MyEditItem?.MyItemInfo?.MyProcedure.ItemID == _TabControl?.MyEditItem?.MyItemInfo?.ItemID) + { + _ = _TabControl.OnSearchIncTrans(this, new vlnTreeItemInfoEventArgs(_TabControl?.MyEditItem?.MyItemInfo?.MyProcedure)); + } + else + { + //if on a step, check if the user wants to load incoming transitions for that step or the entire procedure + switch (CustomMessageBox.Show("Would you like to load incoming transitions for this procedure or this step?", "Load Incoming Transitions", "This Procedure", "This Step")) + { + case DialogResult.Yes: + _ = _TabControl.OnSearchIncTrans(this, new vlnTreeItemInfoEventArgs(_TabControl?.MyEditItem?.MyItemInfo?.MyProcedure)); + break; + case DialogResult.No: + _ = _TabControl.OnSearchIncTrans(this, new vlnTreeItemInfoEventArgs(_TabControl?.MyEditItem?.MyItemInfo)); + break; + default: //Cancel was pressed + break; + } + } + } + else + { + FlexibleMessageBox.Show("Please open a procedure before selecting this option to load incoming transitions for that procedure.", "Search"); } } - if (SearchResults != null) + if (SearchResults != null && tabSearchTypes.SelectedTab != tabIncTrans) { AddMessageForEmptyAnnotations(); if (cmbResultsStyleIndex == 3 && cmbResultsStyle.Items.Count == 3) cmbResultsStyleIndex--; @@ -2303,7 +2330,18 @@ namespace Volian.Controls.Library cmbResultsStyle.Items.Add(comboItem2); if (hasAnnot) cmbResultsStyle.Items.Add(comboItem3); cmbResultsStyle.Items.Add(comboItem4); - } + + // C2025-062 When Search clicked - Load the Incoming transitions for the Active Procedure + if (tabSearchTypes.SelectedTab == tabIncTrans) + { + cmbResultsStyle.SelectedIndex = -1; + cmbResultsStyle.Enabled = false; + } + else + { + cmbResultsStyle.Enabled = true; + } + } private void cbxTextSearchText_Leave(object sender, EventArgs e) { diff --git a/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj b/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj index f63be9f6..bb704d34 100644 --- a/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj +++ b/PROMS/Volian.Controls.Library/Volian.Controls.Library.csproj @@ -154,6 +154,12 @@ Form + + Form + + + CustomMessageBox.cs + UserControl @@ -454,6 +460,9 @@ AnnotationSearch.cs Designer + + CustomMessageBox.cs + DisplayBookMarks.cs Designer