protected virtual void Commit(ComponentGroup cGroup) { Contract.Assert(cGroup != null); var oldCGroup = ComponentGroups.SafeGet(cGroup.Offset); if (oldCGroup != null) { oldCGroup.Update(cGroup); try { OnComponentGroupModified?.Invoke(new SMComponentGroupEventArgs(Core.SM, cGroup)); } catch (Exception ex) { LogTo.Error(ex, "Error while signaling ComponentGroup Update"); } } else { ComponentGroups[cGroup.Offset] = cGroup; try { OnComponentGroupCreated?.Invoke(new SMComponentGroupEventArgs(Core.SM, cGroup)); } catch (Exception ex) { LogTo.Error(ex, "Error while signaling ComponentGroup Update"); } } }
public void RecurseAndReorderComponents(List <HomePageComponentGroup> initial) { HomePageComponentGroup c = initial.First(); if (ComponentGroups.Contains(c)) { int parentIndex = ComponentGroups.IndexOf(c); List <HomePageComponentGroup> children = initial.Where(x => x.ParentComponentId == c.ComponentId) .OrderBy(x => x.LineupPosition) .ToList(); children.ForEach(x => x.NestedLevel = c.NestedLevel + 1); ComponentGroups.InsertRange(parentIndex + 1, children); foreach (HomePageComponentGroup child in children) { initial.Remove(child); } if (initial.Count > 0) { RecurseAndReorderComponents(initial); } } else { HomePageComponentGroup parent = ComponentGroups.FirstOrDefault(x => x.ComponentId == c.ParentComponentId); if (parent != null) { int parentIndex = ComponentGroups.IndexOf(parent); List <HomePageComponentGroup> children = initial.Where(x => x.ParentComponentId == parent.ComponentId) .OrderBy(x => x.LineupPosition) .ToList(); children.ForEach(x => x.NestedLevel = parent.NestedLevel + 1); ComponentGroups.InsertRange(parentIndex + 1, children); foreach (HomePageComponentGroup child in children) { initial.Remove(child); } if (initial.Count > 0) { RecurseAndReorderComponents(initial); } } else { c.NestedLevel = 0; ComponentGroups.Add(c); initial.Remove(c); if (initial.Count > 0) { RecurseAndReorderComponents(initial); } } } }
private WixComponentGroupNode ForceComponentGroup([NotNull] string directoryId) { Contract.Requires(directoryId != null); return(ComponentGroups.FirstOrDefault(group => group.Directory == directoryId) ?? _sourceFiles.FirstOrDefault()?.AddComponentGroup(directoryId)); }
/// <inheritdoc /> public IComponentGroup this[int offset] => ComponentGroups.SafeGet(offset);
/// <inheritdoc /> protected override void Cleanup() { ComponentGroups.Clear(); CompSCA.Clear(); }