Files
SourceCode/PROMS/VEPROMS User Interface/frmFolderProperties.cs
T

1339 lines
50 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using VEPROMS.CSLA.Library;
using DevComponents.DotNetBar;
using DevComponents.DotNetBar.Controls;
using System.Drawing.Imaging;
using VEPROMS.Properties;
using DescriptiveEnum;
using Volian.Controls.Library;
namespace VEPROMS
{
public partial class frmFolderProperties : DevComponents.DotNetBar.Office2007Form
{
private bool _Initializing = false;
private readonly FolderConfig _FolderConfig;
private readonly bool _IsVepromsNode = false;
private readonly bool _IsDefaultSettingNode = false;
private string _DefaultFormatName = null;
private string _DefaultChgBarType = null;
private string _DefaultChgBarLoc = null;
private string _DefaultChgBarText = null;
private string _DefaultChgBarUsrMsg1 = null;
private string _DefaultChgBarUsrMsg2 = null;
private string _DefaultROGraficFileExtension = null;
private string _DefaultWatermark = null;
private string _DefaultFormatColumns = null;
private bool _ValidateTextBox = true;
public frmFolderProperties(FolderConfig folderConfig)
{
_FolderConfig = folderConfig;
_IsVepromsNode = !folderConfig.HasParent; // top tree node does not have a parent
if (!_IsVepromsNode)
_IsDefaultSettingNode = _FolderConfig.MyFolder.MyParent.MyParent == null;
_Initializing = true;
InitializeComponent();
btnGeneral.PerformClick(); // always start with General tab or button
_Initializing = false;
// Build window caption
Text = $"{folderConfig.Name} Properties";
if (_IsDefaultSettingNode)
{
// Change these labels for the first node after the VE-PROMS node.
ppLblDefSettingsInfo.Text = "* Default Proms settings are shown in italics";
ppCbShwDefSettings.Text = "Show Default Proms Settings";
}
}
/// <summary>
/// Use the ParentLookup to grab the default values
/// - set the watermark property (where applicable) of the control with that value
/// - set the default setting labels with that value
/// ** the default setting labels appear when the Show Default Values checkbox is checked by the user.
/// </summary>
private void FindDefaultValues()
{
_FolderConfig.ParentLookup = true;
// Get the default format name
_DefaultFormatName = _FolderConfig.DefaultFormatSelection;
SetupDefault(_DefaultFormatName, ppLblFormatDefault, ppCmbxFormat);
// Get the default Change Bar Type
_DefaultChgBarType = _FolderConfig.Print_ChangeBar.ToString();
SetupDefault(EnumDescConverter.GetEnumDescription(_FolderConfig.Print_ChangeBar), ppLblChangeBarTypeDefault, ppCmbxChangeBarType);
// Get the default Change Bar Location
_DefaultChgBarLoc = _FolderConfig.Print_ChangeBarLoc.ToString();
SetupDefault(EnumDescConverter.GetEnumDescription(_FolderConfig.Print_ChangeBarLoc), ppLblChgBarPosDefault, ppCmbxChgBarPos);
// Get the default Change Bar text
_DefaultChgBarText = _FolderConfig.Print_ChangeBarText.ToString();
SetupDefault(EnumDescConverter.GetEnumDescription(_FolderConfig.Print_ChangeBarText), ppLblChgBarTxtTypeDefault, ppCmbxChgBarTxtType);
// Get the default User Change Bar Message 1
_DefaultChgBarUsrMsg1 = _FolderConfig.Print_UserCBMess1;
if (!(_DefaultChgBarUsrMsg1.Equals("")))
ppLblChgBarUserMsgOneDefault.Text = string.Format("({0})", _DefaultChgBarUsrMsg1);
// Get the default User Change Bar Message 2
_DefaultChgBarUsrMsg2 = _FolderConfig.Print_UserCBMess2;
if (!(_DefaultChgBarUsrMsg2.Equals("")))
ppLblChgBarUserMsgTwoDefault.Text = string.Format("({0})", _DefaultChgBarUsrMsg2);
// Get the default RO Graphic file extension
_DefaultROGraficFileExtension = _FolderConfig.Graphics_defaultext;
// if no graphic file extension was saved, use Tif
if (_DefaultROGraficFileExtension.Equals(""))
{
ppCmbxGrphFileExt.SelectedIndex = 5;
_DefaultROGraficFileExtension = ppCmbxGrphFileExt.Text;
}
SetupDefault(_DefaultROGraficFileExtension, ppLblGrphFileExtDefault, ppCmbxGrphFileExt);
// Get the default Watermark
_DefaultWatermark = _FolderConfig.Print_Watermark.ToString();
SetupDefault(EnumDescConverter.GetEnumDescription(_FolderConfig.Print_Watermark), ppLblWatermarkDefault, ppCmbxWatermark);
// Get the default Format Columns
_DefaultFormatColumns = _FolderConfig.Format_Columns.ToString();
SetupDefault(EnumDescConverter.GetEnumDescription(_FolderConfig.Format_Columns), ppLblStpEditorColsDefault, ppCmbxStpEditorCols);
_FolderConfig.ParentLookup = false;
}
private AnnotationTypeInfoList myAnnotationTypeInfoList = null;
private LocalAnnotationTypeInfoList myLocalAnnotationTypeInfoList = null;
private StageInfoList myStageInfoList = null;
private LocalStageInfoList myLocalStageInfoList = null;
private void frmFolderProperties_Load(object sender, EventArgs e)
{
_Initializing = true;
imageCodecInfoBindingSource.DataSource = ImageCodecInfo.GetImageDecoders();
folderConfigBindingSource.DataSource = _FolderConfig;
ppCmbxFormat.DataSource = null;
ppCmbxFormat.DisplayMember = "FullName";
ppCmbxFormat.ValueMember = "FullName";
ppCmbxFormat.DataSource = FormatUtility.GetFilteredFormatList(FormatInfoList.SortedFormatInfoList);
if (_FolderConfig.FormatSelection != null)
{
ppCmbxFormat.SelectedValue = _FolderConfig.FormatSelection;
ppBtnDefaultFmt.Visible = true; //bug fix B2016-102 make the default button visable if other the the default format is being used
}
else
ppCmbxFormat.SelectedIndex = -1; // default format
// Get the saved settings for this user
//
// This setting tells us if we should display the default values on this property page
ppCbShwDefSettings.Checked = !_IsVepromsNode && Settings.Default["ShowDefaultFolderProp"] != null && Settings.Default.ShowDefaultFolderProp;
// Get the User's property page style "PropPageStyle" (this is a system wide user setting)
// 1 - Button Dialog (default)
// 2 - Tab Dialog
if ((int)Settings.Default["PropPageStyle"] == (int)PropPgStyle.Tab)
{
tcFolder.TabsVisible = true;
panButtons.Visible = false;
Width -= panButtons.Width;
}
// Get the default values for the property page information
FindDefaultValues();
// Setup as to which "tabs" to display on the property page
// - the first (top) tree node shows different "tabs" than the
// other folder type of tree nodes
if (_IsVepromsNode) //(!_FolderConfig.HasParent)
{
// if we are at the top node of the tree, remove the Folder Property page tabs
// that do not pertain to this level (top of tree)
tcFolder.Tabs.Remove(tiOutputSettings);
tcFolder.Tabs.Remove(tiEditSettings);
// for format settings, include it if the top node's format is NOT the base, i.e. formatid != 1.
// this is done so that PROMS EXPRESS folder specific info can be displayed/used for the top
// node of the tree. The formatid for the top folder for PROMS EXPRESS databases must be
// set manually to the PROMS EXPRESS format.
if (_FolderConfig.MyFolder.MyFormat.FormatID == 1)
{
tcFolder.Tabs.Remove(tiFmtSettings);
btnFormatSettings.Visible = false;
}
btnOutputSettings.Visible = false;
btnEdSettings.Visible = false;
ppLblDefSettingsInfo.Visible = false;
ppCbShwDefSettings.Visible = false; // hide check box for showing default values for top node
ppCbShwDefSettings.Checked = false;
// FOR NOW, don't show Start Message tab
// TODO: later on, not needed for initial release.
tcFolder.Tabs.Remove(tiStMsg);
btnStMsg.Visible = false;
// Also, for the referenced object tab, the top node (veproms system level) should
// allow setting of the default graphics file extension. No other folder level allows this.
ppCmbxGrphFileExt.Visible = true;
ppLblGrphFileExtDefault.Visible = false; // true;
lblGrphFileExt.Visible = true;
ppBtnDefaultGrphFileExt.Visible = false; // true;
myStageInfoList = StageInfoList.Get();
lbRevisionStages.DataSource = myLocalStageInfoList = new LocalStageInfoList(myStageInfoList);
lbRevisionStages.DisplayMember = "Name";
myAnnotationTypeInfoList = AnnotationTypeInfoList.Get();
lbAnnotationTypes.DataSource = myLocalAnnotationTypeInfoList = new LocalAnnotationTypeInfoList(myAnnotationTypeInfoList);
lbAnnotationTypes.DisplayMember = "Name";
// make visible the text box to allow the user to change the Procedure Panel's heading (title) on the panel bar
ppRTxtHeading.Visible = true;
lblHeading.Visible = true;
tbSqlTimeout.Text = _FolderConfig.Timeout;
tbSqlTimeout.Visible = true;
lblSqlTimeout.Visible = true;
lblSqlTimeoutDefault.Visible = true;
cbIncTranCvtPerm.Visible = true;
cbIncTranCvtPerm.Checked = _FolderConfig.General_IncTranCvtPerm; // C2020-033: defaults to does not have permission
lblIncTrans.Visible = true;
}
else
{
// don't show Start Message or ref obj tab if not at top level
tcFolder.Tabs.Remove(tiStMsg);
tcFolder.Tabs.Remove(tiRefObj);
tcFolder.Tabs.Remove(tiAnnoTypes);
tcFolder.Tabs.Remove(tiRevisionStages);
btnStMsg.Visible = false;
btnRefObjs.Visible = false;
btnAnnoTypes.Visible = false;
btnRevisionStages.Visible = false;
cbIncTranCvtPerm.Visible = false;
lblIncTrans.Visible = false;
// Assign the data sources to the combo boxes
ppCmbxChangeBarType.DataSource = EnumDetail<PrintChangeBar>.Details();
ppCmbxChangeBarType.DisplayMember = "Name";
ppCmbxChangeBarType.ValueMember = "EValue";
ppCmbxChangeBarType.SelectedValue = -1;
ppCmbxChgBarPos.DataSource = EnumDetail<PrintChangeBarLoc>.Details();
ppCmbxChgBarPos.DisplayMember = "Name";
ppCmbxChgBarPos.ValueMember = "EValue";
ppCmbxChgBarPos.SelectedValue = -1;
ppCmbxChgBarTxtType.DataSource = EnumDetail<PrintChangeBarText>.Details();
ppCmbxChgBarTxtType.DisplayMember = "Name";
ppCmbxChgBarTxtType.ValueMember = "EValue";
ppCmbxChgBarTxtType.SelectedValue = -1;
ppCmbxWatermark.DataSource = EnumDetail<PrintWatermark>.Details();
ppCmbxWatermark.DisplayMember = "Name";
ppCmbxWatermark.ValueMember = "EValue";
ppCmbxWatermark.SelectedValue = -1;
ppCmbxStpEditorCols.DataSource = EnumDetail<FormatColumns>.Details();
ppCmbxStpEditorCols.DisplayMember = "Name";
ppCmbxStpEditorCols.ValueMember = "EValue";
ppCmbxStpEditorCols.SelectedValue = -1;
ppCbShwDefSettings.Visible = true; // display check box for showing default values
// Also, for the referenced object tab, the top node (veproms system level) should
// allow setting of the default graphics file extension. No other folder level allows this.
ppCmbxGrphFileExt.Visible = false;
ppLblGrphFileExtDefault.Visible = false;
lblGrphFileExt.Visible = false;
// HIDE the text box that allows the user to change the Procedure Panel's heading (title) on the panel bar
ppRTxtHeading.Visible = false;
lblHeading.Visible = false;
tbSqlTimeout.Visible = false;
lblSqlTimeout.Visible = false;
lblSqlTimeoutDefault.Visible = false;
}
_Initializing = false;
}
private void ppBtnCancel_Click(object sender, EventArgs e)
{
folderConfigBindingSource.CancelEdit();
DialogResult = DialogResult.Cancel;
Close();
}
private void ppBtnCancel_MouseEnter(object sender, EventArgs e) => _ValidateTextBox = false;
private void ppBtnCancel_MouseLeave(object sender, EventArgs e) => _ValidateTextBox = true;
private void ppBtnOK_Click(object sender, EventArgs e)
{
if (btnRevisoinStageUndo.Enabled)
btnRevisoinStageUndo.PerformClick();
if (btnAnnoTypeUndo.Enabled)
btnAnnoTypeUndo.PerformClick();
folderConfigBindingSource.EndEdit();
// Save Default settings for User
//
// Save whether we should display the default values on this property page
Settings.Default.ShowDefaultFolderProp = ppCbShwDefSettings.Checked;
Settings.Default.Save();
_FolderConfig.Timeout = tbSqlTimeout.Text;
// C2020-033: Handling of external transitions - let admin decide who can convert transitions to text
if (_FolderConfig.MyFolder.FolderID == 1)_FolderConfig.General_IncTranCvtPerm = cbIncTranCvtPerm.Checked; // only do top folder
_FolderConfig.MyFolder.Config = _FolderConfig.ToString();
_FolderConfig.MyFolder.Save().Dispose();
SaveApprStages();
SaveAnnotationTypes();
DialogResult = DialogResult.OK;
Close();
}
private void SaveApprStages()
{
if (myStageInfoList == null) return;
foreach (StageInfo si in myStageInfoList)// spin through old list (database)
{
LocalStageInfo found = null;
foreach (LocalStageInfo lsi in myLocalStageInfoList)// find match in new list
if (si.StageID == lsi.ID)
found = lsi;
if (found != null)
{
if (found.Name != si.Name || found.IsApproved != si.IsApproved)// if different then save changes
{
using (Stage stg = si.Get())
{
stg.Name = found.Name;
stg.IsApproved = found.IsApproved;
stg.UserID = Volian.Base.Library.VlnSettings.UserID;
stg.DTS = DateTime.Now;
stg.Save();
}
}
myLocalStageInfoList.Remove(found);
}
else// if missing then delete
{
using (Stage stg = si.Get())
{
stg.Delete();
stg.Save();
}
}
}
// Add remaining as new
foreach (LocalStageInfo lsi in myLocalStageInfoList)
{
using (Stage stg = Stage.MakeStage(lsi.Name, "", lsi.IsApproved, DateTime.Now, Volian.Base.Library.VlnSettings.UserID))
stg.Save();
}
StageInfoList.Refresh();
}
private void SaveAnnotationTypes()
{
if (myAnnotationTypeInfoList == null) return;
foreach (AnnotationTypeInfo ai in myAnnotationTypeInfoList) //spin through old list (database)
{
LocalAnnotationTypeInfo found = null;
AnnotationTypeConfig oldAtc = new AnnotationTypeConfig(ai.Config);
foreach(LocalAnnotationTypeInfo lai in myLocalAnnotationTypeInfoList) // find match in new list
if (ai.TypeID == lai.TypeID )
found = lai;
if (found != null)
{
if (found.Name != ai.Name || oldAtc.PrintableText_XLocation != found.PrntLoc)// if different then save changes
{
using (AnnotationType at = ai.Get())
{
at.Name = found.Name;
at.UserID = Volian.Base.Library.VlnSettings.UserID;
AnnotationTypeConfig newAtc = new AnnotationTypeConfig
{
PrintableText_XLocation = found.PrntLoc
};
at.Config = newAtc.ToString();
at.DTS = DateTime.Now;
at.Save();
}
}
myLocalAnnotationTypeInfoList.Remove(found);
}
else// if missing then delete
{
using (AnnotationType at = ai.Get())
{
at.Delete();
at.Save();
}
}
}
foreach (LocalAnnotationTypeInfo lai in myLocalAnnotationTypeInfoList)
{
AnnotationTypeConfig newAtc = new AnnotationTypeConfig
{
PrintableText_XLocation = lai.PrntLoc
};
using (AnnotationType at = AnnotationType.New(lai.Name, newAtc.ToString(), DateTime.Now, Volian.Base.Library.VlnSettings.UserID))
at.Save();
}
AnnotationTypeInfoList.Refresh();
}
#region General tab
/// <summary>
/// This is the General button used on the button interface design
/// </summary>
/// <param name="sender">object</param>
/// <param name="e">EventArgs</param>
private void btnGeneral_Click(object sender, EventArgs e) => ProcessButtonClick(tiGeneral, btnGeneral);
private void ppRTxtName_Leave(object sender, EventArgs e)
{
if (ppRTxtName.Text == null || ppRTxtName.Text == "")
{
MessageBox.Show("Cannot have a blank Name.");
return;
}
if (ppRTxtName.Text != _FolderConfig.Name)
{
// need a folderinfo to check for unique names...
bool isunique = _FolderConfig.CheckUniqueName(ppRTxtName.Text);
if (!isunique)
{
MessageBox.Show($"The Name '{ppRTxtName.Text}' that was entered is not a unique folder name");
ppRTxtName.Text = _FolderConfig.Name;
}
}
}
#endregion
#region Referenced Objects tab
/// <summary>
/// This is the Referenced Objects button used on the button interface design
/// </summary>
/// <param name="sender">object</param>
/// <param name="e">EventArgs</param>
private void btnRefObjs_Click(object sender, EventArgs e) => ProcessButtonClick(tiRefObj, btnRefObjs);
/// <summary>
/// Selection in Graphic File Extension combo box changed.
/// </summary>
/// <param name="sender">object</param>
/// <param name="e">EventArgs</param>
private void ppCmbxGrphFileExt_SelectedValueChanged(object sender, EventArgs e)
{
if (!_Initializing)
ProcessCmbxSelectedValueChange(ppCmbxGrphFileExt, _DefaultROGraficFileExtension, ppBtnDefaultGrphFileExt, ppLblGrphFileExtDefault);
}
/// <summary>
/// Reset to the parent setting.
/// Find the parent setting and assign it to _FolderConfig.Graphics_defaultext.
/// This will force the database to be updated.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ppBtnDefaultGrfExt_Click(object sender, EventArgs e)
{
// Compare parent setting with current setting
if (_DefaultROGraficFileExtension.Equals(_FolderConfig.Graphics_defaultext))
_FolderConfig.Graphics_defaultext = _DefaultROGraficFileExtension;// this will force a database update (write)
ppCmbxGrphFileExt.SelectedIndex = -1; //reset to the default Graphic File Extension setting
}
#endregion
#region Output Settings tab
/// <summary>
/// This is the Output Settings button used on the button interface design
/// </summary>
/// <param name="sender">object</param>
/// <param name="e">EventArgs</param>
private void btnOutputSettings_Click(object sender, EventArgs e) => ProcessButtonClick(tiOutputSettings, btnOutputSettings);
/// <summary>
/// Selection in Watermark combo box changed.
/// </summary>
/// <param name="sender">object</param>
/// <param name="e">EventArgs</param>
private void ppCmbxWatermark_SelectedValueChanged(object sender, EventArgs e)
{
if (!_Initializing)
{
PrintWatermark wtr = (PrintWatermark)Enum.Parse(typeof(PrintWatermark), _DefaultWatermark);
ProcessCmbxSelectionEnumChanged(ppCmbxWatermark, wtr, ppBtnDefWatermark, ppLblWatermarkDefault);
}
}
/// <summary>
/// Reset to the parent setting.
/// Find the parent setting and assign it to _FolderConfig.Print_Watermark.
/// This will force the database to be updated.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ppBtnDefWatermark_Click(object sender, EventArgs e)
{
// Get the parent setting
PrintWatermark wtr = (PrintWatermark)Enum.Parse(typeof(PrintWatermark), _DefaultWatermark);
// Compare parent setting with current setting
if (wtr != _FolderConfig.Print_Watermark)
_FolderConfig.Print_Watermark = wtr; // this will force a database update (write)
ppCmbxWatermark.SelectedIndex = -1; //reset to the default Watermark setting
}
#endregion
#region Startup Message tab
/// <summary>
/// This is the Startup Message button used on the button interface design
/// </summary>
/// <param name="sender">object</param>
/// <param name="e">EventArgs</param>
private void btnStMsg_Click(object sender, EventArgs e) => ProcessButtonClick(tiStMsg, btnStMsg);
#endregion
#region Format Settings tab
/// <summary>
/// This is the Format Settings button used on the button interface design
/// </summary>
/// <param name="sender">object</param>
/// <param name="e">EventArgs</param>
private void btnFormatSettings_Click(object sender, EventArgs e)
{
ProcessButtonClick(tiFmtSettings, btnFormatSettings);
// added for code change C2017-004 - select default format in dropdown list
if (_InitialIndex < -1) _InitialIndex = ppCmbxFormat.SelectedIndex; // save the current format selection (happens here when current section is set to the default format)
}
private void ppBtnDefaultFmt_Click(object sender, EventArgs e) => ppCmbxFormat.SelectedIndex = -1; //reset to the default Format setting
/// <summary>
/// Enable or disable the user specified change bar options base on the type
/// of change bar selected.
/// </summary>
private void setEnabledUserSpecifiedChgBarCombos(PrintChangeBar pcb)
{
ppGpbxUserSpecCB.Enabled = (ppCmbxChangeBarType.SelectedValue != null &&
ppCmbxChangeBarType.SelectedValue.Equals(PrintChangeBar.WithUserSpecified)) ||
(ppCmbxChangeBarType.SelectedValue == null && pcb.Equals(PrintChangeBar.WithUserSpecified));
}
/// <summary>
/// Selection in Change Bar combo box changed.
/// </summary>
/// <param name="sender">object</param>
/// <param name="e">EventArgs</param>
private void ppCmbxChangeBarType_SelectedValueChanged(object sender, EventArgs e)
{
if (!_Initializing)
{
PrintChangeBar pcb = (PrintChangeBar)Enum.Parse(typeof(PrintChangeBar), _DefaultChgBarType);
ProcessCmbxSelectionEnumChanged(ppCmbxChangeBarType, pcb, ppBtnDefaultChgBar, ppLblChangeBarTypeDefault);
setEnabledUserSpecifiedChgBarCombos(pcb);
}
}
/// <summary>
/// Reset to the parent setting.
/// Find the parent setting and assign it to _FolderConfig.PrintChangeBar.
/// This will force the database to be updated.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ppBtnDefaultChgBar_Click(object sender, EventArgs e)
{
// Get the parent setting
PrintChangeBar pcb = (PrintChangeBar)Enum.Parse(typeof(PrintChangeBar), _DefaultChgBarType);
// Compare parent setting with current setting
if (pcb != _FolderConfig.Print_ChangeBar)
_FolderConfig.Print_ChangeBar = pcb; // this will force a database update (write)
ppCmbxChangeBarType.SelectedIndex = -1; //reset combo box to the default Change Bar setting
}
/// <summary>
/// Selection in Change Bar Position combo box changed.
/// </summary>
/// <param name="sender">object</param>
/// <param name="e">EventArgs</param>
private void ppCmbxChgBarPos_SelectedValueChanged(object sender, EventArgs e)
{
if (!_Initializing)
{
PrintChangeBarLoc cbl = (PrintChangeBarLoc)Enum.Parse(typeof(PrintChangeBarLoc), _DefaultChgBarLoc);
ProcessCmbxSelectionEnumChanged(ppCmbxChgBarPos, cbl, ppBtnDefaultCbPos, ppLblChgBarPosDefault);
}
}
/// <summary>
/// Reset to the parent setting.
/// Find the parent setting and assign it to _FolderConfig.Print_ChangeBarLoc.
/// This will force the database to be updated.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ppBtnDefaultCbPos_Click(object sender, EventArgs e)
{
// Get the parent setting
PrintChangeBarLoc cbl = (PrintChangeBarLoc)Enum.Parse(typeof(PrintChangeBarLoc), _DefaultChgBarLoc);
// Compare parent setting with current setting
if (cbl != _FolderConfig.Print_ChangeBarLoc)
_FolderConfig.Print_ChangeBarLoc = cbl; // this will force a database update (write)
ppCmbxChgBarPos.SelectedIndex = -1; //reset to the default Change Bar Position setting
}
/// <summary>
/// Selection in Change Bar Text Type combo box changed.
/// </summary>
/// <param name="sender">object</param>
/// <param name="e">EventArgs</param>
private void ppCmbxChgBarTxtType_SelectedValueChanged(object sender, EventArgs e)
{
if (!_Initializing)
{
PrintChangeBarText cbt = (PrintChangeBarText)Enum.Parse(typeof(PrintChangeBarText), _DefaultChgBarText);
ProcessCmbxSelectionEnumChanged(ppCmbxChgBarTxtType, cbt, ppBtnDefCbTxtTyp, ppLblChgBarTxtTypeDefault);
setEnabledUserSpecifiedChgBarText();
}
}
/// <summary>
/// Reset to the parent setting.
/// Find the parent setting and assign it to _FolderConfig.Print_ChangeBarText.
/// This will force the database to be updated.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ppBtnDefCbTxtTyp_Click(object sender, EventArgs e)
{
// Get the parent setting
PrintChangeBarText cbt = (PrintChangeBarText)Enum.Parse(typeof(PrintChangeBarText), _DefaultChgBarText);
// Compare parent setting with current setting
if (cbt != _FolderConfig.Print_ChangeBarText)
_FolderConfig.Print_ChangeBarText = cbt; // this will force a database update (write)
ppCmbxChgBarTxtType.SelectedIndex = -1; //reset to the default Change Bar Text Type setting
}
/// <summary>
/// Enable or disable the user specified change bar text based on the selected
/// change bar text type (selected in the user specific change bar grouping)
/// </summary>
private void setEnabledUserSpecifiedChgBarText()
{
// This string is used to check against our default setting to see if User Defined Changebar Text is active
string decUserDef = PrintChangeBarText.UserDef.ToString();
ppGpbxUserSpecTxt.Enabled = (ppCmbxChgBarTxtType.SelectedValue != null &&
ppCmbxChgBarTxtType.SelectedValue.Equals(PrintChangeBarText.UserDef)) ||
(ppCmbxChgBarTxtType.SelectedIndex == -1 && _DefaultChgBarText.Equals(decUserDef));
}
/// <summary>
/// Selection in Change Bar User Message One text changed.
/// </summary>
/// <param name="sender">object</param>
/// <param name="e">EventArgs</param>
private void ppTxbxChangeBarUserMsgOne_TextChanged(object sender, EventArgs e)
{
ppBtnDefCbTxt1.Visible = ((ppTxbxChangeBarUserMsgOne.Text != null) && !ppTxbxChangeBarUserMsgOne.Text.Equals(_DefaultChgBarUsrMsg1));
ppLblChgBarUserMsgOneDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefCbTxt1.Visible;
}
/// <summary>
/// Selection in Change Bar User Message Two text changed.
/// </summary>
/// <param name="sender">object</param>
/// <param name="e">EventArgs</param>
private void ppTxbxChangeBarUserMsgTwo_TextChanged(object sender, EventArgs e)
{
ppBtnDefCbTxt2.Visible = ((ppTxbxChgBarUserMsgTwo.Text != null) && !ppTxbxChgBarUserMsgTwo.Text.Equals(_DefaultChgBarUsrMsg2));
ppLblChgBarUserMsgTwoDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefCbTxt2.Visible;
}
#endregion
#region Editor Settings tab
/// <summary>
/// This is the Editor Settings button used on the button interface design
/// </summary>
/// <param name="sender">object</param>
/// <param name="e">EventArgs</param>
private void btnEdSettings_Click(object sender, EventArgs e) => ProcessButtonClick(tiEditSettings, btnEdSettings);
/// <summary>
/// Selection in Step Editor Columns combo box changed.
/// </summary>
/// <param name="sender">object</param>
/// <param name="e">EventArgs</param>
private void ppCmbxStpEditorCols_SelectedValueChanged(object sender, EventArgs e)
{
if (!_Initializing)
{
FormatColumns fcl = (FormatColumns)Enum.Parse(typeof(FormatColumns), _DefaultFormatColumns);
ProcessCmbxSelectionEnumChanged(ppCmbxStpEditorCols, fcl, ppBtnDefEdCols, ppLblStpEditorColsDefault);
}
}
/// <summary>
/// Reset to the parent setting.
/// Find the parent setting and assign it to _FolderConfig.Format_Columns.
/// This will force the database to be updated.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ppBtnDefEdCols_Click(object sender, EventArgs e)
{
// Get the parent setting
FormatColumns fcl = (FormatColumns)Enum.Parse(typeof(FormatColumns), _DefaultFormatColumns);
// Compare parent setting with current setting
if (fcl != _FolderConfig.Format_Columns)
_FolderConfig.Format_Columns = fcl; // this will force a database update (write)
ppCmbxStpEditorCols.SelectedIndex = -1; //reset to the default Step Editor Columns setting
}
#endregion
#region Generic functions used on this property page
/// <summary>
/// Set the watermark and default label
/// </summary>
/// <param name="defaultText">The default text</param>
/// <param name="lbl">Label that displays the current default when view defaults is set</param>
/// <param name="cmboEx">Combo box with a watermark property</param>
private static void SetupDefault(string defaultText, Label lbl, ComboBoxEx cmbo)
{
if (defaultText != null && !(defaultText.Equals("")))
{
string deftext = string.Format("{0}", defaultText);
lbl.Text = deftext;
cmbo.WatermarkText = deftext;
}
}
/// <summary>
/// Determines what labels (showing default values) are visable on the property pages
/// </summary>
private void defaultSettingsVisiblity()
{
ppLblDefSettingsInfo.Visible = ppCbShwDefSettings.Checked;
ppLblChgBarUserMsgOneDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefCbTxt1.Visible;
ppLblChgBarUserMsgTwoDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefCbTxt2.Visible;
ppLblStpEditorColsDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefEdCols.Visible;
ppLblGrphFileExtDefault.Visible = (ppCbShwDefSettings.Checked || _IsVepromsNode) && ppBtnDefaultGrphFileExt.Visible;
ppLblWatermarkDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefWatermark.Visible;
ppLblChgBarTxtTypeDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefCbTxtTyp.Visible;
ppLblFormatDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefaultFmt.Visible;
ppLblChangeBarTypeDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefaultChgBar.Visible;
ppLblChgBarPosDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefaultCbPos.Visible;
}
/// <summary>
/// Process a change in the combo box selection
/// </summary>
/// <param name="cmbx">Combo Box Name</param>
/// <param name="defstr">string containing default text</param>
/// <param name="button">button to reset to default value</param>
/// <param name="deflabel">label containing the default</param>
private void ProcessCmbxSelectedValueChange(ComboBoxEx cmbx, string defstr, ButtonX button, Label deflabel)
{
if ((cmbx.SelectedIndex != -1) && defstr != null && defstr.Equals(cmbx.SelectedValue))
{
button.Focus();
button.PerformClick();
}
button.Visible = (cmbx.SelectedValue != null);//(!_FolderConfig.Name.Equals("VEPROMS")) && (cmbx.SelectedValue != null);
deflabel.Visible = (ppCbShwDefSettings.Checked || _IsVepromsNode) && button.Visible;
}
/// <summary>
/// Process a change in the enum combo box selection
/// </summary>
/// <param name="cmbx">Combo Box Name</param>
/// <param name="defstr">the default enum value</param>
/// <param name="button">button to reset to default value</param>
/// <param name="deflabel">label containing the default</param>
private void ProcessCmbxSelectionEnumChanged(ComboBoxEx cmbx, object enumval, ButtonX button, Label deflabel)
{
if ((cmbx.SelectedIndex != -1) &&
cmbx.SelectedValue.Equals(enumval))
{
_Initializing = true;
button.Visible = true;
button.Focus();
button.PerformClick();
cmbx.SelectedIndex = -1; // This will hide the Default button
_Initializing = false;
}
button.Visible = (!_IsVepromsNode && (cmbx.SelectedValue != null)&&(cmbx.SelectedIndex >= 0));
deflabel.Visible = ppCbShwDefSettings.Checked && button.Visible;
}
/// <summary>
/// Select the corresponding tab and set the button's state to checked
/// </summary>
/// <param name="tab">Property Page Tab</param>
/// <param name="button">Corresponding Property Page Button</param>
private void ProcessButtonClick(TabItem tab, ButtonX button)
{
ClearAllCheckedButtons();
tcFolder.SelectedTab = tab;
button.Checked = true;
}
/// <summary>
/// For the Button Interface property page style, when a button is selected (pressed),
/// it will remain in the checked state even when a different button is selected. Thus
/// we must clear the checked state of the buttons when a button is selected, then set
/// the newly selected button's state to checked.
/// </summary>
private void ClearAllCheckedButtons()
{
btnGeneral.Checked = false;
btnEdSettings.Checked = false;
btnFormatSettings.Checked = false;
btnOutputSettings.Checked = false;
btnRefObjs.Checked = false;
btnStMsg.Checked = false;
btnAnnoTypes.Checked = false;
btnRevisionStages.Checked = false;
}
/// <summary>
/// This is a generic Enter Event function for use with all of the property page tabs.
/// Found that the visiblity value of buttons is not recorded until the property page in which it resides is diplayed.
/// Thus we need to call defaultSettingVisiblity() to check and set visiblity states.
/// </summary>
/// <param name="sender"> type object</param>
/// <param name="e">type EventArgs</param>
private void tabpage_Enter(object sender, EventArgs e)
{
// Show or hide the labels containing the default values
defaultSettingsVisiblity();
}
#endregion
private void ppBtnDefCbTxt1_Click(object sender, EventArgs e)
{
// Compare default setting with current setting
// Reset with the default and hide the default button and label
if (_DefaultChgBarUsrMsg1 != _FolderConfig.Print_UserCBMess1)
{
_FolderConfig.Print_UserCBMess1 = _DefaultChgBarUsrMsg1; // this will force a database update (write)
ppLblChgBarUserMsgOneDefault.Visible = false;
ppBtnDefCbTxt1.Visible = false;
}
}
private void ppBtnDefCbTxt2_Click(object sender, EventArgs e)
{
// Compare default setting with current setting
// Reset with the default and hide the default button and label
if (_DefaultChgBarUsrMsg2 != _FolderConfig.Print_UserCBMess2)
{
_FolderConfig.Print_UserCBMess2 = _DefaultChgBarUsrMsg2; // this will force a database update (write)
ppLblChgBarUserMsgTwoDefault.Visible = false;
ppBtnDefCbTxt2.Visible = false;
}
}
private void frmFolderProperties_Shown(object sender, EventArgs e) => ppRTxtName.Focus();
private void btnAnnoTypes_Click(object sender, EventArgs e) => ProcessButtonClick(tiAnnoTypes, btnAnnoTypes);
private void btnApprvStages_Click(object sender, EventArgs e) => ProcessButtonClick(tiRevisionStages, btnRevisionStages);
#region Annotation Types
private void lbAnnotationTypes_SelectedIndexChanged(object sender, System.EventArgs e)
{
if (btnAnnoTypeUndo.Enabled)
{
btnAnnoTypeUndo.Enabled = false;
btnAnnoTypeApply.Enabled = false;
myLocalAnnotationTypeInfoList[_LastAnnotationTypeInfoIndex].Name = tbxAnnotationDescription.Text;
myLocalAnnotationTypeInfoList[_LastAnnotationTypeInfoIndex].PrntLoc = int.Parse(txbPrntLoc.Text == "" ? "0" : txbPrntLoc.Text);
RefreshAnnotationTypeList();
}
LoadLocalAnnotationTypeInfo();
}
private int _LastAnnotationTypeInfoIndex = 0;
private void LoadLocalAnnotationTypeInfo()
{
btnAnnoTypeUndo.Enabled = false;
btnAnnoTypeApply.Enabled = false;
_LastAnnotationTypeInfoIndex = lbAnnotationTypes.SelectedIndex;
if (!(lbAnnotationTypes.SelectedValue is LocalAnnotationTypeInfo ai))
{
tbxAnnotationDescription.Text = "";
tbxAnnotationDescription.Enabled = false;
btnAnnoTypeUndo.Enabled = false;
btnAnnoTypeApply.Enabled = false;
btnAnnoTypeNew.Enabled = true;
btnAnnoTypeRemove.Enabled = false;
txbxRemoveMsg.Visible = false;
lblAnnoTypeCntMessage.Visible = false;
txbPrntLoc.Visible = false;
lblPrintTxt.Visible = false;
return;
}
tbxAnnotationDescription.Enabled = true;
tbxAnnotationDescription.Text = ai.Name;
btnAnnoTypeUndo.Enabled = false;
btnAnnoTypeApply.Enabled = false;
txbPrntLoc.Visible = true;
lblPrintTxt.Visible = true;
txbPrntLoc.Text = ai.PrntLoc != 0 ? ai.PrntLoc.ToString() : "";
if (ai.AnnotationTypeAnnotationCount == 0)
{
btnAnnoTypeRemove.Enabled = true;
txbxRemoveMsg.Visible = false;
lblAnnoTypeCntMessage.Visible = false;
}
else
{
string countMsg = $"{ai.Name} is used in {ai.AnnotationTypeAnnotationCount} places";
btnAnnoTypeRemove.Enabled = false;
lblAnnoTypeCntMessage.Text = countMsg;
txbxRemoveMsg.Visible = true;
lblAnnoTypeCntMessage.Visible = true;
}
if (lbAnnotationTypes.SelectedIndex >= 0)
{
tbxAnnotationDescription.Focus();
tbxAnnotationDescription.SelectAll();
}
}
private void tbxAnnotationDescription_TextChanged(object sender, EventArgs e)
{
btnAnnoTypeUndo.Enabled = true;
btnAnnoTypeApply.Enabled = true;
}
private void tbxAnnotationPrntLoc_TextChanged(object sender, EventArgs e)
{
btnAnnoTypeUndo.Enabled = true;
btnAnnoTypeApply.Enabled = true;
}
private void tiAnnoTypes_Click(object sender, EventArgs e)
{
lbAnnotationTypes.SelectedIndex = -1;
lbAnnotationTypes.Invalidate();
}
private void RefreshAnnotationTypeList()
{
lbAnnotationTypes.DataSource = null;
lbAnnotationTypes.DataSource = myLocalAnnotationTypeInfoList;//myAnnotationTypeInfoList = AnnotationTypeInfoList.Get();
lbAnnotationTypes.DisplayMember = "Name";
}
private void btnAnnoTypeNew_Click(object sender, EventArgs e)
{
if (btnAnnoTypeUndo.Enabled) // save the current changes
{
btnAnnoTypeUndo.Enabled = false;
btnAnnoTypeApply.Enabled = false;
myLocalAnnotationTypeInfoList[_LastAnnotationTypeInfoIndex].Name = tbxAnnotationDescription.Text;
RefreshAnnotationTypeList();
}
LocalAnnotationTypeInfo lati = new LocalAnnotationTypeInfo("New Annotation Type");
lati.Name = string.Format("{0} {1}", lati.Name, lati.TypeID);
myLocalAnnotationTypeInfoList.Add(lati);
btnAnnoTypeUndo.Enabled = false;
btnAnnoTypeApply.Enabled = false;
RefreshAnnotationTypeList();
btnAnnoTypeRemove.Enabled = true;
lbAnnotationTypes.SelectedIndex = lbAnnotationTypes.Items.Count - 1;
_LastAnnotationTypeInfoIndex = lbAnnotationTypes.SelectedIndex;
}
private void btnAnnoTypeUndo_Click(object sender, EventArgs e)
{
tbxAnnotationDescription.Undo();
txbPrntLoc.Undo();
btnAnnoTypeUndo.Enabled = false;
btnAnnoTypeApply.Enabled = false;
}
private void btnAnnoTypeRemove_Click(object sender, EventArgs e)
{
LocalAnnotationTypeInfo ai = lbAnnotationTypes.SelectedValue as LocalAnnotationTypeInfo;
myLocalAnnotationTypeInfoList.Remove(ai);
int saveIdx = lbAnnotationTypes.SelectedIndex;
btnAnnoTypeRemove.Enabled = false;
btnAnnoTypeUndo.Enabled = false;
btnAnnoTypeApply.Enabled = false;
RefreshAnnotationTypeList();
if (saveIdx > lbAnnotationTypes.Items.Count - 1)
lbAnnotationTypes.SelectedIndex = saveIdx - 1;
else
{
lbAnnotationTypes.SelectedIndex = saveIdx;
LoadLocalAnnotationTypeInfo();
}
}
private void txbAnnotationPrntLoc_Validating(object sender, CancelEventArgs e)
{
if (_ValidateTextBox)
{
string newloc = txbPrntLoc.Text;
if (newloc == "") newloc = "0";
try
{
int newloci = int.Parse(newloc);
}
catch (Exception)
{
MessageBox.Show("Invalid Print Location, must be an integer.", "Print Text Location");
e.Cancel = true;
}
}
}
private void tbxAnnotationDescription_Validating(object sender, CancelEventArgs e)
{
if (_ValidateTextBox)
{
string newname = tbxAnnotationDescription.Text;
LocalAnnotationTypeInfo ai = lbAnnotationTypes.SelectedValue as LocalAnnotationTypeInfo;
if (newname.Trim().Length == 0)
{
MessageBox.Show("An Annotation Type Name Cannot Be Blank", "Annotation Type");
e.Cancel = true;
}
else
{
foreach (LocalAnnotationTypeInfo lati in myLocalAnnotationTypeInfoList)
if (lati.Name == newname && lati.TypeID != ai.TypeID)
{
MessageBox.Show("An Annotation Type of this Name already exists.", "Annotation Type");
e.Cancel = true;
}
}
}
}
private void btnAnnoTypeRemove_MouseEnter(object sender, EventArgs e) => _ValidateTextBox = false;
private void btnAnnoTypeRemove_MouseLeave(object sender, EventArgs e) => _ValidateTextBox = true;
#endregion
#region Revision Stages
private void tbRevisionStage_TextChanged(object sender, EventArgs e)
{
btnRevisoinStageUndo.Enabled = true;
btnRevisionStageApply.Enabled = true;
}
private void btnRevisionStageNew_Click(object sender, EventArgs e)
{
LocalStageInfo lsi = new LocalStageInfo("New Stage", 0);
lsi.Name = $"{lsi.Name} {lsi.ID}";
myLocalStageInfoList.Add(lsi);
btnRevisoinStageUndo.Enabled = false;
btnRevisionStageApply.Enabled = false;
RefreshRevisionStagesList();
btnRevisionStageRemove.Enabled = true;
lbRevisionStages.SelectedIndex = lbRevisionStages.Items.Count - 1;
}
private void RefreshRevisionStagesList()
{
lbRevisionStages.DataSource = null;
lbRevisionStages.DataSource = myLocalStageInfoList;
lbRevisionStages.DisplayMember = "Name";
}
private void btnRevisionStageRemove_Click(object sender, EventArgs e)
{
LocalStageInfo si = lbRevisionStages.SelectedValue as LocalStageInfo;
myLocalStageInfoList.Remove(si);
int savIdx = lbRevisionStages.SelectedIndex;
btnRevisionStageRemove.Enabled = false;
btnRevisoinStageUndo.Enabled = false;
btnRevisionStageApply.Enabled = false;
RefreshRevisionStagesList();
if (savIdx > lbRevisionStages.Items.Count - 1)
lbRevisionStages.SelectedIndex = savIdx - 1;
else
{
lbRevisionStages.SelectedIndex = savIdx;
LoadLocalStageInfo();
}
}
private void btnRevisionStageUndo_Click(object sender, EventArgs e)
{
tbRevisionStage.Undo();
btnRevisoinStageUndo.Enabled = false;
btnRevisionStageApply.Enabled = false;
LocalStageInfo si = lbRevisionStages.SelectedValue as LocalStageInfo;
rbApprovalStage.Checked = (si.IsApproved > 0);
rbWorkflowStage.Checked = (si.IsApproved == 0);
}
private void lbRevisionStages_SelectedIndexChanged(object sender, EventArgs e)
{
if (btnRevisoinStageUndo.Enabled)
{
btnRevisoinStageUndo.Enabled = false;
btnRevisionStageApply.Enabled = false;
myLocalStageInfoList[_LastStageInfoIndex].Name = tbRevisionStage.Text;
myLocalStageInfoList[_LastStageInfoIndex].IsApproved = rbApprovalStage.Checked ? 1 : 0;
RefreshRevisionStagesList();
}
LoadLocalStageInfo();
}
private int _LastStageInfoIndex = -1;
private void LoadLocalStageInfo()
{
btnRevisoinStageUndo.Enabled = false;
btnRevisionStageApply.Enabled = false;
_LastStageInfoIndex = lbRevisionStages.SelectedIndex;
if (!(lbRevisionStages.SelectedValue is LocalStageInfo si))
{
tbRevisionStage.Text = "";
tbRevisionStage.Enabled = false;
btnRevisoinStageUndo.Enabled = false;
btnRevisionStageApply.Enabled = false;
btnRevisionStageNew.Enabled = true;
btnRevisionStageRemove.Enabled = false;
return;
}
tbRevisionStage.Enabled = true;
tbRevisionStage.Text = si.Name;
if (si.IsApproved > 0)
rbApprovalStage.Checked = true;
else
rbWorkflowStage.Checked = true;
btnRevisoinStageUndo.Enabled = false;
btnRevisionStageApply.Enabled = false;
btnRevisionStageRemove.Enabled = true;
if (lbRevisionStages.SelectedIndex >= 0)
{
tbRevisionStage.Focus();
tbRevisionStage.SelectAll();
}
}
private void tiRevisionStages_Click(object sender, EventArgs e)
{
lbRevisionStages.SelectedIndex = -1;
lbRevisionStages.Invalidate();
}
private void rbWorkflowStage_CheckedChanged(object sender, EventArgs e)
{
btnRevisoinStageUndo.Enabled = true;
btnRevisionStageApply.Enabled = true;
}
private void rbApproveStage_CheckedChanged(object sender, EventArgs e)
{
btnRevisoinStageUndo.Enabled = true;
btnRevisionStageApply.Enabled = true;
}
private void tbRevisionStage_Validating(object sender, CancelEventArgs e)
{
if (_ValidateTextBox)
{
string newname = tbRevisionStage.Text;
LocalStageInfo si = lbRevisionStages.SelectedValue as LocalStageInfo;
if (newname.Trim().Length == 0)
{
MessageBox.Show("The Revision Stage Name Cannot Be Blank", "Revision Stage");
e.Cancel = true;
}
else
{
foreach (LocalStageInfo lsi in myLocalStageInfoList)
if (lsi.Name == newname && lsi.ID != si.ID)
{
MessageBox.Show("A Revision Stage of this Name already exists.", "Revision Stage");
e.Cancel = true;
}
}
}
}
private void btnRevisionStageRemove_MouseEnter(object sender, EventArgs e) => _ValidateTextBox = false;
private void btnRevisionStageRemove_MouseLeave(object sender, EventArgs e) => _ValidateTextBox = true;
private void rbReviseStage_MouseEnter(object sender, EventArgs e) => _ValidateTextBox = false;
private void rbReviseStage_MouseLeave(object sender, EventArgs e) => _ValidateTextBox = true;
private void rbApproveStage_MouseEnter(object sender, EventArgs e) => _ValidateTextBox = false;
private void rbApproveStage_MouseLeave(object sender, EventArgs e) => _ValidateTextBox = true;
#endregion
private void btnRevisionStageApply_Click(object sender, EventArgs e)
{
//add code to apply changes
btnRevisoinStageUndo.Enabled = false;
btnRevisionStageApply.Enabled = false;
LocalStageInfo si = lbRevisionStages.SelectedValue as LocalStageInfo;
si.Name = tbRevisionStage.Text;
si.IsApproved = rbApprovalStage.Checked ? 1 : 0;
RefreshRevisionStagesList();
}
private void btnAnnoTypeApply_Click(object sender, EventArgs e)
{
//add code
btnAnnoTypeUndo.Enabled = false;
btnAnnoTypeApply.Enabled = false;
LocalAnnotationTypeInfo ati = lbAnnotationTypes.SelectedValue as LocalAnnotationTypeInfo;
ati.Name = tbxAnnotationDescription.Text;
txbPrntLoc.Visible = true;
lblPrintTxt.Visible = true;
ati.PrntLoc = int.Parse(txbPrntLoc.Text == "" ? "0" : txbPrntLoc.Text); // data was already checked
RefreshAnnotationTypeList();
}
private void ppCmbxFormat_DropDown(object sender, EventArgs e)
{
_Initializing = true;
// C2017-004 - if using the default format, position the dropdown to the default format
if (ppCmbxFormat.SelectedIndex == -1)
ppCmbxFormat.SelectedValue = _DefaultFormatName;
_Initializing = false;
}
private void ppCmbxFormat_DropDownClosed(object sender, EventArgs e)
{
// upon exit of the dropdown if the default format is selected - click the Default button
if ((string)(ppCmbxFormat.SelectedValue) == _DefaultFormatName)
{
ppBtnDefaultFmt.PerformClick();
btnFormatSettings.Focus();
}
}
// added as part of code change C2017-004. this also makes it consistent with section properties
int _InitialIndex = -2;
private void ppCmbxFormat_SelectedIndexChanged(object sender, EventArgs e)
{
if (_Initializing)
{
// determine if the default button and the default description text should visable
ppBtnDefaultFmt.Visible = !(ppCmbxFormat.SelectedValue == null || ppCmbxFormat.SelectedIndex == -1);
ppLblFormatDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefaultFmt.Visible;
return;
}
if (_InitialIndex < -1) _InitialIndex = ppCmbxFormat.SelectedIndex; // save the current format selection (happens here when current section format is not the default section)
if ((ppCmbxFormat.SelectedIndex != -1) && _DefaultFormatName != null && _DefaultFormatName.Equals(ppCmbxFormat.SelectedValue))
{
ppBtnDefaultFmt.Focus();
ppBtnDefaultFmt.PerformClick();
}
// determine if the default button and the default description text should visable
ppBtnDefaultFmt.Visible = !(ppCmbxFormat.SelectedValue == null || ppCmbxFormat.SelectedIndex == -1);
ppLblFormatDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefaultFmt.Visible;
}
}
public partial class LocalStageInfo
{
private static int _UniqueID = 0;
protected static int UniqueID => --_UniqueID;
private readonly int _MyUniqueID = UniqueID;
// Absolutely Unique ID - Editable
public int MyUniqueID => _MyUniqueID;
public int ID { get; set; }
public string Name { get; set; }
public int IsApproved { get; set; }
public int StageVersionCount { get; set; }
public LocalStageInfo(string name, int isApproved)
{
ID = MyUniqueID;
Name = name;
IsApproved = isApproved;
StageVersionCount = 0;
}
public LocalStageInfo(StageInfo si)
{
ID = si.StageID;
Name = si.Name;
IsApproved = si.IsApproved;
StageVersionCount = si.StageVersionCount;
}
public override string ToString() => $"{ID} {Name}";
}
public partial class LocalStageInfoList : List<LocalStageInfo>
{
public LocalStageInfoList(StageInfoList sil)
{
foreach (StageInfo si in sil)
Add(new LocalStageInfo(si));
}
}
public partial class LocalAnnotationTypeInfo
{
private static int _UniqueID = 0;
protected static int UniqueID
{ get { return --_UniqueID; } }
private readonly int _MyUniqueID = UniqueID;
// Absolutely Unique ID - Editable
public int MyUniqueID => _MyUniqueID;
public int TypeID { get; set; }
public string Name { get; set; }
public int PrntLoc { get; set; }
public int AnnotationTypeAnnotationCount { get; set; }
public LocalAnnotationTypeInfo(string name)
{
TypeID = MyUniqueID;
Name = name;
PrntLoc = 0;
AnnotationTypeAnnotationCount = 0;
}
public LocalAnnotationTypeInfo(AnnotationTypeInfo ai)
{
TypeID = ai.TypeID;
Name = ai.Name;
AnnotationTypeConfig atc = new AnnotationTypeConfig(ai);
if (atc != null)
{
PrntLoc = atc.PrintableText_XLocation;
}
AnnotationTypeAnnotationCount = ai.AnnotationTypeAnnotationCount;
}
public override string ToString() => $"{TypeID} {Name}";
}
public partial class LocalAnnotationTypeInfoList : List<LocalAnnotationTypeInfo>
{
public LocalAnnotationTypeInfoList(AnnotationTypeInfoList ail)
{
foreach (AnnotationTypeInfo ai in ail)
Add(new LocalAnnotationTypeInfo(ai));
}
}
}