Beispiel #1
0
        public virtual void AddItemDefinition(CommandBarItemDefinition definition, CommandBarDefinitionBase parent,
                                              bool addAboveSeparator)
        {
            //Apparently the current parent is empty so we need to add a group first
            if (definition.Group == null)
            {
                var group = new CommandBarGroupDefinition(parent, uint.MinValue);
                definition.Group = group;
                DefinitionHost.ItemGroupDefinitions.AddSorted(group, new SortOrderComparer <CommandBarDefinitionBase>());
            }

            if (!addAboveSeparator)
            {
                AdjustItemsAfterItemInsertedInGroup(definition);
            }
            DefinitionHost.ItemDefinitions.AddSorted(definition, new SortOrderComparer <CommandBarDefinitionBase>());
            RemoveGapsInGroupSortOrder(definition.Group.Parent);
            BuildLogical(definition);
        }
Beispiel #2
0
        public void AddGroupAt(CommandBarItemDefinition startingDefinition)
        {
            var parent = startingDefinition.Group.Parent;

            var itemsToRegroup = startingDefinition.Group.Items
                                 .Where(x => x.SortOrder >= startingDefinition.SortOrder);

            var itemsToRegroupInOldGroup = startingDefinition.Group.Items
                                           .Where(x => x.SortOrder < startingDefinition.SortOrder);

            var newGroupSortOrder = startingDefinition.Group.SortOrder + 1;

            var groupsToResort = parent.ContainedGroups
                                 .Where(x => x.SortOrder > startingDefinition.Group.SortOrder);

            var i = newGroupSortOrder + 1;

            foreach (var groupDefinition in groupsToResort)
            {
                groupDefinition.SortOrder = i++;
            }

            var newGroup = new CommandBarGroupDefinition(parent, newGroupSortOrder);

            uint j = 0;

            foreach (var itemDefinition in itemsToRegroup.ToList())
            {
                itemDefinition.Group     = newGroup;
                itemDefinition.SortOrder = j++;
            }

            uint k = 0;

            foreach (var itemDefinition in itemsToRegroupInOldGroup)
            {
                itemDefinition.SortOrder = k++;
            }

            DefinitionHost.ItemGroupDefinitions.AddSorted(newGroup, new SortOrderComparer <CommandBarGroupDefinition>());
            RemoveGapsInGroupSortOrder(parent);
            BuildLogical(parent);
        }
Beispiel #3
0
        public void DeleteGroup(CommandBarGroupDefinition group, AppendTo option = AppendTo.Next)
        {
            var definitionsInCurrentGroup = group.Items;
            var newGroup = option == AppendTo.Next ? GetNextGroup(group) : GetPreviousGroup(group);
            var definitionsInNewGroup = newGroup.Items;
            var parent = group.Parent;

            uint newSortorder = 0;

            if (option == AppendTo.Next)
            {
                newSortorder = group.LastItem?.SortOrder ?? 0;


                //Add old items after the new inserted ones
                foreach (var itemDefinition in definitionsInNewGroup.ToList())
                {
                    itemDefinition.SortOrder = newSortorder++;
                }

                foreach (var itemDefinition in definitionsInCurrentGroup.ToList())
                {
                    itemDefinition.Group = newGroup;
                }
            }
            else
            {
                foreach (var itemDefinition in definitionsInNewGroup.ToList())
                {
                    itemDefinition.SortOrder = newSortorder++;
                }

                foreach (var itemDefinition in definitionsInCurrentGroup.ToList())
                {
                    itemDefinition.Group     = newGroup;
                    itemDefinition.SortOrder = newSortorder++;
                }
            }
            DefinitionHost.ItemGroupDefinitions.Remove(group);
            RemoveGapsInGroupSortOrder(parent);
            BuildLogical(parent);
        }
Beispiel #4
0
 public MenuDefinition(Guid id, CommandBarGroupDefinition group, uint sortOrder, string text, bool isCustom = false,
                       bool isCustomizable = true)
     : base(text, sortOrder, group, new MenuHeaderCommandDefinition(), true, false, isCustom, isCustomizable)
 {
     Id = id;
 }
Beispiel #5
0
 public CommandBarGroupDefinition GetPreviousGroup(CommandBarGroupDefinition group)
 {
     return(group.Parent.ContainedGroups.OrderBy(x => x.SortOrder)
            .LastOrDefault(x => x.SortOrder < group.SortOrder));
 }
Beispiel #6
0
 public CommandBarGroupDefinition GetNextGroup(CommandBarGroupDefinition group)
 {
     return(group.Parent.ContainedGroups.OrderBy(x => x.SortOrder)
            .FirstOrDefault(x => x.SortOrder > group.SortOrder));
 }