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 DevComponents.DotNetBar;
using Volian.Controls.Library;
namespace VEPROMS
{
public partial class frmSectionProperties : DevComponents.DotNetBar.Office2007Form
{
private string _DefaultFormatName = null;
private bool _Initializing;
private SectionConfig _SectionConfig;
private Document _DocumentToDelete = null;
private StepTabRibbon _MyStepTabRibbon;
public frmSectionProperties(SectionConfig sectionConfig)
{
_SectionConfig = sectionConfig;
InitializeComponent();
btnGeneral.PerformClick(); // always start with General tab or button
ItemInfo ii = ItemInfo.Get(_SectionConfig.MySection.ItemID);
//if (sectionConfig.Number.Length > 0)
// this.Text = string.Format("{0} {1} Properties", sectionConfig.Number, sectionConfig.Title);
//else
// this.Text = string.Format("{0} Properties", sectionConfig.Title);
if (sectionConfig.Number.Length > 0)
this.Text = string.Format("{0} {1} Properties", ii.DisplayNumber, ii.DisplayText);
else
this.Text = string.Format("{0} Properties", ii.DisplayText);
ppSectTitleStpRTB.FieldToEdit = E_FieldToEdit.Text;
ppSectTitleStpRTB.BorderStyle = BorderStyle.Fixed3D;
ppSectTitleStpRTB.ViewRTB = false;
ppSectTitleStpRTB.MyItemInfo = ii;
ppSectNumberStpRTB.FieldToEdit = E_FieldToEdit.Number;
ppSectNumberStpRTB.BorderStyle = BorderStyle.Fixed3D;
ppSectNumberStpRTB.ViewRTB = false;
ppSectNumberStpRTB.MyItemInfo = ii;
_MyStepTabRibbon = new StepTabRibbon();
//_MyStepTabRibbon.Dock = System.Windows.Forms.DockStyle.Top;
//_MyStepTabRibbon.Location = new System.Drawing.Point(0, 0);
_MyStepTabRibbon.Name = "displayTabRibbon1";
_MyStepTabRibbon.Visible = false;
// set up some of the format tab:
cbIsStepSection.Enabled = !(ii.HasWordContent || ii.HasStepContent);
// check type of section from document styles to determine if the stepsection checkbox should
// be checked.
int secindx = (int)sectionConfig.SectionType;
// find the index for the document style to determine whether this is a step or word section.
PlantFormat pf = _SectionConfig.MyDefaultFormat.PlantFormat;
for (int i = 0; i < pf.DocStyles.DocStyleList.Count; i++)
{
if (pf.DocStyles.DocStyleList[i].Index == secindx)
{
cbIsStepSection.Checked = pf.DocStyles.DocStyleList[i].IsStepSection;
}
}
}
private void btnSectPropOK_Click(object sender, EventArgs e)
{
sectionConfigBindingSource.EndEdit();
// Save Default settings for User
//
// Save whether we should display the default values on this property page
Settings.Default.ShowDefaultSectionProp = ppCbShwDefSettings.Checked;
Settings.Default.Save();
DialogResult = DialogResult.OK;
_SectionConfig.MySection.Save().Dispose();
// if there was a document to delete, do it.
if (_DocumentToDelete != null)
{
Document.Delete(_DocumentToDelete.DocID);
_DocumentToDelete = null;
}
ppSectNumberStpRTB.SaveText();
ppSectTitleStpRTB.SaveText();
this.Close();
}
private void btnSectPropCancel_Click(object sender, EventArgs e)
{
_DocumentToDelete = null;
sectionConfigBindingSource.CancelEdit();
DialogResult = DialogResult.Cancel;
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()
{
_SectionConfig.ParentLookup = true;
// Get the default format name
_DefaultFormatName = _SectionConfig.DefaultFormatSelection;
if (_DefaultFormatName != null && !(_DefaultFormatName.Equals("")))
{
ppLblFormatDefault.Text = string.Format("({0})", _DefaultFormatName);
ppCmbxFormat.WatermarkText = string.Format("{0}", _DefaultFormatName);
}
_SectionConfig.ParentLookup = false;
}
private void frmSectionProperties_Load(object sender, EventArgs e)
{
_Initializing = true;
sectionConfigBindingSource.DataSource = _SectionConfig;
ppCmbxFormat.DataSource = null;
ppCmbxFormat.DisplayMember = "FullName";
ppCmbxFormat.ValueMember = "FullName";
ppCmbxFormat.DataSource = FormatInfoList.SortedFormatInfoList;
// Get the saved settings for this user
//
// Get setting telling us whether to display the default values on this property page
ppCbShwDefSettings.Checked = (Settings.Default["ShowDefaultSectionProp"] != null) ? Settings.Default.ShowDefaultSectionProp : 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)
{
tcSectionProp.TabsVisible = true;
panSectBtns.Visible = false;
this.Width -= panSectBtns.Width;
}
// Get the default values for the property page information
FindDefaultValues();
ppCmbxSectPagination.DataSource = EnumDetail.Details();
ppCmbxSectPagination.DisplayMember = "Description";
ppCmbxSectPagination.ValueMember = "EValue";
ppCmbxSectPagination.SelectedIndex = -1;
ppCmbxNumColumns.DataSource = EnumDetail.Details();
ppCmbxNumColumns.DisplayMember = "Description";
ppCmbxNumColumns.ValueMember = "EValue";
ppCmbxNumColumns.SelectedIndex = -1;
if (!cbIsStepSection.Enabled) ppCmbxLibDocFill();
_Initializing = false;
}
private void ppCmbxLibDocFill()
{
_Initializing = true;
bool isLib = false;
if (_SectionConfig.MySection.MyContent.MyEntry!=null && _SectionConfig.MySection.MyContent.MyEntry.MyDocument!=null && (_SectionConfig.MySection.MyContent.MyEntry.MyDocument.LibTitle != null) && (_SectionConfig.MySection.MyContent.MyEntry.MyDocument.LibTitle != "")) isLib = true;
if (isLib)
{
ppBtnCvrtToLibDoc.Text = "Convert this Section To A Non-Library Document";
lblLibraryDocument.Text = "Library Document";
superTooltip1.SetSuperTooltip(this.ppBtnCvrtToLibDoc, new DevComponents.DotNetBar.SuperTooltipInfo("Convert To Non-Library Document", "", "This button will convert the current section from a library document to a non-library document",
null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, false, new System.Drawing.Size(250, 76)));
}
else
{
ppBtnCvrtToLibDoc.Text = _SectionConfig.MySection.MyContent.MyEntry.MyDocument == null ? "Select Library Document" : "Convert this to a Library Document";
lblLibraryDocument.Text = "Select Library Document to Link";
if (_SectionConfig.MySection.MyContent.MyEntry.MyDocument==null)
superTooltip1.SetSuperTooltip(this.ppBtnCvrtToLibDoc, new DevComponents.DotNetBar.SuperTooltipInfo("Select Library Document button", "", "This button will attach the current section to a library document, allowing it t" +
"o be shared with other procedures.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, false, new System.Drawing.Size(250, 76)));
else
superTooltip1.SetSuperTooltip(this.ppBtnCvrtToLibDoc, new DevComponents.DotNetBar.SuperTooltipInfo("Convert To Library Document button", "", "This button will convert the current section to a library document, allowing it t" +
"o be shared with other procedures.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, false, new System.Drawing.Size(250, 76)));
}
DocumentInfoList LibDocList = DocumentInfoList.GetLibraries(true);
int selindx = -1;
ppCmbxLibDoc.Items.Clear();
for (int i = 0; i < LibDocList.Count; i++)
{
ppCmbxLibDoc.Items.Add(LibDocList[i].DocumentTitle);
// see if this lib doc should be the selected index?
if (isLib && (LibDocList[i].DocID == _SectionConfig.MySection.MyContent.MyEntry.MyDocument.DocID)) selindx = i;
}
if (selindx>-1) ppCmbxLibDoc.SelectedIndex = selindx;
_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);
}
#endregion
#region Format tab
///
/// This is the Format button used on the button interface design
///
/// object
/// EventArgs
private void btnFormat_Click(object sender, EventArgs e)
{
ProcessButtonClick(tiFormat, btnFormat);
}
///
/// Selection in Format combo box changed.
///
/// object
/// EventArgs
private void ppCmbxFormat_SelectedValueChanged(object sender, EventArgs e)
{
if ((ppCmbxFormat.SelectedIndex != -1) && _DefaultFormatName != null && _DefaultFormatName.Equals(ppCmbxFormat.SelectedValue))
{
ppBtnDefaultFmt.Focus();
ppBtnDefaultFmt.PerformClick();
}
ppBtnDefaultFmt.Visible = (ppCmbxFormat.SelectedValue != null);
ppLblFormatDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefaultFmt.Visible;
SetupPpCmbxSectionType();
}
private void SetupPpCmbxSectionType()
{
bool myInit = _Initializing;
_Initializing = true;
PlantFormat pf = _SectionConfig.MyDefaultFormat.PlantFormat;
if (ppCmbxFormat.SelectedIndex >= 0)
pf = FormatInfoList.SortedFormatInfoList[ppCmbxFormat.SelectedIndex].PlantFormat;
ppCmbxStyleSectionType.DisplayMember = "Name";
ppCmbxStyleSectionType.ValueMember = "Index";
// if this has been defined as a step section, only list step section document styles, if
// a word section, only list word section styles. If neither content types has been defined,
// list both.
DocStyleList locDocStyles = new DocStyleList(null);
ItemInfo ii = ItemInfo.Get(_SectionConfig.MySection.ItemID);
int selindx = -1;
for (int i = 0; i < pf.DocStyles.DocStyleList.Count; i++)
{
if (cbIsStepSection.Checked && pf.DocStyles.DocStyleList[i].IsStepSection) locDocStyles.Add(pf.DocStyles.DocStyleList[i]);
else if (!cbIsStepSection.Checked && !pf.DocStyles.DocStyleList[i].IsStepSection) locDocStyles.Add(pf.DocStyles.DocStyleList[i]);
if (_SectionConfig.SectionType == pf.DocStyles.DocStyleList[i].Index) selindx = locDocStyles.Count - 1;
}
ppCmbxStyleSectionType.DataSource = locDocStyles;
ppCmbxStyleSectionType.SelectedIndex = selindx;
if (!cbIsStepSection.Checked) ppCmbxLibDocFill();
_Initializing = myInit;
}
private void ppBtnDefaultFmt_Click(object sender, EventArgs e)
{
ppCmbxFormat.SelectedIndex = -1; //reset to the default Format setting
}
private void ppCmbxFormat_SelectedIndexChanged(object sender, EventArgs e)
{
if (_Initializing) return;
if ((ppCmbxFormat.SelectedIndex != -1) && _DefaultFormatName != null && _DefaultFormatName.Equals(ppCmbxFormat.SelectedValue))
{
ppBtnDefaultFmt.Focus();
ppBtnDefaultFmt.PerformClick();
}
ppBtnDefaultFmt.Visible = (ppCmbxFormat.SelectedValue != null);
ppLblFormatDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefaultFmt.Visible;
SetupPpCmbxSectionType();
}
private void ppCmbxStyleSectionType_SelectedValueChanged(object sender, EventArgs e)
{
if (_Initializing) return;
if (ppCmbxStyleSectionType.SelectedValue != null)
_SectionConfig.SectionType = (int)(ppCmbxStyleSectionType.SelectedValue);
}
private void cbIsStepSection_CheckedChanged(object sender, EventArgs e)
{
if (_Initializing) return;
SetupPpCmbxSectionType();
}
#endregion
#region Library Document tab
///
/// This is the Library Document button used on the button interface design
///
/// object
/// EventArgs
private void btnLibDocs_Click(object sender, EventArgs e)
{
ProcessButtonClick(tiLibDoc, btnLibDocs);
}
private void ppBtnCvrtToLibDoc_Click(object sender, EventArgs e)
{
// Double Check that this is not a step section, if so just return.
if (cbIsStepSection.Checked) return;
// If current section is library document, user selected to convert to non-library document. If
// this is the case, data from lib doc must be copied to new document and the section must point
// to id.
if (ppBtnCvrtToLibDoc.Text.IndexOf("Non") > 0) // convert to a 'non' library.
{
ItemInfo ii = ItemInfo.Get(_SectionConfig.MySection.ItemID);
DocumentInfo doclibinfo = ii.MyContent.MyEntry.MyDocument;
// if just one usage (this one), then just convert this to a non-library document. If there are more
// than one usage, make a copy so that the rest of the usages still point to the library document.
if (doclibinfo.DocumentEntryCount == 1)
_SectionConfig.MySection.MyContent.MyEntry.MyDocument.LibTitle = null;
else
{
// make new document with 'no' libtitle - use libtitle for the doc title. Then link this
// to the item...
Document doc = Document.MakeDocument(null, doclibinfo.DocContent, null, null);
_SectionConfig.MySection.MyContent.MyEntry.MyDocument = doc;
}
ppCmbxLibDoc.Items.Clear();
ppCmbxLibDoc.WatermarkEnabled = true;
ppBtnCvrtToLibDoc.Text = "Convert this to a Library Document";
superTooltip1.SetSuperTooltip(this.ppBtnCvrtToLibDoc, new DevComponents.DotNetBar.SuperTooltipInfo("Convert To Library Document button", "", "This button will convert the current section to a library document, allowing it t" +
"o be shared with other procedures.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, false, new System.Drawing.Size(250, 76)));
}
// If current section is not a library document, it is either a new section or the user selected the
// button to convert it to a library document. Check for this, if new, just attach to document.
else if (_SectionConfig.MySection.MyContent.MyEntry.MyDocument == null)
{
// if nothing was selected, give message & return
if (ppCmbxLibDoc.SelectedIndex == -1)
{
MessageBox.Show("Must select a library document");
return;
}
int docid = -1;
DocumentInfoList LibDocList = DocumentInfoList.GetLibraries(true);
for (int i = 0; i < LibDocList.Count; i++)
{
if (LibDocList[i].LibTitle == (string)ppCmbxLibDoc.Items[ppCmbxLibDoc.SelectedIndex])
{
docid = LibDocList[i].DocID;
break;
}
}
if (docid==-1)return;
using (Document dc = Document.Get(docid))
{
_SectionConfig.MySection.MyContent.MyEntry.MyDocument = dc;
}
}
else
// if converting to library document, just put 'text' into the 'LibTitle' property (that's what flags
// it to be a library document.
{
_SectionConfig.MySection.MyContent.MyEntry.MyDocument.LibTitle = _SectionConfig.MySection.MyContent.Text;
// Save now so that it shows up in the library document list in the ppcmbxlibdoc (combo box
// listing lib docs that is regenerated in ppCmbxLibDocFill)
_SectionConfig.MySection.MyContent.MyEntry.MyDocument.Save();
ppCmbxLibDocFill();
ppCmbxLibDoc.Enabled = false;
}
}
private void ppCmbxLibDoc_SelectedIndexChanged(object sender, EventArgs e)
{
if (_Initializing) return;
// first check if this is a 'new' section - if so, then just return.
if (_SectionConfig.MySection.MyContent.MyEntry.MyDocument == null) return;
// see if this was NOT a library document. If it is not a library document, ask the user if
// it should be linked, thus losing the original text/data.
if (!(_SectionConfig.MySection.MyContent.MyEntry.MyDocument.LibTitle != ""))
{
_SectionConfig.MySection.MyContent.MyEntry.MyDocument = Document.New();
if (ppCmbxLibDoc.SelectedIndex > -1)
{
if (MessageBox.Show("Linking to this library document will cause loss of data. Do you want to continue?", "Link", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
_DocumentToDelete = _SectionConfig.MySection.MyContent.MyEntry.MyDocument;
DocumentInfoList LibDocList = DocumentInfoList.GetLibraries(true);
_SectionConfig.MySection.MyContent.MyEntry.MyDocument = Document.Get(LibDocList[ppCmbxLibDoc.SelectedIndex].DocID);
}
else
{
ppCmbxLibDoc.SelectedIndex = -1;
}
}
}
else
{
// it already is a library document, just change usages...
DocumentInfoList LibDocList = DocumentInfoList.GetLibraries(true);
_SectionConfig.MySection.MyContent.MyEntry.MyDocument = Document.Get(LibDocList[ppCmbxLibDoc.SelectedIndex].DocID);
}
}
#endregion
#region View Settings tab
///
/// This is the View Settings button used on the button interface design
///
/// object
/// EventArgs
private void btnViewStngs_Click(object sender, EventArgs e)
{
ProcessButtonClick(tiViewStnns, btnViewStngs);
}
#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;
ppLblFormatDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefaultFmt.Visible;
}
///
/// 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;
btnFormat.Checked = false;
btnLibDocs.Checked = false;
btnViewStngs.Checked = false;
}
///
/// 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();
tcSectionProp.SelectedTab = tab;
button.Checked = true;
}
///
/// 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 ppSectNumberStpRTB_Enter(object sender, EventArgs e)
{
_MyStepTabRibbon.MyStepRTB = ppSectNumberStpRTB;
}
private void ppSectTitleStpRTB_Enter(object sender, EventArgs e)
{
_MyStepTabRibbon.MyStepRTB = ppSectTitleStpRTB;
}
}
}