IfcDoc.CtlProperties.ApplyExchangeRequirement C# (CSharp) Method

ApplyExchangeRequirement() private method

private ApplyExchangeRequirement ( ToolStripButton button, DocExchangeApplicabilityEnum applicability, DocExchangeRequirementEnum requirement ) : void
button ToolStripButton
applicability DocExchangeApplicabilityEnum
requirement DocExchangeRequirementEnum
return void
        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);
            }
        }
CtlProperties