private void OnWeaknessMitigationAdded(IWeaknessMitigationsContainer container, IWeaknessMitigation mitigation) { if (container is IWeakness weakness) { var filterSpecial = EnumExtensions.GetEnumValue <WeaknessListFilter>((string)_specialFilter.SelectedItem); if (IsSelected(weakness, _filter.Text, filterSpecial)) { var row = GetRow(weakness); if (row == null) { row = AddGridRow(weakness, _grid.PrimaryGrid); } var scenarioPanel = row.Rows.OfType <GridPanel>() .FirstOrDefault(x => string.CompareOrdinal(x.Name, "Mitigations") == 0); if (scenarioPanel != null) { AddGridRow(mitigation, scenarioPanel); } else { scenarioPanel = CreateMitigationsPanel(weakness); if (scenarioPanel != null) { row.Rows.Add(scenarioPanel); } } UpdateMitigationLevel(weakness, row); } } }
private void OnWeaknessMitigationRemoved(IWeaknessMitigationsContainer container, IWeaknessMitigation mitigation) { if (container is IWeakness weakness) { var row = GetRow(weakness); var panel = row?.Rows.OfType <GridPanel>().FirstOrDefault(x => string.CompareOrdinal(x.Name, "Mitigations") == 0); var scenarioRow = panel?.Rows.OfType <GridRow>() .FirstOrDefault(x => (x.Tag is IWeaknessMitigation weaknessMitigation) && weaknessMitigation == mitigation); if (scenarioRow != null) { panel.Rows.Remove(scenarioRow); if (panel.Rows.Count == 0) { row.Rows.Remove(panel); } UpdateMitigationLevel(weakness, row); } } }