Added code to support conversion to text of invalid referenced objects

Added code to support the searching for transitions
Added code to support refreshing of referenced objects and transitions
Added interface code to support refreshing of referenced objects and transitions
Added code to store the xml representation of the approved version of the procedure in the database for future support of temp mods, etc.
This commit is contained in:
Rich
2015-02-05 03:56:30 +00:00
parent 34bfdba7b2
commit 4e1eff4c4f
7 changed files with 607 additions and 30 deletions

View File

@@ -143,7 +143,81 @@ namespace Volian.Controls.Library
rbtnSrchTxt.Checked = true;
gpSrchAnnoText.Enabled = true;
cmbResultsStyle.Enabled = false;
tabSearchTypes.SelectedTabChanged += new TabStrip.SelectedTabChangedEventHandler(tabSearchTypes_SelectedTabChanged);
}
void tabSearchTypes_SelectedTabChanged(object sender, TabStripTabChangedEventArgs e)
{
if (e.NewTab == tabTranSearch)
{
//setup transition format versions
if (myFormatVersionList == null)
{
myFormatVersionList = FormatVersionList.GetFormatVersions();
cbxTranVersion.DisplayMember = "Title";
int lastLastFormatID = 0;
foreach (FormatVersion fv in myFormatVersionList)
{
if (fv.FormatID != lastLastFormatID)
{
cbxTranVersion.Items.Add(fv);
lastLastFormatID = fv.FormatID;
}
}
cbxTranVersion.SelectedIndexChanged += new EventHandler(cbxTranVersion_SelectedIndexChanged);
cbxTranFormat.SelectedIndexChanged += new EventHandler(cbxTranFormat_SelectedIndexChanged);
}
}
}
void cbxTranFormat_SelectedIndexChanged(object sender, EventArgs e)
{
#region 1st cut
//if (cbxTranFormat.SelectedItem.ToString() == "All")
//{
// cbxTranCategory.Items.Clear();
// cbxTranCategory.Items.Add("All");
// cbxTranCategory.Items.Add("Internal");
// cbxTranCategory.Items.Add("External");
// cbxTranCategory.Items.Add("Outside");
// cbxTranCategory.SelectedIndex = 0;
//}
//else if (cbxTranFormat.SelectedItem.ToString().Contains("{Proc"))
//{
// cbxTranCategory.Items.Clear();
// cbxTranCategory.Items.Add("All");
// cbxTranCategory.Items.Add("External");
// cbxTranCategory.Items.Add("Outside");
// cbxTranCategory.SelectedIndex = 0;
//}
//else
//{
// cbxTranCategory.Items.Clear();
// cbxTranCategory.Items.Add("Internal");
// cbxTranCategory.SelectedIndex = 0;
//}
#endregion
#region 2nd cut
if (cbxTranFormat.SelectedItem.ToString().Contains("{Proc"))
{
cbxTranCategory.Items.Clear();
cbxTranCategory.Items.Add("All");
cbxTranCategory.Items.Add("External");
cbxTranCategory.Items.Add("Outside");
cbxTranCategory.SelectedIndex = 0;
}
else
{
cbxTranCategory.Items.Clear();
cbxTranCategory.Items.Add("All");
cbxTranCategory.Items.Add("Internal");
cbxTranCategory.Items.Add("External");
cbxTranCategory.Items.Add("Outside");
cbxTranCategory.SelectedIndex = 0;
}
#endregion
}
FormatVersionList myFormatVersionList;
private void LoadSearchTextListBox()
{
// Setup SearchText Combo
@@ -162,6 +236,39 @@ namespace Volian.Controls.Library
}
}
void cbxTranVersion_SelectedIndexChanged(object sender, EventArgs e)
{
string versionList = string.Empty;
string sep = string.Empty;
FormatVersion sfv = cbxTranVersion.SelectedItem as FormatVersion;
foreach (FormatVersion fv in myFormatVersionList)
{
if (fv.FormatID == sfv.FormatID)
{
versionList += sep + fv.VersionID;
sep = ",";
}
}
cbxTranVersion.Tag = versionList;
cbxTranFormatFillIn(versionList);
List<DevComponents.AdvTree.Node> uncheckNodes = new List<Node>();
foreach (DevComponents.AdvTree.Node n in dicSelectedDocVersionNodes.Keys)
{
DocVersionInfo dvi = (DocVersionInfo)n.Tag;
if (!versionList.Contains(dvi.VersionID.ToString()))
uncheckNodes.Add(n);
else
n.Enabled = true;
}
while (uncheckNodes.Count > 0)
{
uncheckNodes[0].Checked = false;
uncheckNodes[0].Enabled = false;
uncheckNodes.Remove(uncheckNodes[0]);
}
lstCheckedDocVersions.Clear();
}
private DevComponents.AdvTree.Node NewAdvTreeNode(string nodetext, bool selectable, bool chxbxvisable)
{
DevComponents.AdvTree.Node newnode;
@@ -344,7 +451,7 @@ namespace Volian.Controls.Library
// }
// vlnStackTrace.ShowStackLocal(e.Node.Text,1,10);
//}
private Dictionary<DevComponents.AdvTree.Node, bool> dicSelectedDocVersionNodes = new Dictionary<DevComponents.AdvTree.Node, bool>();
void advTreeProcSets_BeforeExpand(object sender, DevComponents.AdvTree.AdvTreeNodeCancelEventArgs e)
{
DevComponents.AdvTree.Node par = e.Node;
@@ -387,6 +494,9 @@ namespace Volian.Controls.Library
newnode.CheckBoxStyle = eCheckBoxStyle.CheckBox;
newnode.CheckBoxThreeState = false;
newnode.CheckBoxVisible = true;
if (!dicSelectedDocVersionNodes.ContainsKey(newnode)) dicSelectedDocVersionNodes.Add(newnode, false);
newnode.Enabled = cbxTranVersion.Tag != null ? cbxTranVersion.Tag.ToString().Contains(dv.VersionID.ToString()) : false;
par.Nodes.Add(newnode);
//}
}
@@ -736,6 +846,7 @@ namespace Volian.Controls.Library
btnPrnSrchRslts.Enabled = true;
btnClearSearchResults.Enabled = true;
btnCopySearchResults.Enabled = true;
btnSaveSearchResults.Enabled = true;
cmbResultsStyle.Enabled = true;
}
else
@@ -743,6 +854,7 @@ namespace Volian.Controls.Library
btnPrnSrchRslts.Enabled = false;
btnClearSearchResults.Enabled = false;
btnCopySearchResults.Enabled = false;
btnSaveSearchResults.Enabled = false;
cmbResultsStyle.Enabled = false;
}
@@ -1113,6 +1225,24 @@ namespace Volian.Controls.Library
cmbResultsStyleIndex = 3; // display step text in results
}
}
else if (tabSearchTypes.SelectedTab == tabSearchTypes.Tabs[3]) //Transition Search
{
ReportTitle = string.Format("Search For Transitions: Transition Type: {0}, Transition Category: {1}", cbxTranFormat.SelectedItem, cbxTranCategory.SelectedItem);
string docVersionList = string.Empty;
if (lstCheckedDocVersions.Count == 0)
docVersionList = cbxTranVersion.Tag.ToString();
else
{
string sep = string.Empty;
foreach (DocVersionInfo dvi in lstCheckedDocVersions)
{
docVersionList += sep + dvi.VersionID.ToString();
sep = ",";
}
}
SearchResults = ItemInfoList.GetListFromTransitionSearch(docVersionList, cbxTranFormat.SelectedIndex - 1, cbxTranCategory.SelectedItem.ToString());
cmbResultsStyleIndex = 3; // display step text in results
}
AddMessageForEmptyAnnotations();
if (cmbResultsStyleIndex == 3 && cmbResultsStyle.Items.Count == 3) cmbResultsStyleIndex--;
cmbResultsStyle.SelectedIndex = cmbResultsStyleIndex;
@@ -1246,6 +1376,7 @@ namespace Volian.Controls.Library
private void advTreeProcSets_AfterCheck(object sender, DevComponents.AdvTree.AdvTreeCellEventArgs e)
{
DevComponents.AdvTree.Node n = advTreeProcSets.SelectedNode;
dicSelectedDocVersionNodes[n] = n.Checked;
if (n.Checked)
{
n.Style = DevComponents.AdvTree.NodeStyles.Apple;
@@ -1292,6 +1423,29 @@ namespace Volian.Controls.Library
buildSetToSearchPanelTitle();
}
private void cbxTranFormatFillIn(string vid)
{
vid = vid.IndexOf(",") < 0 ? vid : vid.Substring(0, cbxTranVersion.Tag.ToString().IndexOf(","));
DocVersionInfo dvi = DocVersionInfo.Get(int.Parse(vid));
TransTypeList ttl = dvi.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList;
cbxTranFormat.Items.Clear();
cbxTranFormat.Items.Add("All");
for (int i = 0; i < ttl.Count; i++)
cbxTranFormat.Items.Add(new TransItem(ttl[i].TransMenu.Replace("?.", ""), ttl[i].TransFormat.Replace("?.", "")));
cbxTranFormat.SelectedIndex = 0;
cbxTranCategory.Items.Clear();
cbxTranCategory.Items.Add("All");
cbxTranCategory.Items.Add("Internal");
cbxTranCategory.Items.Add("External");
cbxTranCategory.Items.Add("Outside");
cbxTranCategory.SelectedIndex = 0;
/*
groupPanelTranFmt.Style.BackColor = (_CurTrans == null && _TranFmtIndx==0) ? Color.Yellow : Color.Orange;
E_TransUI etm = (E_TransUI)_CurItemFrom.ActiveFormat.PlantFormat.FormatData.TransData.TransTypeList[_TranFmtIndx].TransUI;
_DoingRange = (etm & E_TransUI.StepLast) == E_TransUI.StepLast;
*/
}
private void xpSetToSearch_ExpandedChanged(object sender, ExpandedChangeEventArgs e)
{
@@ -1633,6 +1787,204 @@ namespace Volian.Controls.Library
_SearchResults = null;
DisplayResults();
}
private void btnLoadSearchResults_Click(object sender, System.EventArgs e)
{
if (ofdSearchResults.ShowDialog(this) == DialogResult.OK)
{
lbSrchResults.DataSource = null;
lbSrchResults.Items.Clear();
toolTip1.SetToolTip(lbSrchResults, null);
Cursor = Cursors.WaitCursor;
SearchResults = ItemInfoList.GetByContentID(0);
int k = ofdSearchResults.FilterIndex;
switch (k)
{
case 1: //xml
{
System.Xml.XmlDocument xd = new System.Xml.XmlDocument();
xd.Load(ofdSearchResults.FileName);
int sti = int.Parse(xd.SelectSingleNode("search/criteria/@index").InnerText);
switch (sti)
{
case 0: //text
{
cbxTextSearchText.Text = xd.SelectSingleNode("search/criteria/@text").InnerText;
cbxCaseSensitive.Checked = bool.Parse(xd.SelectSingleNode("search/criteria/@case").InnerText);
cbxIncROTextSrch.Checked = bool.Parse(xd.SelectSingleNode("search/criteria/@ro").InnerText);
tabSearchTypes.SelectedTab = tabStepTypeSearch;
//cmbResultsStyle.SelectedIndex = int.Parse(xd.SelectSingleNode("search/results/@style").InnerText);
cmbResultsStyle.Text = xd.SelectSingleNode("search/results/@style").InnerText;
System.Xml.XmlNodeList nl = xd.SelectNodes("search/results/item");
foreach (System.Xml.XmlNode nd in nl)
{
int itemID = int.Parse(nd.Attributes.GetNamedItem("id").InnerText);
ItemInfo ii = ItemInfo.Get(itemID);
SearchResults.AddItemInfo(ii);
}
break;
}
case 1: //annotation
{
cbxAnnoTypes.Text = xd.SelectSingleNode("search/criteria/@type").InnerText;
cbxTextSearchAnnotation.Text = xd.SelectSingleNode("search/criteria/@text").InnerText;
cbxCaseSensitiveAnnoText.Checked = bool.Parse(xd.SelectSingleNode("search/criteria/@case").InnerText);
tabSearchTypes.SelectedTab = tabAnnotationSearch;
cmbResultsStyle.Text = xd.SelectSingleNode("search/results/@style").InnerText;
System.Xml.XmlNodeList nl = xd.SelectNodes("search/results/item");
foreach (System.Xml.XmlNode nd in nl)
{
int itemID = int.Parse(nd.Attributes.GetNamedItem("id").InnerText);
ItemInfo ii = ItemInfo.Get(itemID);
SearchResults.AddItemInfo(ii);
}
break;
}
case 2: //referenced object
{
break;
}
}
break;
}
case 2: //csv
{
break;
}
case 3: //tsv
{
break;
}
case 4: //bsf
{
break;
}
}
DisplayResults();
Cursor = Cursors.Default;
}
}
private void btnSaveSearchResults_Click(object sender, System.EventArgs e)
{
ICollection<ItemInfo> myList = lbSrchResults.DataSource as ICollection<ItemInfo>;
if (sfdSearchResults.ShowDialog(this) == DialogResult.OK)
{
int k = sfdSearchResults.FilterIndex;
switch (k)
{
case 1: //xml
{
System.Xml.XmlDocument xd = new System.Xml.XmlDocument();
System.Xml.XmlElement xe = xd.CreateElement("search");
xd.AppendChild(xe);
int sti = tabSearchTypes.SelectedTabIndex;
switch (sti)
{
case 0: //text
{
xe = xd.CreateElement("criteria");
System.Xml.XmlAttribute xa = xd.CreateAttribute("index");
xa.InnerText = sti.ToString();
xe.Attributes.SetNamedItem(xa);
xa = xd.CreateAttribute("text");
xa.InnerText = cbxTextSearchText.Text;
xe.Attributes.SetNamedItem(xa);
xa = xd.CreateAttribute("case");
xa.InnerText = cbxCaseSensitive.Checked.ToString();
xe.Attributes.SetNamedItem(xa);
xa = xd.CreateAttribute("ro");
xa.InnerText = cbxIncROTextSrch.Checked.ToString();
xe.Attributes.SetNamedItem(xa);
xd.DocumentElement.AppendChild(xe);
xe = xd.CreateElement("results");
xa = xd.CreateAttribute("style");
//xa.InnerText = cmbResultsStyle.SelectedIndex.ToString();
xa.InnerText = cmbResultsStyle.Text;
xe.Attributes.SetNamedItem(xa);
foreach (ItemInfo ii in myList)
{
System.Xml.XmlElement xee = xd.CreateElement("item");
xa = xd.CreateAttribute("id");
xa.InnerText = ii.ItemID.ToString();
xee.Attributes.SetNamedItem(xa);
xe.AppendChild(xee);
}
xd.DocumentElement.AppendChild(xe);
xd.Save(sfdSearchResults.FileName);
break;
}
case 1: //annotation
{
xe = xd.CreateElement("criteria");
System.Xml.XmlAttribute xa = xd.CreateAttribute("index");
xa.InnerText = sti.ToString();
xe.Attributes.SetNamedItem(xa);
xa = xd.CreateAttribute("type");
xa.InnerText = cbxAnnoTypes.Text;
xe.Attributes.SetNamedItem(xa);
xa = xd.CreateAttribute("text");
xa.InnerText = cbxTextSearchAnnotation.Text;
xe.Attributes.SetNamedItem(xa);
xa = xd.CreateAttribute("case");
xa.InnerText = cbxCaseSensitiveAnnoText.Checked.ToString();
xe.Attributes.SetNamedItem(xa);
xd.DocumentElement.AppendChild(xe);
xe = xd.CreateElement("results");
xa = xd.CreateAttribute("style");
//xa.InnerText = cmbResultsStyle.SelectedIndex.ToString();
xa.InnerText = cmbResultsStyle.Text;
xe.Attributes.SetNamedItem(xa);
foreach (ItemInfo ii in myList)
{
System.Xml.XmlElement xee = xd.CreateElement("item");
xa = xd.CreateAttribute("id");
xa.InnerText = ii.ItemID.ToString();
xee.Attributes.SetNamedItem(xa);
xe.AppendChild(xee);
}
xd.DocumentElement.AppendChild(xe);
xd.Save(sfdSearchResults.FileName);
break;
}
case 2: //referenced object
{
break;
}
}
break;
}
case 2: //csv
{
break;
}
case 3: //tsv
{
break;
}
case 4: //bsf
{
break;
}
}
//string fn = sfdSearchResults.FileName;
//StringBuilder sb = new StringBuilder();
//sb.Append("\"Location\"\t\"Type\"\t\"Text\"\t\"High-Level\"\t\"Annotations\"");
//foreach (ItemInfo myItem in myList)
//{
// sb.Append(string.Format("\r\n\"{0}\"\t\"{1}\"\t\"{2}\"\t\"{3}\"", myItem.ShortPath, myItem.ToolTip,
// myItem.DisplayText, !myItem.IsSection && !myItem.IsHigh ? (myItem.MyHLS == null ? "" : myItem.MyHLS.DisplayText) : ""));
// if (myItem.ItemAnnotationCount > 0)
// foreach (AnnotationInfo myAnnotation in myItem.ItemAnnotations)
// sb.Append(string.Format("\t\"{0}\"", myAnnotation.SearchText));
//}
//Clipboard.Clear();
//Clipboard.SetText(sb.ToString());
MessageBox.Show("Results Copied to Clipboard", "Copy Results", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void btnCopySearchResults_Click(object sender, EventArgs e)
{
ICollection<ItemInfo> myList = lbSrchResults.DataSource as ICollection<ItemInfo>;