private void ApplyExchangeRequirement(DocExchangeApplicabilityEnum applicability, DocExchangeRequirementEnum requirement) { if (m_loadreq) return; // 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(); } } }
private void LoadExchangeRequirement(RadioButton button, DocExchangeApplicabilityEnum applicability, DocExchangeRequirementEnum requirement) { DocTemplateUsage docUsage = (DocTemplateUsage)this.m_target; bool? common = null; // the common value bool varies = false; // whether value varies among objects foreach (ListViewItem lvi in this.listViewExchange.SelectedItems) { DocExchangeDefinition docDef = (DocExchangeDefinition)lvi.Tag; // find exchange on usage foreach (DocExchangeItem docItem in docUsage.Exchanges) { if (docItem.Exchange == docDef && docItem.Applicability == applicability) { bool eachval = (docItem.Requirement == requirement); if (common == null) { common = eachval; } else if (common != eachval) { varies = true; } } } } this.m_loadreq = true; button.Checked = (common == true && !varies); this.m_loadreq = false; }