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); }
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); }
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); }
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; }
public CommandBarGroupDefinition GetPreviousGroup(CommandBarGroupDefinition group) { return(group.Parent.ContainedGroups.OrderBy(x => x.SortOrder) .LastOrDefault(x => x.SortOrder < group.SortOrder)); }
public CommandBarGroupDefinition GetNextGroup(CommandBarGroupDefinition group) { return(group.Parent.ContainedGroups.OrderBy(x => x.SortOrder) .FirstOrDefault(x => x.SortOrder > group.SortOrder)); }