using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using VEPROMS.CSLA.Library; using DevComponents; 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 FolderConfig _FolderConfig; private bool _IsVepromsNode = false; private 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 _DefaultImagePrefix = null; //private string _DefaultROPrefix = null; //private string _DefaultPagination = null; private string _DefaultWatermark = null; private bool _DefaultDisableDuplex = false; private string _DefaultFormatColumns = null; //private string _ROcolor; //private string _TransColor; //private string _EditBckgndColor; //private string _ViewBckgndColor; 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 this.Text = string.Format("{0} Properties",folderConfig.Name); 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"; } } /// /// 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. /// 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 Print Pagination //_DefaultPagination = _FolderConfig.Print_Pagination.ToString(); //SetupDefault(EnumDescConverter.GetEnumDescription(_FolderConfig.Print_Pagination), ppLblPaginationDefault, ppCmbxPagination); // 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 int? _cmbxformatOriginal = null; private void frmFolderProperties_Load(object sender, EventArgs e) { _Initializing = true; // populate the a list box of possible graphic file types // supported by .NET // foreach (ImageCodecInfo info in ImageCodecInfo.GetImageDecoders()) // { // string st = string.Format("{0} - ({1})", info.FormatDescription, info.FilenameExtension); // //string st = string.Format("{0}", info.FormatDescription); // comboBoxEx1.Items.Add(st); // } imageCodecInfoBindingSource.DataSource = ImageCodecInfo.GetImageDecoders(); //formatInfoListBindingSource.DataSource = FormatInfoList.Get(); folderConfigBindingSource.DataSource = _FolderConfig; ppCmbxFormat.DataSource = null; ppCmbxFormat.DisplayMember = "FullName"; ppCmbxFormat.ValueMember = "FullName"; ppCmbxFormat.DataSource = FormatUtility.GetFilteredFormatList(FormatInfoList.SortedFormatInfoList); if (_FolderConfig != null && _FolderConfig.MyFolder != null) _cmbxformatOriginal = _FolderConfig.MyFolder.FormatID; 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 = (Settings.Default["ShowDefaultFolderProp"] != null)? Settings.Default.ShowDefaultFolderProp : false; if (_IsVepromsNode || Settings.Default["ShowDefaultFolderProp"] == null) ppCbShwDefSettings.Checked = false; else ppCbShwDefSettings.Checked = 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; this.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) this.tcFolder.Tabs.Remove(tiOutputSettings); this.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) { this.tcFolder.Tabs.Remove(tiFmtSettings); this.btnFormatSettings.Visible = false; } //this.tcFolder.Tabs.Remove(tiAnnoTypes); // TEMPORARY - JSJ //this.tcFolder.Tabs.Remove(tiApprvStages);// TEMPORARY - JSJ //this.btnAnnoTypes.Visible = false; // TEMPORARY - JSJ //this.btnApprvStages.Visible = false; // TEMPORARY - JSJ this.btnOutputSettings.Visible = false; this.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. this.tcFolder.Tabs.Remove(tiStMsg); this.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; this.cbIncTranCvtPerm.Visible = true; this.cbIncTranCvtPerm.Checked = _FolderConfig.General_IncTranCvtPerm; // C2020-033: defaults to does not have permission this.lblIncTrans.Visible = true; } else { // don't show Start Message or ref obj tab if not at top level this.tcFolder.Tabs.Remove(tiStMsg); this.tcFolder.Tabs.Remove(tiRefObj); this.tcFolder.Tabs.Remove(tiAnnoTypes); this.tcFolder.Tabs.Remove(tiRevisionStages); this.btnStMsg.Visible = false; this.btnRefObjs.Visible = false; this.btnAnnoTypes.Visible = false; this.btnRevisionStages.Visible = false; this.cbIncTranCvtPerm.Visible = false; this.lblIncTrans.Visible = false; /* This color settings property page is currently no visible... * // this was coded for demo purposes... setup the text colors for the sample text // of the Step Editor Text Colors property _ROcolor = _FolderConfig.Color_ro; if (_ROcolor == string.Empty) _ROcolor = "Orange"; _EditBckgndColor = _FolderConfig.Color_editbackground; if (_EditBckgndColor == string.Empty) _EditBckgndColor = "LightGray"; _ViewBckgndColor = _FolderConfig.Default_BkColor.Name; if (_ViewBckgndColor == string.Empty) _ViewBckgndColor = "White"; _TransColor = _FolderConfig.Color_transition; if (_TransColor == string.Empty) _TransColor = "Orange"; SetupSampleTextBoxes(); * */ // Assign the data sources to the combo boxes ppCmbxChangeBarType.DataSource = EnumDetail.Details(); ppCmbxChangeBarType.DisplayMember = "Name"; ppCmbxChangeBarType.ValueMember = "EValue"; ppCmbxChangeBarType.SelectedValue = -1; ppCmbxChgBarPos.DataSource = EnumDetail.Details(); ppCmbxChgBarPos.DisplayMember = "Name"; ppCmbxChgBarPos.ValueMember = "EValue"; ppCmbxChgBarPos.SelectedValue = -1; ppCmbxChgBarTxtType.DataSource = EnumDetail.Details(); ppCmbxChgBarTxtType.DisplayMember = "Name"; ppCmbxChgBarTxtType.ValueMember = "EValue"; ppCmbxChgBarTxtType.SelectedValue = -1; //ppCmbxPagination.DataSource = EnumDetail.Details(); //ppCmbxPagination.DisplayMember = "Name"; //ppCmbxPagination.ValueMember = "EValue"; //ppCmbxPagination.SelectedValue = -1; ppCmbxWatermark.DataSource = EnumDetail.Details(); ppCmbxWatermark.DisplayMember = "Name"; ppCmbxWatermark.ValueMember = "EValue"; ppCmbxWatermark.SelectedValue = -1; ppCmbxStpEditorCols.DataSource = EnumDetail.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; this.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; this.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(); //if (btnAnnoTypeSave.Enabled) return; folderConfigBindingSource.EndEdit(); // if there is a change to the format, clean up any overridden formats that point to the selected item before saving the format change: if (_FolderConfig.MyFolder.FormatID != _cmbxformatOriginal) { // clean up & then refresh the configs using (ContentInfoList cil = ContentInfoList.ClearOverrideFormatsByFolder(_FolderConfig.MyFolder.FolderID, _cmbxformatOriginal, _FolderConfig.MyFolder.FormatID)) { foreach (ContentInfo ci in cil) { using (Content c = ci.Get()) { // first refresh configs because the ContentInfo.Refresh causes events to occur that refresh screen // and if configs aren't done first, the screen refresh, if based on config data, will not be correct. foreach (ItemInfo ii in ci.ContentItems) ii.RefreshConfig(); ContentInfo.Refresh(c); } } } } // 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; this.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(); newAtc.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(); newAtc.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 /// /// This is the General button used on the button interface design /// /// object /// EventArgs 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(string.Format("The Name '{0}' that was entered is not a unique folder name", ppRTxtName.Text)); ppRTxtName.Text = _FolderConfig.Name; } } } #endregion #region Referenced Objects tab /// /// This is the Referenced Objects button used on the button interface design /// /// object /// EventArgs private void btnRefObjs_Click(object sender, EventArgs e) { ProcessButtonClick(tiRefObj, btnRefObjs); } /// /// Selection in Graphic File Extension combo box changed. /// /// object /// EventArgs private void ppCmbxGrphFileExt_SelectedValueChanged(object sender, EventArgs e) { if (!_Initializing) ProcessCmbxSelectedValueChange(ppCmbxGrphFileExt, _DefaultROGraficFileExtension, ppBtnDefaultGrphFileExt, ppLblGrphFileExtDefault); } /// /// Reset to the parent setting. /// Find the parent setting and assign it to _FolderConfig.Graphics_defaultext. /// This will force the database to be updated. /// /// /// 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 //tcpRefObjs.Focus(); } /// /// TEMPORARY - TO PROVIDE DEMO FUNCTIONALITY /// An RO Folder was selected, find the RO.FST file and populate the RO and Image database combo boxes /// /// object /// EventArgs private void ppTxbxRoFoldLoc_TextChanged(object sender, EventArgs e) { //TODO: //string tpath = ppTxbxRoFoldLoc.Text + "\\RO.FST"; //if (File.Exists(tpath)) //{ // build a list of available RO Accessory Page ID's //ROFst rofst = ROFst.Get(_DocVersionConfig.MyDocVersion.DocVersionDocVersionROFsts[0].MyROFst.ROFstID);//new ROFst(tpath, null); //ROFst.rodbi[] rodblist = rofst.GetRODatabaseList(); //for (int i = 0; i < rodblist.Length; i++) //{ // string mitem = string.Format("{0} - {1}", rodblist[i].dbiTitle, rodblist[i].dbiAP); // switch (rodblist[i].dbiType) // { // case 7: ppCmbxDefROPrefix.Items.Add(mitem); // setpoint // break; // case 8: ppCmbxDefImgPrefix.Items.Add(mitem); // graphic // break; // default: // user defined // ppCmbxDefROPrefix.Items.Add(mitem); // ppCmbxDefImgPrefix.Items.Add(mitem); // break; // } //} //} } #endregion #region Output Settings tab /// /// This is the Output Settings button used on the button interface design /// /// object /// EventArgs private void btnOutputSettings_Click(object sender, EventArgs e) { ProcessButtonClick(tiOutputSettings, btnOutputSettings); } /// /// Selection in Pagination combo box changed. /// /// object /// EventArgs //private void ppCmbxPagination_SelectedValueChanged(object sender, EventArgs e) //{ // if (!_Initializing || !_IsDefaultSettingNode) // { // PrintPagination pgtn = (PrintPagination)Enum.Parse(typeof(PrintPagination), _DefaultPagination); // ProcessCmbxSelectionEnumChanged(ppCmbxPagination, pgtn, ppBtnDefPagination, ppLblPaginationDefault); // } //} /// /// Reset to the parent setting. /// Find the parent setting and assign it to _FolderConfig.Print_Pagination. /// This will force the database to be updated. /// /// /// //private void ppBtnDefPagination_Click(object sender, EventArgs e) //{ // Console.WriteLine("ppBtnDefPagination_Click"); // // Get the parent setting // PrintPagination pgtn = (PrintPagination)Enum.Parse(typeof(PrintPagination), _DefaultPagination); // // Compare parent setting with current setting // if (pgtn != _FolderConfig.Print_Pagination) // _FolderConfig.Print_Pagination = pgtn; // this will force a database update (write) // ppCmbxPagination.SelectedIndex = -1; //reset to the default Pagination setting // //tcpOutputSettings.Focus(); //} /// /// Selection in Watermark combo box changed. /// /// object /// EventArgs private void ppCmbxWatermark_SelectedValueChanged(object sender, EventArgs e) { if (!_Initializing) { PrintWatermark wtr = (PrintWatermark)Enum.Parse(typeof(PrintWatermark), _DefaultWatermark); ProcessCmbxSelectionEnumChanged(ppCmbxWatermark, wtr, ppBtnDefWatermark, ppLblWatermarkDefault); } } /// /// Reset to the parent setting. /// Find the parent setting and assign it to _FolderConfig.Print_Watermark. /// This will force the database to be updated. /// /// /// 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 //tcpOutputSettings.Focus(); } #endregion #region Startup Message tab /// /// This is the Startup Message button used on the button interface design /// /// object /// EventArgs private void btnStMsg_Click(object sender, EventArgs e) { ProcessButtonClick(tiStMsg, btnStMsg); } #endregion #region Format Settings tab /// /// This is the Format Settings button used on the button interface design /// /// object /// EventArgs 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) } // commented out as part of code change C2017-004. this also makes it consistent with section properties ///// ///// Selection in Format combo box changed. ///// ///// object ///// EventArgs //private void ppCmbxFormat_SelectedValueChanged(object sender, EventArgs e) //{ // if (!_Initializing) // ProcessCmbxSelectedValueChange(ppCmbxFormat, _DefaultFormatName, ppBtnDefaultFmt, ppLblFormatDefault); //} private void ppBtnDefaultFmt_Click(object sender, EventArgs e) { ppCmbxFormat.SelectedIndex = -1; //reset to the default Format setting //tcpFmtSettings.Focus(); } /// /// Enable or disable the user specified change bar options base on the type /// of change bar selected. /// private void setEnabledUserSpecifiedChgBarCombos(PrintChangeBar pcb) { //ppGpbxUserSpecCB.Enabled = //ppCmbxChgBarPos.Enabled = //ppCmbxChgBarTxtType.Enabled = //ppBtnDefaultCbPos.Enabled = //ppBtnDefCbTxtTyp.Enabled = (ppCmbxChangeBarType.SelectedValue != null && //ppCmbxChangeBarType.SelectedValue.Equals(FolderConfig.PrintChangeBar.WithUserSpecified)) || //(ppCmbxChangeBarType.SelectedValue == null && pcb.Equals(FolderConfig.PrintChangeBar.WithUserSpecified)); ppGpbxUserSpecCB.Enabled = (ppCmbxChangeBarType.SelectedValue != null && ppCmbxChangeBarType.SelectedValue.Equals(PrintChangeBar.WithUserSpecified)) || (ppCmbxChangeBarType.SelectedValue == null && pcb.Equals(PrintChangeBar.WithUserSpecified)); } /// /// Selection in Change Bar combo box changed. /// /// object /// EventArgs 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); } } /// /// Reset to the parent setting. /// Find the parent setting and assign it to _FolderConfig.PrintChangeBar. /// This will force the database to be updated. /// /// /// 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 //_Initializing = true; 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 //_Initializing = false; //tcpFmtSettings.Focus(); } /// /// Selection in Change Bar Position combo box changed. /// /// object /// EventArgs private void ppCmbxChgBarPos_SelectedValueChanged(object sender, EventArgs e) { if (!_Initializing) { PrintChangeBarLoc cbl = (PrintChangeBarLoc)Enum.Parse(typeof(PrintChangeBarLoc), _DefaultChgBarLoc); ProcessCmbxSelectionEnumChanged(ppCmbxChgBarPos, cbl, ppBtnDefaultCbPos, ppLblChgBarPosDefault); } } /// /// Reset to the parent setting. /// Find the parent setting and assign it to _FolderConfig.Print_ChangeBarLoc. /// This will force the database to be updated. /// /// /// 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 //tcpFmtSettings.Focus(); } /// /// Selection in Change Bar Text Type combo box changed. /// /// object /// EventArgs private void ppCmbxChgBarTxtType_SelectedValueChanged(object sender, EventArgs e) { if (!_Initializing) { PrintChangeBarText cbt = (PrintChangeBarText)Enum.Parse(typeof(PrintChangeBarText), _DefaultChgBarText); ProcessCmbxSelectionEnumChanged(ppCmbxChgBarTxtType, cbt, ppBtnDefCbTxtTyp, ppLblChgBarTxtTypeDefault); setEnabledUserSpecifiedChgBarText(); //tcpFmtSettings.Focus(); } } /// /// Reset to the parent setting. /// Find the parent setting and assign it to _FolderConfig.Print_ChangeBarText. /// This will force the database to be updated. /// /// /// 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 //tcpFmtSettings.Focus(); } /// /// 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) /// private void setEnabledUserSpecifiedChgBarText() { //ppGpbxUserSpecTxt.Enabled = //ppTxbxChangeBarUserMsgOne.Enabled = //ppTxbxChgBarUserMsgTwo.Enabled = //ppBtnDefCbTxt1.Enabled = //ppBtnDefCbTxt2.Enabled = (ppCmbxChgBarTxtType.SelectedValue != null && //ppCmbxChgBarTxtType.SelectedValue.Equals(FolderConfig.PrintChangeBarText.UserDef)); // 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)); } /// /// Selection in Change Bar User Message One text changed. /// /// object /// EventArgs private void ppTxbxChangeBarUserMsgOne_TextChanged(object sender, EventArgs e) { //ppBtnDefCbTxt1.Visible = (!_FolderConfig.Name.Equals("VEPROMS")) && // ((ppTxbxChangeBarUserMsgOne.Text != null) && !ppTxbxChangeBarUserMsgOne.Text.Equals(_DefaultChgBarUsrMsg1)); ppBtnDefCbTxt1.Visible = ((ppTxbxChangeBarUserMsgOne.Text != null) && !ppTxbxChangeBarUserMsgOne.Text.Equals(_DefaultChgBarUsrMsg1)); ppLblChgBarUserMsgOneDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefCbTxt1.Visible; } /// /// Selection in Change Bar User Message Two text changed. /// /// object /// EventArgs private void ppTxbxChangeBarUserMsgTwo_TextChanged(object sender, EventArgs e) { //ppBtnDefCbTxt2.Visible = (!_FolderConfig.Name.Equals("VEPROMS")) && // ((ppTxbxChgBarUserMsgTwo.Text != null) && !ppTxbxChgBarUserMsgTwo.Text.Equals(_DefaultChgBarUsrMsg2)); ppBtnDefCbTxt2.Visible = ((ppTxbxChgBarUserMsgTwo.Text != null) && !ppTxbxChgBarUserMsgTwo.Text.Equals(_DefaultChgBarUsrMsg2)); ppLblChgBarUserMsgTwoDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefCbTxt2.Visible; } #endregion #region Editor Settings tab /// /// This is the Editor Settings button used on the button interface design /// /// object /// EventArgs private void btnEdSettings_Click(object sender, EventArgs e) { ProcessButtonClick(tiEditSettings, btnEdSettings); } #region Editor Color Property Page Settings /** The property page for these color settings is not visible for now. * /// /// Set the text and background colors for the sample text for the Step Editor Text Colors /// on the Editor Settings property page /// private void SetupSampleTextBoxes() { ppPanelViewSample.BackColor = cGetColor(_ViewBckgndColor); ppLblViewRO.ForeColor = cGetColor(_ROcolor); ppLblViewTrans.ForeColor = cGetColor(_TransColor); ppPanelEditSample.BackColor = cGetColor(_EditBckgndColor); ppLblEditRO.ForeColor = cGetColor(_ROcolor); ppLblEditTrans.ForeColor = cGetColor(_TransColor); } /// /// Selection in View Mode Background Color changed. /// /// object /// EventArgs private void ppColorPickerViewModebckgnd_SelectedColorChanged(object sender, EventArgs e) { _ViewBckgndColor = strMakeColorName(ppColorPickerViewModebckgnd.SelectedColor); SetupSampleTextBoxes(); } /// /// Selection in Edit Mode Background Color changed. /// /// object /// EventArgs private void ppColorPickerEditModeBckGnd_SelectedColorChanged(object sender, EventArgs e) { _EditBckgndColor = strMakeColorName(ppColorPickerEditModeBckGnd.SelectedColor); _FolderConfig.Color_editbackground = _EditBckgndColor; SetupSampleTextBoxes(); } /// /// Selection in Transition Color changed. /// /// object /// EventArgs private void ppColorPickerTransition_SelectedColorChanged(object sender, EventArgs e) { _TransColor = strMakeColorName(ppColorPickerTransition.SelectedColor); SetupSampleTextBoxes(); } /// /// Selection in RO Color changed. /// /// object /// EventArgs private void ppColorPickerRO_SelectedColorChanged(object sender, EventArgs e) { _ROcolor = strMakeColorName(ppColorPickerRO.SelectedColor); SetupSampleTextBoxes(); } /// /// Preview the current color under mouse pointer /// For View Mode Background /// /// object /// ColorPreviewEventArgs private void ppColorPickerViewModebckgnd_ColorPreview(object sender, DevComponents.DotNetBar.ColorPreviewEventArgs e) { ppPanelViewSample.BackColor = e.Color; } /// /// Finalize the current color under mouse pointer /// For View Mode Background /// /// object /// EventArgs private void ppColorPickerViewModebckgnd_PopupFinalized(object sender, EventArgs e) { ppPanelViewSample.BackColor = cGetColor(_ViewBckgndColor); } /// /// Preview the current color under mouse pointer /// For Edit Mode Background /// /// object /// ColorPreviewEventArgs private void ppColorPickerEditModeBckGnd_ColorPreview(object sender, DevComponents.DotNetBar.ColorPreviewEventArgs e) { ppPanelEditSample.BackColor = e.Color; } /// /// Finalize the current color under mouse pointer /// For Edit Mode Background /// /// object /// EventArgs private void ppColorPickerEditModeBckGnd_PopupFinalized(object sender, EventArgs e) { ppPanelEditSample.BackColor = cGetColor(_EditBckgndColor); } /// /// Preview the current color under mouse pointer /// For Transition /// /// object /// ColorPreviewEventArgs private void ppColorPickerTransition_ColorPreview(object sender, DevComponents.DotNetBar.ColorPreviewEventArgs e) { ppLblViewTrans.ForeColor = e.Color; ppLblEditTrans.ForeColor = e.Color; } /// /// Finalize the current color under mouse pointer /// For Transition /// /// object /// EventArgs private void ppColorPickerTransition_PopupFinalized(object sender, EventArgs e) { ppLblViewTrans.ForeColor = cGetColor(_TransColor); ppLblEditTrans.ForeColor = cGetColor(_TransColor); } /// /// Preview the current color under mouse pointer /// For RO /// /// object /// ColorPreviewEventArgs private void ppColorPickerRO_ColorPreview(object sender, DevComponents.DotNetBar.ColorPreviewEventArgs e) { ppLblViewRO.ForeColor = e.Color; ppLblEditRO.ForeColor = e.Color; } /// /// Finalize the current color under mouse pointer /// For RO /// /// object /// EventArgs private void ppColorPickerRO_PopupFinalized(object sender, EventArgs e) { ppLblViewRO.ForeColor = cGetColor(_ROcolor); ppLblEditRO.ForeColor = cGetColor(_ROcolor); } **/ #endregion /// /// Selection in Step Editor Columns combo box changed. /// /// object /// EventArgs private void ppCmbxStpEditorCols_SelectedValueChanged(object sender, EventArgs e) { if (!_Initializing) { FormatColumns fcl = (FormatColumns)Enum.Parse(typeof(FormatColumns), _DefaultFormatColumns); ProcessCmbxSelectionEnumChanged(ppCmbxStpEditorCols, fcl, ppBtnDefEdCols, ppLblStpEditorColsDefault); } } /// /// Reset to the parent setting. /// Find the parent setting and assign it to _FolderConfig.Format_Columns. /// This will force the database to be updated. /// /// /// 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 //tcpEdSettings.Focus(); } #endregion #region Generic functions used on this property page /// /// Convert the given System.Drawing.Color to a string containing either the color's name or the Argb. /// /// System.Drawing.Color /// private string strMakeColorName(Color c) { string rtnstring = ""; if (c.IsNamedColor) rtnstring = c.Name; else rtnstring = string.Format("[A={0},R={1},G={2},B={3}]", c.A, c.R, c.G, c.B); return rtnstring; } /// /// Get a System.Drawing.Color from an Argb or color name /// /// Color Name or "[(alpha,)red,green,blue]" /// // a copy of this function was put in frmVEPROMS.CS private static Color cGetColor(string strColor) { Color rtnColor; // = new Color(); if (strColor == null || strColor.Equals("")) rtnColor = Color.White; else { if (strColor[0] == '[') { string[] parts = strColor.Substring(1, strColor.Length - 2).Split(",".ToCharArray()); int parts_cnt = 0; foreach (string s in parts) { parts[parts_cnt] = parts[parts_cnt].TrimStart(' '); // remove preceeding blanks parts_cnt++; } if (parts_cnt == 3) rtnColor = Color.FromArgb(Int32.Parse(parts[0]), Int32.Parse(parts[1]), Int32.Parse(parts[2])); else rtnColor = Color.FromArgb(Int32.Parse(parts[0].Substring(2)), Int32.Parse(parts[1].Substring(2)), Int32.Parse(parts[2].Substring(2)), Int32.Parse(parts[3].Substring(2))); } else rtnColor = Color.FromName(strColor); } return rtnColor; } /// /// Set the watermark and default label /// /// The default text /// Label that displays the current default when view defaults is set /// Combo box with a watermark property 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; } } /// /// Determines what labels (showing default values) are visable on the property pages /// 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; //ppLblPaginationDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefPagination.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; } /// /// Process a change in the combo box selection /// /// Combo Box Name /// string containing default text /// button to reset to default value /// label containing the default 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; } /// /// Process a change in the enum combo box selection /// /// Combo Box Name /// the default enum value /// button to reset to default value /// label containing the default 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 = ((!_FolderConfig.Name.Equals("VEPROMS")) && (cmbx.SelectedValue != null)); button.Visible = (!_IsVepromsNode && (cmbx.SelectedValue != null)&&(cmbx.SelectedIndex >= 0)); deflabel.Visible = ppCbShwDefSettings.Checked && button.Visible; } /// /// Select the corresponding tab and set the button's state to checked /// /// Property Page Tab /// Corresponding Property Page Button private void ProcessButtonClick(TabItem tab, ButtonX button) { ClearAllCheckedButtons(); tcFolder.SelectedTab = tab; button.Checked = true; } /// /// 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. /// 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; } /// /// 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. /// /// type object /// type EventArgs private void tabpage_Enter(object sender, EventArgs e) { // Show or hide the labels containing the default values //if (!_Initializing) 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) { //_Initializing = true; _FolderConfig.Print_UserCBMess1 = _DefaultChgBarUsrMsg1; // this will force a database update (write) ppLblChgBarUserMsgOneDefault.Visible = false; ppBtnDefCbTxt1.Visible = false; //tcpFmtSettings.Focus(); //_Initializing = 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; //tcpFmtSettings.Focus(); } } 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; //DialogResult dr = MessageBox.Show("The Annotation Description was changed. \n\nSave your Changes?", "Annotation Desctiption", MessageBoxButtons.YesNo); //if (dr == DialogResult.Yes) //{ 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; LocalAnnotationTypeInfo ai = lbAnnotationTypes.SelectedValue as LocalAnnotationTypeInfo; if (ai == null) { 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 = string.Format("{0} is used in {1} places", ai.Name, ai.AnnotationTypeAnnotationCount); 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); //myLocalAnnotationTypeInfoList.Add(new LocalAnnotationTypeInfo("New Annotation Type")); 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; //int saveIdx = lbAnnotationTypes.SelectedIndex; //LocalAnnotationTypeInfo ai = lbAnnotationTypes.SelectedValue as LocalAnnotationTypeInfo; //btnAnnoTypeSave.Enabled = false; //ai.Name = tbxAnnotationDescription.Text; //RefreshAnnotationTypeList(); //lbAnnotationTypes.SelectedIndex = saveIdx; } 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 ex) { 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 = string.Format("{0} {1}", lsi.Name, lsi.ID); //myLocalStageInfoList.Add(new LocalStageInfo("New Stage", 0)); 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); //int savIdx = lbRevisionStages.SelectedIndex; //LocalStageInfo si = lbRevisionStages.SelectedValue as LocalStageInfo; //si.Name = tbRevisionStage.Text; //si.IsApproved = rbRevisionStage.Checked ? 1 : 0; //RefreshRevisionStagesList(); //lbRevisionStages.SelectedIndex = savIdx; } private void lbRevisionStages_SelectedIndexChanged(object sender, EventArgs e) { if (btnRevisoinStageUndo.Enabled) { btnRevisoinStageUndo.Enabled = false; btnRevisionStageApply.Enabled = false; //DialogResult dr = MessageBox.Show("The Approval Stage Description was changed. \n\nSave your Changes?", "Approval Stage Desctiption", MessageBoxButtons.YesNo); //if (dr == DialogResult.Yes) //{ 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; LocalStageInfo si = lbRevisionStages.SelectedValue as LocalStageInfo; if (si == null) { 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; //rbApprovalStage.Checked = (si.IsApproved > 0); //rbWorkflowStage.Checked = (si.IsApproved == 0); 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 { get { return --_UniqueID; } } private int _MyUniqueID = UniqueID; public int MyUniqueID // Absolutely Unique ID - Editable { get { return _MyUniqueID; } } private int _ID; public int ID { get { return _ID; } set { _ID = value; } } private string _Name; public string Name { get { return _Name; } set { _Name = value; } } private int _IsApproved; public int IsApproved { get { return _IsApproved; } set { _IsApproved = value; } } private int _StageVersionCount; public int StageVersionCount { get { return _StageVersionCount; } set { _StageVersionCount = value; } } 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() { return string.Format("{0} {1}", ID, Name); } } public partial class LocalStageInfoList : List { 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 int _MyUniqueID = UniqueID; public int MyUniqueID // Absolutely Unique ID - Editable { get { return _MyUniqueID; } } private int _TypeID; public int TypeID { get { return _TypeID; } set { _TypeID = value; } } private string _Name; public string Name { get { return _Name; } set { _Name = value; } } private int _PrntLoc; public int PrntLoc { get {return _PrntLoc;} set {_PrntLoc = value; } } private int _AnnotationTypeAnnotationCount; public int AnnotationTypeAnnotationCount { get { return _AnnotationTypeAnnotationCount; } set { _AnnotationTypeAnnotationCount = value; } } 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() { return string.Format("{0} {1}", TypeID, Name); } } public partial class LocalAnnotationTypeInfoList : List { public LocalAnnotationTypeInfoList(AnnotationTypeInfoList ail) { foreach (AnnotationTypeInfo ai in ail) Add(new LocalAnnotationTypeInfo(ai)); } } }