using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using VEPROMS.CSLA.Library; using VEPROMS.Properties; using DescriptiveEnum; using DevComponents.DotNetBar; using DevComponents.DotNetBar.Controls; namespace VEPROMS { public partial class frmProcedureProperties : DevComponents.DotNetBar.Office2007Form { private string _DefaultFormatName = null; private string _DefaultPagination = null; private string _DefaultWatermark = null; private string _DefaultChgBarType = null; private string _DefaultChgBarLoc = null; private string _DefaultChgBarText = null; private string _DefaultChgBarUsrMsg1 = null; private string _DefaultChgBarUsrMsg2 = null; private string _DefaultFormatColumns = null; private bool _Initializing; private ProcedureConfig _ProcedureConfig; public frmProcedureProperties(ProcedureConfig procedureConfig) { _ProcedureConfig = procedureConfig; _Initializing = true; InitializeComponent(); btnGeneral.PerformClick(); // always start with General tab or button _Initializing = false; // build the title bar caption this.Text = string.Format("{0} {1} Properties", procedureConfig.Number, procedureConfig.Title); } private void ppBtnOK_Click(object sender, EventArgs e) { DialogResult = DialogResult.OK; procedureConfigBindingSource.EndEdit(); // Save Default settings for User // // Save whether we should display the default values on this property page Settings.Default.ShowDefaultProcedureProp = ppCbShwDefSettings.Checked; Settings.Default.Save(); this.Close(); } private void ppBtnCancel_Click(object sender, EventArgs e) { procedureConfigBindingSource.CancelEdit(); this.Close(); } /// /// 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() { _ProcedureConfig.ParentLookup = true; // Get the default format name _DefaultFormatName = _ProcedureConfig.DefaultFormatSelection; SetupDefault(_DefaultFormatName, ppLblFormatDefault, ppCmbxFormat); // Get the default Change Bar Type _DefaultChgBarType = _ProcedureConfig.Print_ChangeBar.ToString(); SetupDefault(EnumDescConverter.GetEnumDescription(_ProcedureConfig.Print_ChangeBar), ppLblChangeBarTypeDefault, ppCmbxChangeBarType); // Get the default Change Bar Location _DefaultChgBarLoc = _ProcedureConfig.Print_ChangeBarLoc.ToString(); SetupDefault(EnumDescConverter.GetEnumDescription(_ProcedureConfig.Print_ChangeBarLoc), ppLblChgBarPosDefault, ppCmbxChgBarPos); // Get the default Change Bar text _DefaultChgBarText = _ProcedureConfig.Print_ChangeBarText.ToString(); SetupDefault(EnumDescConverter.GetEnumDescription(_ProcedureConfig.Print_ChangeBarText), ppLblChgBarTxtTypeDefault, ppCmbxChgBarTxtType); // Get the default User Change Bar Message 1 _DefaultChgBarUsrMsg1 = _ProcedureConfig.Print_UserCBMess1; if (!(_DefaultChgBarUsrMsg1.Equals(""))) ppLblChgBarUserMsgOneDefault.Text = string.Format("({0})", _DefaultChgBarUsrMsg1); // Get the default User Change Bar Message 2 _DefaultChgBarUsrMsg2 = _ProcedureConfig.Print_UserCBMess2; if (!(_DefaultChgBarUsrMsg2.Equals(""))) ppLblChgBarUserMsgTwoDefault.Text = string.Format("({0})", _DefaultChgBarUsrMsg2); // Get the default Print Pagination _DefaultPagination = _ProcedureConfig.Print_Pagination.ToString(); SetupDefault(EnumDescConverter.GetEnumDescription(_ProcedureConfig.Print_Pagination), ppLblPaginationDefault, ppCmbxPagination); // Get the default Watermark _DefaultWatermark = _ProcedureConfig.Print_Watermark.ToString(); SetupDefault(EnumDescConverter.GetEnumDescription(_ProcedureConfig.Print_Watermark), ppLblWatermarkDefault, ppCmbxWatermark); // Get the default Format Columns _DefaultFormatColumns = _ProcedureConfig.Format_Columns.ToString(); SetupDefault(EnumDescConverter.GetEnumDescription(_ProcedureConfig.Format_Columns), ppLblStpEditorColsDefault, ppCmbxStpEditorCols); _ProcedureConfig.ParentLookup = false; } private void frmProcedureProperties_Load(object sender, EventArgs e) { _Initializing = true; procedureConfigBindingSource.DataSource = _ProcedureConfig; formatInfoListBindingSource.DataSource = FormatInfoList.Get(); // 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["ShowDefaultProcedureProp"] != null) ? Settings.Default.ShowDefaultProcedureProp : false; // 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) { tcProcProp.TabsVisible = true; panProcBtns.Visible = false; this.Width -= panProcBtns.Width; } // Get the default values for the property page information FindDefaultValues(); // Assign the data sources to the combo boxes ppCmbxChgBarPos.DataSource = EnumDetail.Details(); ppCmbxChgBarPos.DisplayMember = "Description"; ppCmbxChgBarPos.ValueMember = "EValue"; ppCmbxChgBarTxtType.DataSource = EnumDetail.Details(); ppCmbxChgBarTxtType.DisplayMember = "Description"; ppCmbxChgBarTxtType.ValueMember = "EValue"; ppCmbxChangeBarType.DataSource = EnumDetail.Details(); ppCmbxChangeBarType.DisplayMember = "Description"; ppCmbxChangeBarType.ValueMember = "EValue"; ppCmbxPagination.DataSource = EnumDetail.Details(); ppCmbxPagination.DisplayMember = "Description"; ppCmbxPagination.ValueMember = "EValue"; ppCmbxWatermark.DataSource = EnumDetail.Details(); ppCmbxWatermark.DisplayMember = "Description"; ppCmbxWatermark.ValueMember = "EValue"; ppCmbxStpEditorCols.DataSource = EnumDetail.Details(); ppCmbxStpEditorCols.DisplayMember = "Description"; ppCmbxStpEditorCols.ValueMember = "EValue"; _Initializing = false; } #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); } /// /// Selection in Default Column Mode combo box changed. /// /// object /// EventArgs private void ppCmbxStpEditorCols_SelectedValueChanged(object sender, EventArgs e) { ProcedureConfig.FormatColumns fc = (ProcedureConfig.FormatColumns)Enum.Parse(typeof(ProcedureConfig.FormatColumns), _DefaultFormatColumns); if ((ppCmbxStpEditorCols.SelectedIndex != -1) && ppCmbxStpEditorCols.SelectedValue.Equals(fc)) { ppBtnDefEdCols.Focus(); ppBtnDefEdCols.PerformClick(); } ppBtnDefEdCols.Visible = ppCmbxStpEditorCols.SelectedValue != null; ppLblStpEditorColsDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefEdCols.Visible; } #endregion #region Format Settings tab /// /// This is the Format Settings button used on the button interface design /// /// object /// EventArgs private void btnFmtStngs_Click(object sender, EventArgs e) { ProcessButtonClick(tiFmtStngs, btnFmtStngs); } private void ppBtnDefaultFmt_Click(object sender, EventArgs e) { ppCmbxFormat.SelectedIndex = -1; //reset to the default Format setting } /// /// Selection in Format combo box changed. /// /// object /// EventArgs private void ppCmbxFormat_SelectedValueChanged(object sender, EventArgs e) { ProcessCmbxSelectedValueChange(ppCmbxFormat, _DefaultFormatName, ppBtnDefaultFmt, ppLblFormatDefault); } /// /// Enable or disable the user specified change bar options base on the type /// of change bar selected. /// private void setEnabledUserSpecifiedChgBarCombos() { ppGpbxUserSpecCB.Enabled = ppCmbxChgBarPos.Enabled = ppCmbxChgBarTxtType.Enabled = ppBtnDefaultCbPos.Enabled = ppBtnDefCbTxtTyp.Enabled = (ppCmbxChangeBarType.SelectedValue != null && ppCmbxChangeBarType.SelectedValue.Equals(ProcedureConfig.PrintChangeBar.WithUserSpecified)); } /// /// Selection in Change Bar combo box changed. /// /// object /// EventArgs private void ppCmbxChangeBarType_SelectedValueChanged(object sender, EventArgs e) { ProcessCmbxSelectedValueChange(ppCmbxChangeBarType, _DefaultChgBarType, ppBtnDefaultChgBar, ppLblChangeBarTypeDefault); setEnabledUserSpecifiedChgBarCombos(); } private void ppBtnDefaultChgBar_Click(object sender, EventArgs e) { ppCmbxChangeBarType.SelectedIndex = -1; //reset to the default Change Bar setting } /// /// Selection in Change Bar Position combo box changed. /// /// object /// EventArgs private void ppCmbxChgBarPos_SelectedValueChanged(object sender, EventArgs e) { ProcessCmbxSelectedValueChange(ppCmbxChgBarPos, _DefaultChgBarLoc, ppBtnDefaultCbPos, ppLblChgBarPosDefault); } private void ppBtnDefaultCbPos_Click(object sender, EventArgs e) { ppCmbxChgBarPos.SelectedIndex = -1; //reset to the default Change Bar Position setting } /// /// Selection in Change Bar Text Type combo box changed. /// /// object /// EventArgs private void ppCmbxChgBarTxtType_SelectedValueChanged(object sender, EventArgs e) { ProcessCmbxSelectedValueChange(ppCmbxChgBarTxtType, _DefaultChgBarText, ppBtnDefCbTxtTyp, ppLblChgBarTxtTypeDefault); setEnabledUserSpecifiedChgBarText(); } private void ppBtnDefCbTxtTyp_Click(object sender, EventArgs e) { ppCmbxChgBarTxtType.SelectedIndex = -1; //reset to the default Change Bar Text Type setting } /// /// 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(ProcedureConfig.PrintChangeBarText.UserDef)); } #endregion #region Output Settings tab /// /// This is the Output Settings button used on the button interface design /// /// object /// EventArgs private void btnOutputStngs_Click(object sender, EventArgs e) { ProcessButtonClick(tiOutputStngs, btnOutputStngs); } /// /// Selection in Pagination combo box changed. /// /// object /// EventArgs private void ppCmbxPagination_SelectedValueChanged(object sender, EventArgs e) { ProcessCmbxSelectedValueChange(ppCmbxPagination, _DefaultPagination, ppBtnDefPagination, ppLblPaginationDefault); } private void ppBtnDefPagination_Click(object sender, EventArgs e) { ppCmbxPagination.SelectedIndex = -1; //reset to the default Pagination setting } /// /// Selection in Watermark combo box changed. /// /// object /// EventArgs private void ppCmbxWatermark_SelectedValueChanged(object sender, EventArgs e) { ProcessCmbxSelectedValueChange(ppCmbxWatermark, _DefaultWatermark, ppBtnDefWatermark, ppLblWatermarkDefault); } private void ppBtnDefWatermark_Click(object sender, EventArgs e) { ppCmbxWatermark.SelectedIndex = -1; //reset to the default Watermark setting } #endregion #region View Settings tab /// /// This is the View Settings button used on the button interface design /// /// object /// EventArgs private void btnVwStngs_Click(object sender, EventArgs e) { ProcessButtonClick(tiViewStngs, btnVwStngs); } #endregion #region Generic functions used on this property page /// /// Determines what labels (showing default values) are visable on the property pages /// private void defaultSettingsVisiblity() { ppLblDefSettingsInfo.Visible = ppCbShwDefSettings.Checked; ppLblWatermarkDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefWatermark.Visible; ppLblPaginationDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefPagination.Visible; ppLblStpEditorColsDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefEdCols.Visible; ppLblFormatDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefaultFmt.Visible; ppLblChangeBarTypeDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefaultChgBar.Visible; ppLblChgBarPosDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefaultCbPos.Visible; ppLblChgBarTxtTypeDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefCbTxtTyp.Visible; ppLblChgBarUserMsgOneDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefCbTxt1.Visible; ppLblChgBarUserMsgTwoDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefCbTxt2.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(); tcProcProp.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; btnFmtStngs.Checked = false; btnOutputStngs.Checked = false; btnVwStngs.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(); } /// /// 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(""))) { lbl.Text = string.Format("({0})", defaultText); cmbo.WatermarkText = string.Format("{0}", defaultText); } } /// /// 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.Equals(cmbx.SelectedValue)) { button.Focus(); button.PerformClick(); } button.Visible = cmbx.SelectedValue != null; deflabel.Visible = ppCbShwDefSettings.Checked && button.Visible; } #endregion } }