예제 #1
0
        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");
                }
            }
        }
예제 #2
0
        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);
                    }
                }
            }
        }
예제 #3
0
        private WixComponentGroupNode ForceComponentGroup([NotNull] string directoryId)
        {
            Contract.Requires(directoryId != null);

            return(ComponentGroups.FirstOrDefault(group => group.Directory == directoryId) ?? _sourceFiles.FirstOrDefault()?.AddComponentGroup(directoryId));
        }
예제 #4
0
 /// <inheritdoc />
 public IComponentGroup this[int offset] => ComponentGroups.SafeGet(offset);
예제 #5
0
 /// <inheritdoc />
 protected override void Cleanup()
 {
     ComponentGroups.Clear();
     CompSCA.Clear();
 }