private void ApplyExchangeRequirement(ToolStripButton button, DocExchangeApplicabilityEnum applicability, DocExchangeRequirementEnum requirement)
{
if (m_loadreq)
return;
// if already checked, then reset
if (button.Checked)
{
requirement = DocExchangeRequirementEnum.NotRelevant;
}
// commit changes
DocTemplateUsage docUsage = (DocTemplateUsage)this.m_target;
foreach (ListViewItem lvi in this.listViewExchange.SelectedItems)
{
DocExchangeDefinition docExchange = (DocExchangeDefinition)lvi.Tag;
// find existing
bool exists = false;
foreach (DocExchangeItem docItem in docUsage.Exchanges)
{
if (docItem.Exchange == docExchange && docItem.Applicability == applicability)
{
// found it
if (requirement == DocExchangeRequirementEnum.NotRelevant)
{
// delete item (reduce size)
docUsage.Exchanges.Remove(docItem);
docItem.Delete();
}
else
{
// update item
docItem.Requirement = requirement;
}
exists = true;
break; // perf, and collection may have been modified
}
}
if (!exists)
{
DocExchangeItem docItem = new DocExchangeItem();
docItem.Exchange = docExchange;
docItem.Applicability = applicability;
docItem.Requirement = requirement;
docUsage.Exchanges.Add(docItem);
}
// update list
if (applicability == DocExchangeApplicabilityEnum.Import)
{
lvi.SubItems[1].Text = requirement.ToString();
}
else if (applicability == DocExchangeApplicabilityEnum.Export)
{
lvi.SubItems[2].Text = requirement.ToString();
}
// force update of buttons
listViewExchange_SelectedIndexChanged(this, EventArgs.Empty);
}
}