using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; using System.Text.RegularExpressions; using System.IO; using AT.STO.UI.Win; using VEPROMS.CSLA.Library; namespace Volian.Controls.Library { public partial class DisplayLibDocs : UserControl { #region Properties private DocumentInfo _CurLibDoc; public DocumentInfo CurLibDoc { get { return _CurLibDoc; } set { _CurLibDoc = value; } } // selected index into listBoxLibDocs... private int _SelectedLibDoc = -1; private DocumentInfoList _LibDocList; public DocumentInfoList LibDocList { get { return _LibDocList; } set { _LibDocList = value; } } private Color saveGroupPanelUsages; #endregion #region Constructors public DisplayLibDocs() { InitializeComponent(); btnOpenLibDoc.Enabled = false; btnDelLibDoc.Enabled = false; btnPrint.Enabled = false; saveGroupPanelUsages = groupPanelUsages.Style.BackColor; } DisplayTabControl _DisplayTabControl; #endregion #region LoadControlData private bool _InitializingLibDocList; // used? see if selectionchanged event (still coding) public void LibDocListFillIn(DisplayTabControl tc) { _InitializingLibDocList = true; listBoxLibDocs.Items.Clear(); tbComment.Clear(); tbName.Clear(); groupPanelLibDocs.Style.BackColor = Color.Yellow; btnSave.Enabled = false; btnCancel.Enabled = false; LibDocList = DocumentInfoList.GetLibraries(true); for (int i = 0; i < LibDocList.Count; i++) listBoxLibDocs.Items.Add(((LibDocList[i].DocumentEntries == null || LibDocList[i].DocumentEntries.Count == 0) ? "0 " : LibDocList[i].DocumentEntries.Count.ToString() + " ") + LibDocList[i].DocumentTitle); // + LibDocList[i].DocumentEntries.Count); _DisplayTabControl = tc; listBoxUsages.Items.Clear(); _InitializingLibDocList = false; } public void SetSelectedLibDoc() { if (_SelectedLibDoc >= 0) { if (_SelectedLibDoc > listBoxLibDocs.Items.Count) return; listBoxLibDocs.SelectedIndex = _SelectedLibDoc; } } #endregion #region Events public event DisplayLibDocEvent PrintRequest; private void OnPrintRequest(DisplayLibDocEventArgs args) { if (PrintRequest != null) PrintRequest(this, args); } private void listBoxLibDocs_Click(object sender, EventArgs e) { UpdateUsageList(); } public void RefreshLibDocPanel(DisplayTabControl tc) { int cursel = listBoxLibDocs.SelectedIndex; LibDocListFillIn(tc); listBoxLibDocs.SelectedIndex = cursel; UpdateUsageList(); } private void UpdateUsageList() { if (listBoxLibDocs.SelectedIndex == -1) return; groupPanelLibDocs.Style.BackColor = Color.Orange; _SelectedLibDoc = listBoxLibDocs.SelectedIndex; listBoxUsages.Items.Clear(); tbComment.Clear(); tbName.Clear(); btnSave.Enabled = false; btnCancel.Enabled = false; _InitializingLibDocList = true; // need this so textchanged code doesn't turn save/cancel buttons on. tbName.Text = LibDocList[_SelectedLibDoc].LibTitle; DocumentConfig dc = new DocumentConfig(LibDocList[_SelectedLibDoc]); tbComment.Text = dc.LibDoc_Comment; _InitializingLibDocList = false; // If there are no usages, then enable delete & open button (open for docs with usages occurs // from usage list), otherwise disable buttons & list usages DocumentInfo dicnt = LibDocList[_SelectedLibDoc]; ItemInfoList iil = dicnt.LibraryDocumentUsageList; groupPanelUsages.Style.BackColor = dicnt.LibraryDocumentUsageList == null || dicnt.LibraryDocumentUsageList.Count == 0 ? this.saveGroupPanelUsages : Color.LightGreen; if (iil == null) { btnDelLibDoc.Enabled = true; btnOpenLibDoc.Enabled = true; return; } // Put the usages in the usage list for the selected library document. btnDelLibDoc.Enabled = false; btnOpenLibDoc.Enabled = false; foreach (ItemInfo ii in dicnt.LibraryDocumentUsageList) { if(ii.MyDocVersion!=null) listBoxUsages.Items.Add(ii.MyProcedure.ToString() + " - " + ii.MyContent.Number + " " + ii.MyContent.Text); } btnPrint.Enabled = listBoxUsages.Items.Count > 0 ? true : false; } private void btnDelLibDoc_Click(object sender, EventArgs e) { DocumentInfo di = LibDocList[_SelectedLibDoc]; try { Document.Delete(di.DocID); } catch (Exception ex) { Console.WriteLine("error deleting doc = " + ex.Message); } LibDocListFillIn(_DisplayTabControl); } private void btnSave_Click(object sender, EventArgs e) { bool chg = false; DocumentInfo di = LibDocList[_SelectedLibDoc]; Document doc = Document.Get(di.DocID); if (tbName.Text != LibDocList[_SelectedLibDoc].LibTitle) { chg = true; doc.LibTitle = tbName.Text; } DocumentConfig dc = new DocumentConfig(LibDocList[_SelectedLibDoc]); if (tbComment.Text != dc.LibDoc_Comment) { chg = true; dc.LibDoc_Comment = tbComment.Text; doc.Config = dc.ToString(); } if (chg == true) { doc.Save(); int cursel = _SelectedLibDoc; LibDocListFillIn(_DisplayTabControl); listBoxLibDocs.SelectedIndex = cursel; UpdateUsageList(); } } private void btnCancel_Click(object sender, EventArgs e) { DocumentInfo di = LibDocList[_SelectedLibDoc]; Document doc = Document.Get(di.DocID); tbName.Text = doc.LibTitle; DocumentConfig dc = new DocumentConfig(LibDocList[_SelectedLibDoc]); tbComment.Text = dc.LibDoc_Comment; btnSave.Enabled = false; btnCancel.Enabled = false; } private void btnOpenLibDoc_Click(object sender, EventArgs e) { DocumentInfo di = LibDocList[_SelectedLibDoc]; _DisplayTabControl.OpenDSOTabPage(di); } private void tbName_TextChanged(object sender, EventArgs e) { if (_InitializingLibDocList) return; btnSave.Enabled = true; btnCancel.Enabled = true; } private void tbComment_TextChanged(object sender, EventArgs e) { if (_InitializingLibDocList) return; btnSave.Enabled = true; btnCancel.Enabled = true; } private void btnImpLibDoc_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.InitialDirectory = "c:\\"; openFileDialog1.Filter = "Word files (*.doc;*.rtf)|*.doc;*.rtf|All files (*.*)|*.*"; openFileDialog1.FilterIndex = 0; openFileDialog1.RestoreDirectory = true; if (openFileDialog1.ShowDialog() == DialogResult.OK) { int done = 0; int ntry = 0; while (done == 0 && ntry < 4) { ntry++; done = SaveTheDoc(openFileDialog1.FileName, openFileDialog1.SafeFileName.Substring(0,openFileDialog1.SafeFileName.LastIndexOf("."))); } if (done > 0) { LibDocListFillIn(_DisplayTabControl); // set selectedindex to the imported doc... int indx = 0; DocumentInfoList dil = DocumentInfoList.GetLibraries(true); for(int i = 0; i= 0) { ItemInfo ii = di.LibraryDocumentUsageList[listBoxUsages.SelectedIndex]; if (ii.MyDocVersion == null) MessageBox.Show("This usage is not connected properly", "Disconnected Data", MessageBoxButtons.OK, MessageBoxIcon.Warning); else _DisplayTabControl.OpenItem(ii); } _ProcessingSelectedValueChanged = false; } } #endregion private void btnPrint_Click(object sender, EventArgs e) { OnPrintRequest(new DisplayLibDocEventArgs("Library Document Usage",LibDocList)); } } public class DisplayLibDocEventArgs { private string _ReportTitle; public string ReportTitle { get { return _ReportTitle; } set { _ReportTitle = value; } } private DocumentInfoList _libDocList; public DocumentInfoList LibDocList { get { return _libDocList; } set { _libDocList = value; } } //private string _SearchString = null; //public string SearchString //{ // get { return _SearchString; } // set { _SearchString = value; } //} //private string _TypesSelected; //public string TypesSelected //{ // get { return _TypesSelected; } // set { _TypesSelected = value; } //} //private ICollection _MyItemInfoList; //public ICollection MyItemInfoList //{ // get { return _MyItemInfoList; } // set { _MyItemInfoList = value; } //} public DisplayLibDocEventArgs(string reportTitle, DocumentInfoList libDocList) { _ReportTitle = reportTitle; _libDocList = libDocList; } } public delegate void DisplayLibDocEvent(object sender, DisplayLibDocEventArgs args); }