@@ -15,6 +15,8 @@ using System.Linq;
namespace Volian.Controls.Library
namespace Volian.Controls.Library
{
{
#pragma warning disable IDE1006 // Naming Styles
#pragma warning disable IDE0044 // Add readonly modifier
public partial class DisplaySearch : UserControl
public partial class DisplaySearch : UserControl
{
{
#region Public Events / Handlers
#region Public Events / Handlers
@@ -24,14 +26,12 @@ namespace Volian.Controls.Library
private void OnPrintRequest ( DisplaySearchEventArgs args )
private void OnPrintRequest ( DisplaySearchEventArgs args )
{
{
if ( PrintRequest ! = null )
PrintRequest ? . Invoke ( this , args ) ;
PrintRequest ( this , args ) ;
}
}
private void OnSearchComplete ( DisplaySearchEventArgs args )
private void OnSearchComplete ( DisplaySearchEventArgs args )
{
{
if ( SearchComplete ! = null )
SearchComplete ? . Invoke ( this , args ) ;
SearchComplete ( this , args ) ;
}
}
#endregion
#endregion
@@ -218,8 +218,10 @@ namespace Volian.Controls.Library
{
{
if ( _TmrRefresh = = null )
if ( _TmrRefresh = = null )
{
{
_TmrRefresh = new Timer ( ) ;
_TmrRefresh = new Timer
_TmrRefresh . Interval = 1000 ;
{
Interval = 1000
} ;
_TmrRefresh . Tick + = _TmrRefresh_Tick ;
_TmrRefresh . Tick + = _TmrRefresh_Tick ;
}
}
return _TmrRefresh ;
return _TmrRefresh ;
@@ -324,7 +326,6 @@ namespace Volian.Controls.Library
{
{
if ( tabSearchTypes . SelectedTab = = tabSearchTypes . Tabs [ 2 ] )
if ( tabSearchTypes . SelectedTab = = tabSearchTypes . Tabs [ 2 ] )
{ // RO Search
{ // RO Search
ROFSTLookup . rochild [ ] chld = null ;
ROFSTLookup . rochild ch ;
ROFSTLookup . rochild ch ;
if ( cmboTreeROs . SelectedNode ! = null )
if ( cmboTreeROs . SelectedNode ! = null )
{
{
@@ -336,18 +337,16 @@ namespace Volian.Controls.Library
}
}
else
else
{
{
if ( cmboTreeROs . SelectedNode . Tag is ROFSTLookup . rodbi )
if ( cmboTreeROs . SelectedNode . Tag is ROFSTLookup . rodbi db )
{
{
ROFSTLookup . rodbi db = ( ROFSTLookup . rodbi ) cmboTreeROs . SelectedNode . Tag ;
return $"{_MyRODbID.ToString()}:{string.Format(" { 0 } ", db.dbiID.ToString(" X4 "))}" ;
return _MyRODbID . ToString ( ) + ":" + string . Format ( "{0}" , db . dbiID . ToString ( "X4" ) ) ;
}
}
else if ( cmboTreeROs . SelectedNode . Tag is ROFSTLookup . rochild )
else if ( cmboTreeROs . SelectedNode . Tag is ROFSTLookup . rochild roch )
{
{
ch = ( ROFSTLookup . rochild ) cmboTreeROs . SelectedNode . Tag ;
ROFSTLookup . rochild [ ] chld = roch . children ;
chld = ch . children ;
// build a list of ROs to search
// build a list of ROs to search
// B2022-118: remove the ending comma otherwise query will fail
// B2022-118: remove the ending comma otherwise query will fail
string strRtnStr = _MyRODbID . ToString ( ) + ":" + GetROsToSearch ( chld ) ;
string strRtnStr = $"{_MyRODbID.ToString()}:{GetROsToSearch(chld)}" ;
if ( strRtnStr . EndsWith ( "," ) )
if ( strRtnStr . EndsWith ( "," ) )
strRtnStr = strRtnStr . Substring ( 0 , strRtnStr . Length - 1 ) ;
strRtnStr = strRtnStr . Substring ( 0 , strRtnStr . Length - 1 ) ;
return strRtnStr ;
return strRtnStr ;
@@ -391,7 +390,6 @@ namespace Volian.Controls.Library
cmbResultsStyle . Enabled = false ;
cmbResultsStyle . Enabled = false ;
tabSearchTypes . SelectedTabChanged + = new TabStrip . SelectedTabChangedEventHandler ( tabSearchTypes_SelectedTabChanged ) ;
tabSearchTypes . SelectedTabChanged + = new TabStrip . SelectedTabChangedEventHandler ( tabSearchTypes_SelectedTabChanged ) ;
// Don't do this here. If you do then the /DB parameter has not yet been set, which will cause the database menu to be displayed
// Don't do this here. If you do then the /DB parameter has not yet been set, which will cause the database menu to be displayed
//SetupContextMenu(); // so that the symbol list is available without selecting a procedure set or procedure
}
}
#endregion
#endregion
@@ -447,20 +445,6 @@ namespace Volian.Controls.Library
}
}
btnSearch . Enabled = ( cbxTranCategory . Items . Count > 0 ) ; // B2017-038 disable search button if no format selected
btnSearch . Enabled = ( cbxTranCategory . Items . Count > 0 ) ; // B2017-038 disable search button if no format selected
//enable-disable doc version nodes based on version type if selected
//enable-disable doc version nodes based on version type if selected
if ( cbxTranVersion . SelectedIndex > - 1 )
{
if ( dicExpandedFolderNodes . Count > 0 )
{
foreach ( DevComponents . AdvTree . Node n in dicExpandedFolderNodes . Keys )
{
DocVersionInfo dvi = ( DocVersionInfo ) n . Tag ;
if ( cbxTranVersion . Tag . ToString ( ) . Contains ( dvi . VersionID . ToString ( ) ) )
n . Enabled = true ;
else
n . Enabled = false ;
}
}
}
//setup transition format versions
//setup transition format versions
this . Cursor = Cursors . WaitCursor ;
this . Cursor = Cursors . WaitCursor ;
if ( myFormatVersionList = = null )
if ( myFormatVersionList = = null )
@@ -475,6 +459,10 @@ namespace Volian.Controls.Library
versionID : group . Max ( x = > x . VersionID )
versionID : group . Max ( x = > x . VersionID )
) ) . OrderBy ( y = > y . Title ) . ToList ( ) ;
) ) . OrderBy ( y = > y . Title ) . ToList ( ) ;
//B2026-055 – Transition Search Improvements
//Added an All option to allow resetting of the enabling/disabling tree options
cbxTranVersion . Items . Add ( new FormatVersion ( "All" , - 1 , - 1 ) ) ;
foreach ( FormatVersion fv in fvlst )
foreach ( FormatVersion fv in fvlst )
{
{
cbxTranVersion . Items . Add ( fv ) ;
cbxTranVersion . Items . Add ( fv ) ;
@@ -504,32 +492,6 @@ namespace Volian.Controls.Library
public void cbxTranFormat_SelectedIndexChanged ( object sender , EventArgs e )
public void cbxTranFormat_SelectedIndexChanged ( object sender , EventArgs e )
{
{
#region 1 st cut
//if (cbxTranFormat.SelectedItem.ToString() == "All")
//{
// cbxTranCategory.Items.Clear();
// cbxTranCategory.Items.Add("All");
// cbxTranCategory.Items.Add("Internal");
// cbxTranCategory.Items.Add("External");
// cbxTranCategory.Items.Add("Outside");
// cbxTranCategory.SelectedIndex = 0;
//}
//else if (cbxTranFormat.SelectedItem.ToString().Contains("{Proc"))
//{
// cbxTranCategory.Items.Clear();
// cbxTranCategory.Items.Add("All");
// cbxTranCategory.Items.Add("External");
// cbxTranCategory.Items.Add("Outside");
// cbxTranCategory.SelectedIndex = 0;
//}
//else
//{
// cbxTranCategory.Items.Clear();
// cbxTranCategory.Items.Add("Internal");
// cbxTranCategory.SelectedIndex = 0;
//}
#endregion
#region 2 nd cut
#region 2 nd cut
if ( cbxTranFormat . SelectedItem . ToString ( ) . Contains ( "{Proc" ) )
if ( cbxTranFormat . SelectedItem . ToString ( ) . Contains ( "{Proc" ) )
{
{
@@ -564,31 +526,16 @@ namespace Volian.Controls.Library
cbxTranVersion . Tag = versionList ;
cbxTranVersion . Tag = versionList ;
cbxTranFormatFillIn ( versionList ) ;
cbxTranFormatFillIn ( versionList ) ;
if ( dicExpandedFolderNodes . Count > 0 )
{
foreach ( DevComponents . AdvTree . Node n in dicExpandedFolderNodes . Keys )
{
FolderInfo fi = ( FolderInfo ) n . Tag ;
// if this folder has a docversion, use its id:
string svid = null ;
if ( fi . FolderDocVersionCount > 0 )
svid = fi . FolderDocVersions [ 0 ] . VersionID . ToString ( ) ;
if ( cbxTranVersion . Tag . ToString ( ) . Contains ( svid ) )
n . Enabled = true ;
else
n . Enabled = false ;
}
}
List < DevComponents . AdvTree . Node > uncheckNodes = new List < Node > ( ) ;
List < DevComponents . AdvTree . Node > uncheckNodes = new List < DevComponents . AdvTree . Node > ( ) ;
foreach ( DevComponents . AdvTree . Node n in dicSelectedFolderNodes . Keys )
foreach ( DevComponents . AdvTree . Node n in dicSelectedFolderNodes . Keys )
{
{
FolderInfo fi = ( FolderInfo ) n . Tag ; // this was crashing in old version of code
FolderInfo fi = n . Tag as FolderInfo ; // this was crashing in old version of code
// if this folder has a docversion, use its id:
// if this folder has a docversion, use its id:
string svid = null ;
string svid = null ;
if ( fi . FolderDocVersionCount > 0 )
if ( fi ? . FolderDocVersionCount > 0 )
svid = fi . FolderDocVersions [ 0 ] . VersionID . ToString ( ) ;
svid = fi . FolderDocVersions [ 0 ] . VersionID . ToString ( ) ;
if ( svid ! = null & & ! versionList . Contains ( svid ) )
if ( svid ! = null & & ! string . IsNullOrEmpty ( versionList ) & & ! versionList . Split ( ',' ) . Contains ( svid ) )
uncheckNodes . Add ( n ) ;
uncheckNodes . Add ( n ) ;
else
else
n . Enabled = true ;
n . Enabled = true ;
@@ -614,13 +561,17 @@ namespace Volian.Controls.Library
dicSelectedFolderNodes . Clear ( ) ;
dicSelectedFolderNodes . Clear ( ) ;
}
}
}
}
//B2026-055 – Transition Search Improvements
//Update Enabling/Disabling of Tree Elements
TraverseTree ( advTreeProcSets . Nodes [ 0 ] , cbxTranVersion . Tag ? . ToString ( ) . Split ( ',' ) ) ;
this . Cursor = Cursors . Default ;
this . Cursor = Cursors . Default ;
}
}
// C2020-033: Update the search panel for Incoming transitions. This gets called from the tree view & the ribbon
// C2020-033: Update the search panel for Incoming transitions. This gets called from the tree view & the ribbon
public void UpdateSearchIncTransResults ( )
public void UpdateSearchIncTransResults ( )
{
{
//IncTransSelectedCount = 0;
tabSearchTypes . SelectedTab = tabSearchTypes . Tabs [ 4 ] ;
tabSearchTypes . SelectedTab = tabSearchTypes . Tabs [ 4 ] ;
lbSrchResultsIncTrans . DataSource = null ;
lbSrchResultsIncTrans . DataSource = null ;
@@ -697,13 +648,6 @@ namespace Volian.Controls.Library
DevComponents . AdvTree . Node newnode ;
DevComponents . AdvTree . Node newnode ;
advTreeStepTypes . Nodes . Clear ( ) ;
advTreeStepTypes . Nodes . Clear ( ) ;
// Add a dummy node for searching Word Sections (MS Word sections)
// Add a dummy node for searching Word Sections (MS Word sections)
//newnode = new DevComponents.AdvTree.Node();
//newnode.Text = "Word Sections";
//newnode.Selectable = true;
//newnode.CheckBoxAlignment = DevComponents.AdvTree.eCellPartAlignment.NearCenter;
//newnode.CheckBoxStyle = eCheckBoxStyle.CheckBox;
//newnode.CheckBoxThreeState = false;
//newnode.CheckBoxVisible = true;
newnode = NewAdvTreeNode ( "WORD Sections" , true , true ) ; // C2020-010: Change Accessory Sections to Word Sections
newnode = NewAdvTreeNode ( "WORD Sections" , true , true ) ; // C2020-010: Change Accessory Sections to Word Sections
wordSectionTreeNode = newnode ;
wordSectionTreeNode = newnode ;
// C2021-028: RNO Only search, disable Word section tree node
// C2021-028: RNO Only search, disable Word section tree node
@@ -721,16 +665,6 @@ namespace Volian.Controls.Library
StepData sd = sdl [ sdr . Index ] ; // get the step type record
StepData sd = sdl [ sdr . Index ] ; // get the step type record
string parentName = sd . ParentType ; // this gets the parent of the this step/substep type
string parentName = sd . ParentType ; // this gets the parent of the this step/substep type
//Console.WriteLine("{0} {1} - {2}", parentName,sd.Type,sdr.Name);
//newnode = new DevComponents.AdvTree.Node();
//newnode.Text = sdr.Name;
//newnode.Name = sd.Type; // this needed for the FindNodeByName() function
//newnode.Tag = sd;
//newnode.Selectable = true;
//newnode.CheckBoxAlignment = DevComponents.AdvTree.eCellPartAlignment.NearCenter;
//newnode.CheckBoxStyle = eCheckBoxStyle.CheckBox;
//newnode.CheckBoxThreeState = false;
//newnode.CheckBoxVisible = true;
if ( parentName . Equals ( "Base" ) )
if ( parentName . Equals ( "Base" ) )
{
{
newnode = NewAdvTreeNode ( sdr . Name , true , true ) ;
newnode = NewAdvTreeNode ( sdr . Name , true , true ) ;
@@ -824,8 +758,7 @@ namespace Volian.Controls.Library
//C2023-010: Select all child nodes when a subtype is selected
//C2023-010: Select all child nodes when a subtype is selected
private void pnode_selected ( object sender , EventArgs e )
private void pnode_selected ( object sender , EventArgs e )
{
{
DevComponents . AdvTree . Node pnode = sender as DevComponents . AdvTree . Node ;
if ( sender is DevComponents . AdvTree . Node pnode & & pnode . HasChildNodes )
if ( pnode ! = null & & pnode . HasChildNodes )
{
{
CheckTreeNodeChildren ( pnode . Nodes ) ;
CheckTreeNodeChildren ( pnode . Nodes ) ;
}
}
@@ -840,18 +773,21 @@ namespace Volian.Controls.Library
int fiCount = fi . ChildFolderCount ;
int fiCount = fi . ChildFolderCount ;
advTreeProcSets . Nodes . Clear ( ) ;
advTreeProcSets . Nodes . Clear ( ) ;
lstCheckedDocVersions . Clear ( ) ;
lstCheckedDocVersions . Clear ( ) ;
topnode = new DevComponents . AdvTree . Node ( ) ;
topnode = new DevComponents . AdvTree . Node
topnode . Text = "Available Procedure Sets" ;
{
topnode . Tag = fi ;
Text = "Available Procedure Sets" ,
topnode . DataKey = fi . FolderID ;
Tag = fi ,
DataKey = fi . FolderID
} ;
advTreeProcSets . Nodes . Add ( topnode ) ;
advTreeProcSets . Nodes . Add ( topnode ) ;
//advTreeProcSets.AfterNodeInsert += new TreeNodeCollectionEventHandler(advTreeProcSets_AfterNodeInsert);
//B2023-076: Adding option to select all procedure sets
//B2023-076: Adding option to select all procedure sets
DevComponents . AdvTree . Node selectAllNode = new Node ( ) ;
DevComponents . AdvTree . Node selectAllNode = new Node
selectAllNode . Text = SelectAllProcedureSetsText ;
{
selectAllNode . Tag = SelectAllProcedureSetsText ;
Text = SelectAllProcedureSetsText ,
selectAllNode . CheckBoxVisible = true ;
Tag = SelectAllProcedureSetsText ,
CheckBoxVisible = true
} ;
selectAllNode . NodeClick + = new EventHandler ( AllProcedureSets_clicked ) ;
selectAllNode . NodeClick + = new EventHandler ( AllProcedureSets_clicked ) ;
topnode . Nodes . Add ( selectAllNode ) ;
topnode . Nodes . Add ( selectAllNode ) ;
@@ -859,18 +795,22 @@ namespace Volian.Controls.Library
{
{
foreach ( FolderInfo fic in fi . SortedChildFolders )
foreach ( FolderInfo fic in fi . SortedChildFolders )
{
{
DevComponents . AdvTree . Node newnode = new DevComponents . AdvTree . Node ( ) ;
DevComponents . AdvTree . Node newnode = new DevComponents . AdvTree . Node
newnode . Text = fic . ToString ( ) ;
{
newnode . Tag = fic ;
Text = fic . ToString ( ) ,
newnode . DataKey = fi . FolderID ;
Tag = fic ,
DataKey = fi . FolderID
} ;
AddCheckBox ( true , newnode ) ; //C2016-045 Allow Folders to be selected.
AddCheckBox ( true , newnode ) ; //C2016-045 Allow Folders to be selected.
cntnd + + ;
cntnd + + ;
if ( fic . ChildFolderCount > 0 | | fic . FolderDocVersionCount > 0 ) // allow for '+' for tree expansion
if ( fic . ChildFolderCount > 0 | | fic . FolderDocVersionCount > 0 ) // allow for '+' for tree expansion
{
{
if ( fic . ChildFolderCount > 0 ) // B2017-176: Do not display the Working Draft node (don't create dummy for expander)
if ( fic . ChildFolderCount > 0 ) // B2017-176: Do not display the Working Draft node (don't create dummy for expander)
{
{
DevComponents . AdvTree . Node tnt = new DevComponents . AdvTree . Node ( ) ;
DevComponents . AdvTree . Node tnt = new DevComponents . AdvTree . Node
tnt . Text = DummyNodeText ;
{
Text = DummyNodeText
} ;
newnode . Nodes . Add ( tnt ) ;
newnode . Nodes . Add ( tnt ) ;
}
}
topnode . Nodes . Add ( newnode ) ;
topnode . Nodes . Add ( newnode ) ;
@@ -879,10 +819,12 @@ namespace Volian.Controls.Library
}
}
else
else
{
{
DevComponents . AdvTree . Node newnode = new DevComponents . AdvTree . Node ( ) ;
DevComponents . AdvTree . Node newnode = new DevComponents . AdvTree . Node
newnode . Text = fi . ToString ( ) ;
{
newnode . Tag = fi ;
Text = fi . ToString ( ) ,
newnode . DataKey = fi . FolderID ;
Tag = fi ,
DataKey = fi . FolderID
} ;
AddCheckBox ( true , newnode ) ; //C2016-045 Allow Folders to be selected.
AddCheckBox ( true , newnode ) ; //C2016-045 Allow Folders to be selected.
topnode . Nodes . Add ( newnode ) ;
topnode . Nodes . Add ( newnode ) ;
lstCheckedDocVersions . Add ( Mydocversion ) ;
lstCheckedDocVersions . Add ( Mydocversion ) ;
@@ -893,8 +835,10 @@ namespace Volian.Controls.Library
{
{
cntnd + + ;
cntnd + + ;
fi = Mydocversion . MyFolder ;
fi = Mydocversion . MyFolder ;
topnode = new DevComponents . AdvTree . Node ( ) ;
topnode = new DevComponents . AdvTree . Node
topnode . Text = fi . ToString ( ) ;
{
Text = fi . ToString ( )
} ;
advTreeProcSets . Nodes . Add ( topnode ) ;
advTreeProcSets . Nodes . Add ( topnode ) ;
topnode . Tag = fi ;
topnode . Tag = fi ;
topnode . DataKey = fi . FolderID ;
topnode . DataKey = fi . FolderID ;
@@ -929,43 +873,48 @@ namespace Volian.Controls.Library
{
{
foreach ( FolderInfo fic in fi . SortedChildFolders )
foreach ( FolderInfo fic in fi . SortedChildFolders )
{
{
DevComponents . AdvTree . Node newnode = new DevComponents . AdvTree . Node ( ) ;
DevComponents . AdvTree . Node newnode = new DevComponents . AdvTree . Node
newnode . Text = fic . ToString ( ) ;
{
newnode . Tag = fic ;
Text = fic . ToString ( ) ,
newnode . DataKey = fic . FolderID ;
Tag = fic ,
DataKey = fic . FolderID
} ;
par . Nodes . Add ( newnode ) ;
par . Nodes . Add ( newnode ) ;
AddCheckBox ( true , newnode ) ; //C2016-045 Allow Folders to be selected.
AddCheckBox ( true , newnode ) ; //C2016-045 Allow Folders to be selected.
newnode . Enabled = true ;
newnode . Enabled = true ;
if ( fic . ChildFolderCount > 0 ) // B2017-176: Only expand if folder has folders (not working draft nodes)
if ( fic . ChildFolderCount > 0 ) // B2017-176: Only expand if folder has folders (not working draft nodes)
{
{
DevComponents . AdvTree . Node tnt = new DevComponents . AdvTree . Node ( ) ;
DevComponents . AdvTree . Node tnt = new DevComponents . AdvTree . Node
tnt . Text = DummyNodeText ;
{
Text = DummyNodeText
} ;
newnode . Nodes . Add ( tnt ) ;
newnode . Nodes . Add ( tnt ) ;
// B2017-176: Only expand if folder has folders (not working draft nodes): the following was moved from the code
// B2017-176: Only expand if folder has folders (not working draft nodes): the following was moved from the code
// that would check if this should be enabled if seraching for transition types. The transition controls
// that would check if this should be enabled if seraching for transition types. The transition controls
// had a list of associated docversions, so needed to get the docversion in the folder:
// had a list of associated docversions, so needed to get the docversion in the folder:
if ( tabSearchTypes . SelectedTab = = tabTranSearch )
if ( tabSearchTypes . SelectedTab = = tabTranSearch & & ! dicSelectedFolderNodes . ContainsKey ( newnode ) )
dicSelectedFolderNodes . Add ( newnode , false ) ;
}
if ( tabSearchTypes . SelectedTab = = tabTranSearch )
{
{
if ( ! dicSelectedFolderNodes . ContainsKey ( newnode ) ) dicSelectedFolderNodes . Add ( newnode , false ) ;
//B2026-055 – Transition Search Improvements
// get the docversion for this folder, if it has one and determine whether it is enabled for transitions:
//Update Enabling/Disabling of Tree Elements
string svid = null ;
TraverseTree ( advTreeProcSets . Nodes [ 0 ] , cbxTranVersion . Tag ? . ToString ( ) . Split ( ',' ) ) ;
if ( fic . FolderDocVersionCount > 0 )
svid = fic . FolderDocVersions [ 0 ] . VersionID . ToString ( ) ;
newnode . Enabled = svid ! = null & & cbxTranVersion . Tag ! = null ? cbxTranVersion . Tag . ToString ( ) . Contains ( svid ) : false ;
}
}
}
}
}
}
}
}
}
}
}
public void AdvTree_AfterExpandorCollapse ( object sender , AdvTreeNodeEventArgs e )
public void AdvTree_AfterExpandorCollapse ( object sender , AdvTreeNodeEventArgs e )
{
{
Node bottomNode = BottomTreeNode ( cmboTreeROs . AdvTree . Nodes ) ;
Node bottomNode = BottomTreeNode ( cmboTreeROs . AdvTree . Nodes ) ;
Node lastNode = cmboTreeROs . AdvTree . Nodes [ cmboTreeROs . AdvTree . Nodes . Count - 1 ] ;
_ = cmboTreeROs . AdvTree . Nodes [ cmboTreeROs . AdvTree . Nodes . Count - 1 ] ; //LastNode
int top = cmboTreeROs . AdvTree . Nodes [ 0 ] . Bounds . Top ;
int top = cmboTreeROs . AdvTree . Nodes [ 0 ] . Bounds . Top ;
int bottom = bottomNode . Bounds . Bottom + 5 ;
int bottom ;
int hScrollBarHeight = cmboTreeROs . AdvTree . HScrollBar ! = null ? cmboTreeROs . AdvTree . HScrollBar . Height : 0 ;
int hScrollBarHeight = cmboTreeROs . AdvTree . HScrollBar ! = null ? cmboTreeROs . AdvTree . HScrollBar . Height : 0 ;
bottom = bottomNode . Bounds . Bottom + 5 ;
bottom = bottomNode . Bounds . Bottom + 5 ;
cmboTreeROs . AdvTree . Size = new Size ( cmboTreeROs . AdvTree . Size . Width , Math . Min ( 525 , bottom - top + hScrollBarHeight ) ) ;
cmboTreeROs . AdvTree . Size = new Size ( cmboTreeROs . AdvTree . Size . Width , Math . Min ( 525 , bottom - top + hScrollBarHeight ) ) ;
@@ -974,12 +923,9 @@ namespace Volian.Controls.Library
{
{
int yLookFor = ( bottom - cmboTreeROs . AdvTree . Size . Height ) + 2 * hScrollBarHeight ;
int yLookFor = ( bottom - cmboTreeROs . AdvTree . Size . Height ) + 2 * hScrollBarHeight ;
Node topNode = FindTreeNodeAt ( cmboTreeROs . AdvTree . Nodes , yLookFor ) ;
Node topNode = FindTreeNodeAt ( cmboTreeROs . AdvTree . Nodes , yLookFor ) ;
if ( topNode ! = null )
topNode ? . EnsureVisible ( ) ;
{
topNode . EnsureVisible ( ) ;
}
}
}
}
}
#endregion
#endregion
@@ -988,8 +934,10 @@ namespace Volian.Controls.Library
public void SetupAnnotationSearch ( AnnotationDetails annotationDetails , DisplayTabControl tc )
public void SetupAnnotationSearch ( AnnotationDetails annotationDetails , DisplayTabControl tc )
{
{
_AnnotationDetails = annotationDetails ;
_AnnotationDetails = annotationDetails ;
List < AnnotationTypeSearch > annoTypes = new List < AnnotationTypeSearch > ( ) ;
List < AnnotationTypeSearch > annoTypes = new List < AnnotationTypeSearch >
annoTypes . Add ( new AnnotationTypeSearch ( "All Annotations" , string . Empty ) ) ;
{
new AnnotationTypeSearch ( "All Annotations" , string . Empty )
} ;
AnnotationTypeInfoList annoList = AnnotationTypeInfoList . Get ( ) ;
AnnotationTypeInfoList annoList = AnnotationTypeInfoList . Get ( ) ;
foreach ( AnnotationTypeInfo ati in annoList )
foreach ( AnnotationTypeInfo ati in annoList )
annoTypes . Add ( new AnnotationTypeSearch ( ati . Name , ati . TypeID . ToString ( ) ) ) ;
annoTypes . Add ( new AnnotationTypeSearch ( ati . Name , ati . TypeID . ToString ( ) ) ) ;
@@ -1056,14 +1004,15 @@ namespace Volian.Controls.Library
foreach ( Symbol sym in sl )
foreach ( Symbol sym in sl )
{
{
DevComponents . DotNetBar . ButtonItem btnCM = new DevComponents . DotNetBar . ButtonItem ( ) ;
DevComponents . DotNetBar . ButtonItem btnCM = new DevComponents . DotNetBar . ButtonItem
{
btnCM . Text = string . Format ( "{0}" , ( char ) sym . Unicode ) ;
Text = string . Format ( "{0}" , ( char ) sym . Unicode ) ,
// to name button use unicode rather than desc, desc may have spaces or odd chars
// to name button use unicode rather than desc, desc may have spaces or odd chars
btnCM . Name = "btnCM" + sym . Unicode . ToString ( ) ;
Name = $ "btnCM{sym.Unicode.ToString()}" ,
btnCM . Tooltip = sym . Desc ;
Tooltip = sym . Desc ,
btnCM . Tag = string . Format ( @"{0}" , sym . Unicode ) ;
Tag = string . Format ( @"{0}" , sym . Unicode ) ,
btnCM . FontBold = true ;
FontBold = true
} ;
btnCM . Click + = new System . EventHandler ( btnSym_Click ) ;
btnCM . Click + = new System . EventHandler ( btnSym_Click ) ;
galSymbols . SubItems . Add ( btnCM ) ;
galSymbols . SubItems . Add ( btnCM ) ;
}
}
@@ -1112,9 +1061,11 @@ namespace Volian.Controls.Library
private DevComponents . AdvTree . Node NewAdvTreeNode ( string nodetext , bool selectable , bool chxbxvisable )
private DevComponents . AdvTree . Node NewAdvTreeNode ( string nodetext , bool selectable , bool chxbxvisable )
{
{
DevComponents . AdvTree . Node newnode ;
DevComponents . AdvTree . Node newnode ;
newnode = new DevComponents . AdvTree . Node ( ) ;
newnode = new DevComponents . AdvTree . Node
newnode . Text = nodetext ;
{
newnode . Selectable = selectable ;
Text = nodetext ,
Selectable = selectable
} ;
AddCheckBox ( chxbxvisable , newnode ) ; //C2016-045 Allow Folders to be selected.
AddCheckBox ( chxbxvisable , newnode ) ; //C2016-045 Allow Folders to be selected.
return newnode ;
return newnode ;
}
}
@@ -1161,7 +1112,7 @@ namespace Volian.Controls.Library
// folder properties dialog
// folder properties dialog
bool allowNonAdmin = IncTranCvtPerm ( ) ;
bool allowNonAdmin = IncTranCvtPerm ( ) ;
List < int > itmsEditable = new List < int > ( ) ; // return this list
List < int > itmsEditable = new List < int > ( ) ; // return this list
int listCount = 0 ;
int listCount ;
if ( all ) // Check all in list
if ( all ) // Check all in list
{
{
listCount = _SearchResults . Count ;
listCount = _SearchResults . Count ;
@@ -1185,14 +1136,13 @@ namespace Volian.Controls.Library
// not all can be converted to text. If count of itmsEditable & lbis are different some cannot be edited.
// not all can be converted to text. If count of itmsEditable & lbis are different some cannot be edited.
if ( itmsEditable . Count = = 0 )
if ( itmsEditable . Count = = 0 )
{
{
FlexibleMessageBox . Show ( "You do not have permission to edit any of the procedures, sections, and/or steps" + ( all ? "." : " that are selected." ) ,
FlexibleMessageBox . Show ( $ "You do not have permission to edit any of the procedures, sections, and/or steps{(all ? " . " : " that are selected . ")}" ,
"Convert Transition to Text" , MessageBoxButtons . OK , MessageBoxIcon . Information ) ;
"Convert Transition to Text" , MessageBoxButtons . OK , MessageBoxIcon . Information ) ;
return null ;
return null ;
}
}
else if ( itmsEditable . Count ! = listCount )
else if ( itmsEditable . Count ! = listCount )
{
{
DialogResult ans = FlexibleMessageBox . Show ( "You only have permission to edit some of the procedures, sections, and/or steps that are selected.procedures, sections, and/or steps" + ( all ? "." : " that are selected." ) +
DialogResult ans = FlexibleMessageBox . Show ( $ "You only have permission to edit some of the procedures, sections, and/or steps that are selected.procedures, sections, and/or steps{(all ? " . " : " that are selected . ")}\r\n\r\n Should the conversion of the transitions to text continue?" ,
"\r\n\r\n Should the conversion of the transitions to text continue?" ,
"Convert Transition to Text" , MessageBoxButtons . YesNo , MessageBoxIcon . Question ) ;
"Convert Transition to Text" , MessageBoxButtons . YesNo , MessageBoxIcon . Question ) ;
if ( ans = = DialogResult . No ) return null ;
if ( ans = = DialogResult . No ) return null ;
}
}
@@ -1213,7 +1163,7 @@ namespace Volian.Controls.Library
private void btnTranCvtSelToTxt_Click ( object sender , EventArgs e )
private void btnTranCvtSelToTxt_Click ( object sender , EventArgs e )
{
{
// First see if all selected can be converted, i.e. user has permission to edit
// First see if all selected can be converted, i.e. user has permission to edit
List < ListBoxItem > lbis = lbSrchResultsIncTrans . CheckedItems ;
_ = lbSrchResultsIncTrans . CheckedItems ;
List < int > itmsEditable = TranCvtCheckPermission ( false ) ;
List < int > itmsEditable = TranCvtCheckPermission ( false ) ;
if ( itmsEditable = = null | | itmsEditable . Count = = 0 ) return ;
if ( itmsEditable = = null | | itmsEditable . Count = = 0 ) return ;
TranCvtToTxt ( itmsEditable ) ;
TranCvtToTxt ( itmsEditable ) ;
@@ -1446,8 +1396,10 @@ namespace Volian.Controls.Library
{
{
ROFSTLookup . rodbi db = dbs [ i ] ;
ROFSTLookup . rodbi db = dbs [ i ] ;
DevComponents . AdvTree . Node tn = new DevComponents . AdvTree . Node ( db . dbiTitle ) ;
DevComponents . AdvTree . Node tn = new DevComponents . AdvTree . Node ( db . dbiTitle )
tn . Tag = db ;
{
Tag = db
} ;
cmboTreeROs . Nodes . Add ( tn ) ;
cmboTreeROs . Nodes . Add ( tn ) ;
AddDummyGroup ( db , tn ) ;
AddDummyGroup ( db , tn ) ;
@@ -1500,17 +1452,14 @@ namespace Volian.Controls.Library
if ( tn . HasChildNodes & & tn . Nodes [ 0 ] . Text ! = DummyNodeText ) return ; // already loaded.
if ( tn . HasChildNodes & & tn . Nodes [ 0 ] . Text ! = DummyNodeText ) return ; // already loaded.
if ( tn . HasChildNodes & & tn . Nodes [ 0 ] . Text = = DummyNodeText ) tn . Nodes [ 0 ] . Remove ( ) ;
if ( tn . HasChildNodes & & tn . Nodes [ 0 ] . Text = = DummyNodeText ) tn . Nodes [ 0 ] . Remove ( ) ;
ROFSTLookup . rochild [ ] chld = null ;
ROFSTLookup . rochild [ ] chld ;
if ( tn . Tag is ROFSTLookup . rodbi db )
if ( tn . Tag is ROFSTLookup . rodbi )
{
{
ROFSTLookup . rodbi db = ( ROFSTLookup . rodbi ) tn . Tag ;
MyROFSTLookup . LoadChildren ( ref db ) ;
MyROFSTLookup . LoadChildren ( ref db ) ;
chld = db . children ;
chld = db . children ;
}
}
else if ( tn . Tag is ROFSTLookup . rochild )
else if ( tn . Tag is ROFSTLookup . rochild ch )
{
{
ROFSTLookup . rochild ch = ( ROFSTLookup . rochild ) tn . Tag ;
MyROFSTLookup . LoadChildren ( ref ch ) ;
MyROFSTLookup . LoadChildren ( ref ch ) ;
chld = ch . children ;
chld = ch . children ;
}
}
@@ -1529,8 +1478,6 @@ namespace Volian.Controls.Library
for ( int i = 0 ; i < chld . Length ; i + + )
for ( int i = 0 ; i < chld . Length ; i + + )
{
{
ProgressBar_SetValue ( i ) ;
ProgressBar_SetValue ( i ) ;
DevComponents . AdvTree . Node tmp = null ;
ROFSTLookup . rochild roc = chld [ i ] ;
ROFSTLookup . rochild roc = chld [ i ] ;
// if this is a group, i.e. type 0, add a dummy node
// if this is a group, i.e. type 0, add a dummy node
@@ -1554,10 +1501,13 @@ namespace Volian.Controls.Library
}
}
Node tmp ;
if ( roc . value = = null )
if ( roc . value = = null )
{
{
tmp = new DevComponents . AdvTree . Node ( roc . title ) ;
tmp = new DevComponents . AdvTree . Node ( roc . title )
tmp . Tag = roc ;
{
Tag = roc
} ;
int index = FindIndex ( tn . Nodes , tmp . Text ) ;
int index = FindIndex ( tn . Nodes , tmp . Text ) ;
tn . Nodes . Insert ( index , tmp ) ;
tn . Nodes . Insert ( index , tmp ) ;
@@ -1567,8 +1517,10 @@ namespace Volian.Controls.Library
}
}
else
else
{
{
tmp = new DevComponents . AdvTree . Node ( roc . title ) ;
tmp = new DevComponents . AdvTree . Node ( roc . title )
tmp . Tag = roc ;
{
Tag = roc
} ;
if ( roc . roid . Length = = 16 )
if ( roc . roid . Length = = 16 )
{
{
@@ -1608,9 +1560,8 @@ namespace Volian.Controls.Library
{
{
cbxFndUnLnkROVals . Enabled = false ;
cbxFndUnLnkROVals . Enabled = false ;
}
}
else if ( cmboTreeROs . SelectedNode . Tag is ROFSTLookup . rochild )
else if ( cmboTreeROs . SelectedNode . Tag is ROFSTLookup . rochild ro )
{
{
ROFSTLookup . rochild ro = ( ROFSTLookup . rochild ) cmboTreeROs . SelectedNode . Tag ;
// B2022-026 RO Memory Reduction code - check children length
// B2022-026 RO Memory Reduction code - check children length
cbxFndUnLnkROVals . Enabled = ( ro . children = = null | | ro . children . Length < = 0 ) ;
cbxFndUnLnkROVals . Enabled = ( ro . children = = null | | ro . children . Length < = 0 ) ;
}
}
@@ -1632,12 +1583,7 @@ namespace Volian.Controls.Library
bool keeplooking = true ;
bool keeplooking = true ;
//build a stack (bread crumb trail) of where is procedure set came from within the tree.
//build a stack (bread crumb trail) of where is procedure set came from within the tree.
Stack < string > crumbs = new Stack < string > ( ) ;
Stack < string > crumbs = new Stack < string > ( ) ;
//crumbs.Push(Mydocversion.Name); // ex: "working draft"
//crumbs.Push(Mydocversion.MyFolder.Name); // ex: "Emergency Procedures"
//crumbs.Push(Mydocversion.MyFolder.MyParent.Name); // ex: "STPNOC-South Texas"
//crumbs.Push(advTreeProcSets.Nodes[0].Text); //top node of my tree
//crumbs.Push(Mydocversion.Name); // ex: "working draft"
crumbs . Push ( Mydocversion . MyFolder . Name ) ; // ex: "Emergency Procedures"
crumbs . Push ( Mydocversion . MyFolder . Name ) ; // ex: "Emergency Procedures"
FolderInfo fi = Mydocversion . MyFolder . MyParent ;
FolderInfo fi = Mydocversion . MyFolder . MyParent ;
while ( fi ! = null )
while ( fi ! = null )
@@ -1822,13 +1768,11 @@ namespace Volian.Controls.Library
// item to be clicked and to turn on/off the btnTranCvtSelToTxt button for converting selected to test.
// item to be clicked and to turn on/off the btnTranCvtSelToTxt button for converting selected to test.
private void lbSrchResultsIncTrans_ItemClicked ( object sender , EventArgs e )
private void lbSrchResultsIncTrans_ItemClicked ( object sender , EventArgs e )
{
{
ListBoxItem lbi = sender as ListBoxItem ;
if ( sender is ListBoxItem lbi )
if ( lbi ! = null )
{
{
ItemBindingData ibd = lbi . Tag as ItemBindingData ;
ItemBindingData ibd = lbi . Tag as ItemBindingData ;
ItemInfo ii = ibd . DataItem as ItemInfo ;
bool allowNonAdmin = IncTranCvtPerm ( ) ;
bool allowNonAdmin = IncTranCvtPerm ( ) ;
if ( lbi . CheckState = = CheckState . Checked & & ii ! = null )
if ( lbi . CheckState = = CheckState . Checked & & ibd . DataItem is ItemInfo ii )
{
{
if ( ! allowNonAdmin & & ! UserInfo . CanEdit ( MyUserInfo , ii . MyDocVersion ) )
if ( ! allowNonAdmin & & ! UserInfo . CanEdit ( MyUserInfo , ii . MyDocVersion ) )
{
{
@@ -2039,11 +1983,8 @@ namespace Volian.Controls.Library
bool includeSpecialChars = ( TextSearchString ! = @"\?" ) ; // true;
bool includeSpecialChars = ( TextSearchString ! = @"\?" ) ; // true;
// Build list of selected types that were searched
// Build list of selected types that were searched
string typstr = null ;
string typstr = null ;
foreach ( string s in lstCheckedStepTypesStr ) typstr = typstr = = null ? s : typstr + ", " + s ;
foreach ( string s in lstCheckedStepTypesStr ) typstr = typstr = = null ? s : $"{typstr}, {s}" ;
TypesSelected = "Filtered By: " + ( ( typstr ! = null ) ? typstr : "All Step Types" ) ;
TypesSelected = $ "Filtered By: {typstr ?? " All Step Types "}" ;
//TypesSelected = "Step Types Searched: " + ((typstr != null) ? typstr : "all step types");
//TypesSelected = "Searched Step Types: " + ((typstr != null) ? typstr : "all step types");
//TypesSelected = (typstr != null) ? "Searched Step Types: " + typstr : "Searched All Step Types";
string unitPrefix = string . Empty ;
string unitPrefix = string . Empty ;
if ( Mydocversion ! = null )
if ( Mydocversion ! = null )
unitPrefix = Mydocversion . DocVersionConfig . Unit_ProcedureNumber ;
unitPrefix = Mydocversion . DocVersionConfig . Unit_ProcedureNumber ;
@@ -2063,11 +2004,8 @@ namespace Volian.Controls.Library
}
}
else
else
{
{
//string typstr = null;
//foreach (string s in lstCheckedStepTypesStr) typstr = typstr==null?s:typstr + ", " + s;
//ReportTitle = "Search for Selected Types"; //"Proms - Search by Type: " + typstr;
ReportTitle = "Step Element Report" ; //"Proms - Search by Type: " + typstr;
ReportTitle = "Step Element Report" ; //"Proms - Search by Type: " + typstr;
TypesSelected = "Filtered By: " + typstr ;
TypesSelected = $ "Filtered By: {typstr} ";
SearchString = null ;
SearchString = null ;
// B2022-031 - added a cbxProcSectSrch to filter out procedure and section titles from global search results.
// B2022-031 - added a cbxProcSectSrch to filter out procedure and section titles from global search results.
SearchResults = ItemInfoList . GetListFromTextSearch ( DVISearchList , TypeSearchList , string . Empty , cbxBooleanTxtSrch . Checked ? 2 : cbxCaseSensitive . Checked ? 1 : 0 , cbxProcSectSrch . Checked ? 1 : 0 , ItemSearchIncludeLinks . Value , includeRTFformat , includeSpecialChars , unitPrefix , string . Empty , string . Empty ) ;
SearchResults = ItemInfoList . GetListFromTextSearch ( DVISearchList , TypeSearchList , string . Empty , cbxBooleanTxtSrch . Checked ? 2 : cbxCaseSensitive . Checked ? 1 : 0 , cbxProcSectSrch . Checked ? 1 : 0 , ItemSearchIncludeLinks . Value , includeRTFformat , includeSpecialChars , unitPrefix , string . Empty , string . Empty ) ;
@@ -2076,14 +2014,6 @@ namespace Volian.Controls.Library
}
}
else
else
{
{
//if (textSearchString.Equals(string.Empty))
//{
// MessageBox.Show("Please enter some search text, then click the Search button", "No Search Text");
// cbxTextSearchText.Focus();
//}
//else
//{
//ReportTitle = string.Format("Proms - {0} Search for '{1}'", cbxBooleanTxtSrch.Checked ? "Boolean" : "Text", TextSearchString);
ReportTitle = string . Format ( "Search for '{0}'" , TextSearchString ) ;
ReportTitle = string . Format ( "Search for '{0}'" , TextSearchString ) ;
// C2020-009: Search - Allow search 'By Word'.
// C2020-009: Search - Allow search 'By Word'.
@@ -2114,8 +2044,6 @@ namespace Volian.Controls.Library
}
}
}
}
SearchString = TextSearchString ;
SearchString = TextSearchString ;
//TypesSelected = (typstr != null) ? "Searched Step Types: " + typstr : "Searched All Step Types";
//TypesSelected = "Searched Step Types: " + ((typstr != null) ? typstr : "All Step Types");
// B2022-031 - added a cbxProcSectSrch to filter out procedure and section titles from global search results.
// B2022-031 - added a cbxProcSectSrch to filter out procedure and section titles from global search results.
SearchResults = ItemInfoList . GetListFromTextSearch ( DVISearchList , TypeSearchList , TextSearchString /*.Replace(@"\",@"\u9586?")*/ , cbxBooleanTxtSrch . Checked ? 2 : cbxCaseSensitive . Checked ? 1 : 0 , cbxProcSectSrch . Checked ? 1 : 0 , cbxIncROTextSrch . Checked ? ItemSearchIncludeLinks . Value : ItemSearchIncludeLinks . Nothing , includeRTFformat , includeSpecialChars , unitPrefix , byWordPrefix , byWordSuffix ) ;
SearchResults = ItemInfoList . GetListFromTextSearch ( DVISearchList , TypeSearchList , TextSearchString /*.Replace(@"\",@"\u9586?")*/ , cbxBooleanTxtSrch . Checked ? 2 : cbxCaseSensitive . Checked ? 1 : 0 , cbxProcSectSrch . Checked ? 1 : 0 , cbxIncROTextSrch . Checked ? ItemSearchIncludeLinks . Value : ItemSearchIncludeLinks . Nothing , includeRTFformat , includeSpecialChars , unitPrefix , byWordPrefix , byWordSuffix ) ;
@@ -2129,7 +2057,6 @@ namespace Volian.Controls.Library
{
{
LastSearchWasAnnotations = true ; // B2019-119 only refresh annotation search results if an annotation search was done
LastSearchWasAnnotations = true ; // B2019-119 only refresh annotation search results if an annotation search was done
SearchString = null ;
SearchString = null ;
//ReportTitle = string.Format("Proms - Annotation Search for '{0}'", cbxTextSearchAnnotation.Text);
if ( cbxTextSearchAnnotation . Text = = null | | cbxTextSearchAnnotation . Text = = string . Empty )
if ( cbxTextSearchAnnotation . Text = = null | | cbxTextSearchAnnotation . Text = = string . Empty )
{
{
ReportTitle = string . Format ( "Find {0}{1}" , cbxAnnoTypes . Text , ( cbxAnnoTypes . SelectedIndex > 0 ) ? " Annotations" : string . Empty ) ;
ReportTitle = string . Format ( "Find {0}{1}" , cbxAnnoTypes . Text , ( cbxAnnoTypes . SelectedIndex > 0 ) ? " Annotations" : string . Empty ) ;
@@ -2138,14 +2065,8 @@ namespace Volian.Controls.Library
{
{
ReportTitle = string . Format ( "Search {0}{1} For '{2}'" , cbxAnnoTypes . Text , ( cbxAnnoTypes . SelectedIndex > 0 ) ? " Annotations" : string . Empty , cbxTextSearchAnnotation . Text ) ;
ReportTitle = string . Format ( "Search {0}{1} For '{2}'" , cbxAnnoTypes . Text , ( cbxAnnoTypes . SelectedIndex > 0 ) ? " Annotations" : string . Empty , cbxTextSearchAnnotation . Text ) ;
}
}
//ReportTitle = string.Format("Search Annotations for '{0}'", cbxTextSearchAnnotation.Text);
//string srchStr = ConvertSpecialChars(cbxTextSearchAnnotation.Text);//cbxTextSearchAnnotation.Text;
//TypesSelected = "Searched Step Types: " + ((typstr != null) ? typstr : "All Step Types");
//SearchResults = ItemInfoList.GetListFromAnnotationSearch(dviSearchList, typeSearchList, textSearchString, srchStr, cbxCaseSensitiveAnnoText.Checked);
SearchResults = ItemInfoList . GetListFromAnnotationSearch ( DVISearchList , TypeSearchList , AnnotationSearchType , cbxTextSearchAnnotation . Text , cbxCaseSensitiveAnnoText . Checked , unitPrefix ) ;
SearchResults = ItemInfoList . GetListFromAnnotationSearch ( DVISearchList , TypeSearchList , AnnotationSearchType , cbxTextSearchAnnotation . Text , cbxCaseSensitiveAnnoText . Checked , unitPrefix ) ;
//UpdateAnnotationSearchResults();
cmbResultsStyleIndex = 2 ; // display annotation text in results
cmbResultsStyleIndex = 2 ; // display annotation text in results
// C2019-001: Search in RNO steps only
// C2019-001: Search in RNO steps only
if ( cbxRnoOnlyAnnot . Checked ) GetInRNOResults ( ) ;
if ( cbxRnoOnlyAnnot . Checked ) GetInRNOResults ( ) ;
@@ -2153,9 +2074,7 @@ namespace Volian.Controls.Library
else if ( tabSearchTypes . SelectedTab = = tabSearchTypes . Tabs [ 2 ] ) // RO Search
else if ( tabSearchTypes . SelectedTab = = tabSearchTypes . Tabs [ 2 ] ) // RO Search
{
{
SearchString = null ;
SearchString = null ;
//ReportTitle = "Proms - Referenced Object Search";
ReportTitle = string . Format ( "Search For Referenced Object:\n{0}" , cmboTreeROs . Text ) ;
ReportTitle = string . Format ( "Search For Referenced Object:\n{0}" , cmboTreeROs . Text ) ;
//TypesSelected = "Searched Step Types: " + ((typstr != null) ? typstr : "All Step Types");
if ( cbxFndUnLnkROVals . Enabled & & cbxFndUnLnkROVals . Checked )
if ( cbxFndUnLnkROVals . Enabled & & cbxFndUnLnkROVals . Checked )
{
{
@@ -2175,22 +2094,37 @@ namespace Volian.Controls.Library
{
{
ReportTitle = string . Format ( "Search For Transitions: Transition Type: {0}, Transition Category: {1}" , cbxTranFormat . SelectedItem , cbxTranCategory . SelectedItem ) ;
ReportTitle = string . Format ( "Search For Transitions: Transition Type: {0}, Transition Category: {1}" , cbxTranFormat . SelectedItem , cbxTranCategory . SelectedItem ) ;
string docVersionList = string . Empty ;
string docVersionList = string . Empty ;
bool bypassSearch = false ;
if ( lstCheckedDocVersions . Count = = 0 )
if ( lstCheckedDocVersions . Count = = 0 )
docVersionList = cbxTranVersion . Tag . ToString ( ) ;
docVersionList = cbxTranVersion . Tag . ToString ( ) ;
else
else
{
{
string sep = string . Empty ;
//B2026-055 – Transition Search Improvements
foreach ( DocVersionInfo dvi in lstCheckedDocVersions )
//Changed matching to take Filtered Formats into account if both tree
//Items selected and Format dropdown filtered
if ( string . IsNullOrEmpty ( cbxTranVersion . Tag ? . ToString ( ) ) )
{
{
docVersionList + = sep + dvi . VersionID . ToString ( ) ;
docVersionList = string . Join ( "," , lstCheckedDocVersions . Select ( y = > y . VersionID . ToString ( ) ) ) ;
sep = "," ;
}
else
{
var fromatversionslst = cbxTranVersion . Tag . ToString ( ) . Split ( ',' ) . Select ( int . Parse ) ;
var selectedversionlst = lstCheckedDocVersions . Select ( y = > y . VersionID ) ;
docVersionList = string . Join ( "," , fromatversionslst . Intersect ( selectedversionlst ) ) ;
if ( string . IsNullOrEmpty ( docVersionList ) )
{
bypassSearch = true ;
FlexibleMessageBox . Show ( "No Matches Found." , "Search" ) ;
}
}
}
}
}
// B2018-134 to search specifically for Outside Transitions, set docVeronList to empty string so that all procedure sets are considered
// B2018-134 to search specifically for Outside Transitions, set docVeronList to empty string so that all procedure sets are considered
if ( cbxTranCategory . SelectedItem . ToString ( ) = = "Outside" )
if ( cbxTranCategory . SelectedItem ? . ToString ( ) = = "Outside" )
docVersionList = string . Empty ;
docVersionList = string . Empty ;
// added TypeSearchList for bug fix B2015-055
// added TypeSearchList for bug fix B2015-055
SearchResults = ItemInfoList . GetListFromTransitionSearch ( docVersionList , cbxTranFormat . SelectedIndex - 1 , cbxTranCategory . SelectedItem . ToString ( ) = = "All" ? string . Empty : cbxTranCategory . SelectedItem . ToString ( ) , TypeSearchList ) ;
if ( cbxTranFormat . SelectedIndex = = - 1 ) cbxTranFormatFillIn ( docVersionList ) ;
if ( ! bypassSearch ) SearchResults = ItemInfoList . GetListFromTransitionSearch ( docVersionList , cbxTranFormat . SelectedIndex - 1 , cbxTranCategory . SelectedItem ? . ToString ( ) = = "All" ? string . Empty : ( cbxTranCategory . SelectedItem ? . ToString ( ) ? ? string . Empty ) , TypeSearchList ) ;
cmbResultsStyleIndex = 3 ; // display step text in results
cmbResultsStyleIndex = 3 ; // display step text in results
// C2019-001: Search in RNO steps only
// C2019-001: Search in RNO steps only
if ( cbxRnoOnlyTrans . Checked ) GetInRNOResults ( ) ;
if ( cbxRnoOnlyTrans . Checked ) GetInRNOResults ( ) ;
@@ -2247,16 +2181,13 @@ namespace Volian.Controls.Library
string tmpmsg = ( cbxBooleanTxtSrch . Checked & & ex . Message . Contains ( "Syntax error" ) & & ex . Message . Contains ( "full-text search" ) ) ?
string tmpmsg = ( cbxBooleanTxtSrch . Checked & & ex . Message . Contains ( "Syntax error" ) & & ex . Message . Contains ( "full-text search" ) ) ?
"Place \"\" around words that you are searching for, so that parser can better understand what you are trying to find" :
"Place \"\" around words that you are searching for, so that parser can better understand what you are trying to find" :
ex . Message ;
ex . Message ;
FlexibleMessageBox . Show ( tmpmsg , "Search Error: " + ex . GetType ( ) . Name ) ;
FlexibleMessageBox . Show ( tmpmsg , $ "Search Error: {ex.GetType().Name}" ) ;
}
}
finally
finally
{
{
Cursor = savcursor ;
Cursor = savcursor ;
}
}
//Console.WriteLine("{0} Milliseconds", TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks).TotalMilliseconds);
OnSearchComplete ( new DisplaySearchEventArgs ( TimeSpan . FromTicks ( DateTime . Now . Ticks - start . Ticks ) ) ) ;
OnSearchComplete ( new DisplaySearchEventArgs ( TimeSpan . FromTicks ( DateTime . Now . Ticks - start . Ticks ) ) ) ;
//if (VlnSettings.DebugMode)
// MessageBox.Show(string.Format("{0} Milliseconds", TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks).TotalMilliseconds));
}
}
private void ClearResults ( ) // B2021-103 if no results when RNO only, clear results list. (moved from btnSearch_Click)
private void ClearResults ( ) // B2021-103 if no results when RNO only, clear results list. (moved from btnSearch_Click)
@@ -2317,7 +2248,7 @@ namespace Volian.Controls.Library
if ( ii . SearchAnnotationText = = null ) ii . SearchAnnotationText = AnnotationInfo . Get ( ii . ItemAnnotations [ 0 ] . AnnotationID ) . SearchText ;
if ( ii . SearchAnnotationText = = null ) ii . SearchAnnotationText = AnnotationInfo . Get ( ii . ItemAnnotations [ 0 ] . AnnotationID ) . SearchText ;
}
}
if ( ii . SearchAnnotationText = = null ) ii . SearchAnnotationText = "None - [" + ii . DisplayText + " ]";
if ( ii . SearchAnnotationText = = null ) ii . SearchAnnotationText = $ "None - [{ii.DisplayText} ]";
else
else
{
{
hasAnnot = true ;
hasAnnot = true ;
@@ -2467,7 +2398,7 @@ namespace Volian.Controls.Library
//C2025-005 Find Step Elements
//C2025-005 Find Step Elements
//Need to refresh the Doc List and Available Step Types
//Need to refresh the Doc List and Available Step Types
//if All Procedure Sets was selected
//if All Procedure Sets was selected
if ( n . Tag = = SelectAllProcedureSetsText )
if ( n . Tag is string txt & & txt = = SelectAllProcedureSetsText )
{
{
if ( n . Checked )
if ( n . Checked )
{
{
@@ -2518,7 +2449,6 @@ namespace Volian.Controls.Library
{
{
if ( tn . Checked )
if ( tn . Checked )
{
{
//tn.Style = DevComponents.AdvTree.NodeStyles.Apple; // sets green background on selected folder(s)
//B2023-112: Don't crash if on top 'All' node (did not have associated folder)
//B2023-112: Don't crash if on top 'All' node (did not have associated folder)
FolderInfo fi = tn . Tag as FolderInfo ;
FolderInfo fi = tn . Tag as FolderInfo ;
// if this folder has a docversion, use its id:
// if this folder has a docversion, use its id:
@@ -2565,8 +2495,10 @@ namespace Volian.Controls.Library
lstCheckedStepTypesStr . Clear ( ) ;
lstCheckedStepTypesStr . Clear ( ) ;
foreach ( string str in strs )
foreach ( string str in strs )
{
{
Node newnode = new DevComponents . AdvTree . Node ( ) ;
Node newnode = new DevComponents . AdvTree . Node
newnode . Text = str ;
{
Text = str
} ;
advTreeStepTypes . Nodes . Add ( newnode ) ;
advTreeStepTypes . Nodes . Add ( newnode ) ;
}
}
buildStepTypePannelTitle ( ) ;
buildStepTypePannelTitle ( ) ;
@@ -2655,17 +2587,24 @@ namespace Volian.Controls.Library
private void cbxTranFormatFillIn ( string vid )
private void cbxTranFormatFillIn ( string vid )
{
{
vid = vid . IndexOf ( "," ) < 0 ? vid : vid . Substring ( 0 , cbxTranVersion . Tag . ToString ( ) . IndexOf ( "," ) ) ;
vid = vid . IndexOf ( "," ) < 0 ? vid : vid . Substring ( 0 , cbxTranVersion . Tag . ToString ( ) . IndexOf ( "," ) ) ;
//B2026-055 – Transition Search Improvements
//Change the order of items happening
//previous order was causing an error when clicked downdownlist to
//show all items and then didn't select an item in the list
cbxTranFormat . Items . Clear ( ) ;
cbxTranFormat . Items . Add ( "All" ) ;
if ( ! string . IsNullOrEmpty ( vid ) )
{
DocVersionInfo dvi = DocVersionInfo . Get ( int . Parse ( vid ) ) ;
DocVersionInfo dvi = DocVersionInfo . Get ( int . Parse ( vid ) ) ;
TransTypeList ttl = dvi . ActiveFormat . PlantFormat . FormatData . TransData . TransTypeList ;
TransTypeList ttl = dvi . ActiveFormat . PlantFormat . FormatData . TransData . TransTypeList ;
cbxTranFormat . Items . Clear ( ) ;
cbxTranFormat . Items . Add ( "All" ) ;
for ( int i = 0 ; i < ttl . MaxIndex ; i + + )
for ( int i = 0 ; i < ttl . MaxIndex ; i + + )
{
{
cbxTranFormat . Items . Add ( new TransItem ( ttl [ i ] . TransMenu . Replace ( "?." , string . Empty ) , ttl [ i ] . TransFormat . Replace ( "?." , string . Empty ) ) ) ;
cbxTranFormat . Items . Add ( new TransItem ( ttl [ i ] . TransMenu . Replace ( "?." , string . Empty ) , ttl [ i ] . TransFormat . Replace ( "?." , string . Empty ) ) ) ;
}
}
}
cbxTranFormat . SelectedIndex = 0 ;
cbxTranFormat . SelectedIndex = 0 ;
cbxTranCategory . Items . Clear ( ) ;
cbxTranCategory . Items . Clear ( ) ;
@@ -2715,9 +2654,9 @@ namespace Volian.Controls.Library
if ( advTreeStepTypes . Nodes . Count = = 1 & & n . Checked )
if ( advTreeStepTypes . Nodes . Count = = 1 & & n . Checked )
{
{
if ( n . Tag is DocVersionInfo ) // Only set MyDocVersion if it is a DocVersion
if ( n . Tag is DocVersionInfo info ) // Only set MyDocVersion if it is a DocVersion
{
{
Mydocversion = ( DocVersionInfo ) n . Tag ;
Mydocversion = info ;
StartAdvTreeStepTypesFillIn ( ) ; // B2016-258 Hang after selecting a procedure if the Step Type panel is open on the search panel
StartAdvTreeStepTypesFillIn ( ) ; // B2016-258 Hang after selecting a procedure if the Step Type panel is open on the search panel
}
}
}
}
@@ -2742,8 +2681,6 @@ namespace Volian.Controls.Library
if ( n . Checked )
if ( n . Checked )
{
{
//n.Style = DevComponents.AdvTree.NodeStyles.Apple; // B2023-112: coloring of proc set tree nodes was not working correctly
if ( sd = = null )
if ( sd = = null )
{
{
//C2023-010: Since the tag is null for Word Sections and HLS types, we need to determine which one has been selected. Word sections we need
//C2023-010: Since the tag is null for Word Sections and HLS types, we need to determine which one has been selected. Word sections we need
@@ -2872,7 +2809,7 @@ namespace Volian.Controls.Library
xpStepTypes . TitleStyle . BackColor1 . Color = saveXpStepTypeTitleColor ;
xpStepTypes . TitleStyle . BackColor1 . Color = saveXpStepTypeTitleColor ;
}
}
else //lstCheckedStepTypes.Count > 0
else
{
{
// show how many selected whether panel is expanded or not
// show how many selected whether panel is expanded or not
xpStepTypes . TitleText = string . Format ( "{0} Step Element{1} Selected" , lstCheckedStepTypes . Count , ( lstCheckedStepTypes . Count > 1 ) ? "s" : string . Empty ) ; // B2018-132 changed second {0} to {1}
xpStepTypes . TitleText = string . Format ( "{0} Step Element{1} Selected" , lstCheckedStepTypes . Count , ( lstCheckedStepTypes . Count > 1 ) ? "s" : string . Empty ) ; // B2018-132 changed second {0} to {1}
@@ -2944,7 +2881,6 @@ namespace Volian.Controls.Library
private bool OnlyWordSectTypeSel ( )
private bool OnlyWordSectTypeSel ( )
{
{
// B2021-100: Enable/disable the RNO Only checkbox & WORD Sections tree node in Step Elements to Search.
// B2021-100: Enable/disable the RNO Only checkbox & WORD Sections tree node in Step Elements to Search.
// lstCheckedStepTypes[x] = 0 for Word sections:
if ( lstCheckedStepTypes ! = null & & lstCheckedStepTypes . Count = = 1 & & lstCheckedStepTypes [ 0 ] = = 0 )
if ( lstCheckedStepTypes ! = null & & lstCheckedStepTypes . Count = = 1 & & lstCheckedStepTypes [ 0 ] = = 0 )
return true ;
return true ;
@@ -3143,11 +3079,6 @@ namespace Volian.Controls.Library
lbSrchResults . DataSource = null ;
lbSrchResults . DataSource = null ;
lbSrchResults . Items . Clear ( ) ;
lbSrchResults . Items . Clear ( ) ;
toolTip1 . SetToolTip ( lbSrchResults , null ) ;
toolTip1 . SetToolTip ( lbSrchResults , null ) ;
string unitPrefix = string . Empty ;
if ( Mydocversion ! = null )
unitPrefix = Mydocversion . DocVersionConfig . Unit_ProcedureNumber ;
if ( unitPrefix . EndsWith ( "#" ) )
unitPrefix = unitPrefix . Replace ( "#" , string . Empty ) ;
Cursor = Cursors . WaitCursor ;
Cursor = Cursors . WaitCursor ;
try // B2021-045: don't crash if xml file cannot be loaded.
try // B2021-045: don't crash if xml file cannot be loaded.
@@ -3177,7 +3108,7 @@ namespace Volian.Controls.Library
Node tnode = advTreeProcSets . FindNodeByDataKey ( folderID ) ;
Node tnode = advTreeProcSets . FindNodeByDataKey ( folderID ) ;
if ( tnode ! = null ) tnode . Checked = true ;
if ( tnode ! = null ) tnode . Checked = true ;
}
}
Mydocversion = tmpdvi = = null ? fromLoadFiledvi : tmpdvi ;
Mydocversion = tmpdvi ? ? fromLoadFiledvi ;
}
}
AdvTreeStepTypesFillIn ( ) ;
AdvTreeStepTypesFillIn ( ) ;
@@ -3200,10 +3131,10 @@ namespace Volian.Controls.Library
}
}
string typstr = null ;
string typstr = null ;
foreach ( string s in lstCheckedStepTypesStr ) typstr = typstr = = null ? s : typstr + ", " + s ;
foreach ( string s in lstCheckedStepTypesStr ) typstr = typstr = = null ? s : $"{typstr}, {s}" ;
TypesSelected = "Filtered By: " + ( ( typstr ! = null ) ? typstr : "All Step Types" ) ;
TypesSelected = $ "Filtered By: {typstr ?? " All Step Types "}" ;
ReportTitle = "Step Element Report" ; //"Proms - Search by Type: " + typstr;
ReportTitle = "Step Element Report" ; //"Proms - Search by Type: " + typstr;
TypesSelected = "Filtered By: " + typstr ;
TypesSelected = $ "Filtered By: {typstr} ";
advTreeStepTypes . RefreshItems ( ) ;
advTreeStepTypes . RefreshItems ( ) ;
buildStepTypePannelTitle ( ) ;
buildStepTypePannelTitle ( ) ;
}
}
@@ -3296,7 +3227,7 @@ namespace Volian.Controls.Library
}
}
}
}
}
}
catch ( Exception ex )
catch ( Exception )
{
{
FlexibleMessageBox . Show ( "An error occurred while reading the xml file.\r\n\r\nThis can happen when the file selected for the Load is not saved\r\n" +
FlexibleMessageBox . Show ( "An error occurred while reading the xml file.\r\n\r\nThis can happen when the file selected for the Load is not saved\r\n" +
"from a PROMS Search or if some of the steps no longer exist." , "Search Load Failed" , MessageBoxButtons . OK ) ;
"from a PROMS Search or if some of the steps no longer exist." , "Search Load Failed" , MessageBoxButtons . OK ) ;
@@ -3476,6 +3407,46 @@ namespace Volian.Controls.Library
}
}
}
}
//B2026-055 – Transition Search Improvements
//Update Enabling/Disabling of Tree Elements
public bool TraverseTree ( DevComponents . AdvTree . Node node , string [ ] versions )
{
bool result = true ;
int numhiddenchildnodes = 0 ;
// Recursively call this method for each child node
foreach ( DevComponents . AdvTree . Node childNode in node . Nodes )
{
if ( ! TraverseTree ( childNode , versions ) )
{
numhiddenchildnodes + + ;
}
}
// Process the current node (e.g., enable it if it is contained)
//Select all always shows
//also Enable Dummy Nodes by default
if ( versions = = null | | ( versions . Length = = 1 & & string . IsNullOrEmpty ( versions [ 0 ] ) ) | | node . Tag = = null | | ( node . Tag is string txt & & txt = = SelectAllProcedureSetsText ) )
{
node . Enabled = true ;
return true ;
}
//if all child nodes are hidden, hide the parent
else if ( numhiddenchildnodes = = node . Nodes . Count )
{
result = false ;
}
FolderInfo fi = ( FolderInfo ) node . Tag ;
if ( fi . FolderDocVersionCount > 0 )
{
result = versions . Contains ( fi . FolderDocVersions [ 0 ] . VersionID . ToString ( ) ) ;
}
node . Enabled = result ;
return result ;
}
private void btnCopySearchResults_Click ( object sender , EventArgs e )
private void btnCopySearchResults_Click ( object sender , EventArgs e )
{
{
ICollection < ItemInfo > myList = lbSrchResults . DataSource as ICollection < ItemInfo > ;
ICollection < ItemInfo > myList = lbSrchResults . DataSource as ICollection < ItemInfo > ;
@@ -3541,7 +3512,6 @@ namespace Volian.Controls.Library
private bool IncTransCvtAllToTextPerm ( )
private bool IncTransCvtAllToTextPerm ( )
{
{
if ( _SearchResults = = null ) return false ;
if ( _SearchResults = = null ) return false ;
int cnt = 0 ;
bool allowNonAdmin = IncTranCvtPerm ( ) ;
bool allowNonAdmin = IncTranCvtPerm ( ) ;
foreach ( ItemInfo ii in _SearchResults )
foreach ( ItemInfo ii in _SearchResults )
{
{
@@ -3657,6 +3627,8 @@ namespace Volian.Controls.Library
}
}
}
}
}
}
#pragma warning restore IDE1006 // Naming Styles
#pragma warning restore IDE0044 // Add readonly modifier
#endregion
#endregion