public void UnlockElementLockGroup(TimelineElement element) { if (this.elementLockGroups.ContainsKey(element)) { LockGroup group = this.elementLockGroups[element]; foreach (var groupedElement in group) { this.elementLockGroups.Remove(groupedElement); } this.lockGroups.Remove(group); this.availableIds.Add(group.Id); } }
public int LockElements(IEnumerable <TimelineElement> elements) { if (elements.Count() < 2) { return(-1); } LockGroup group = new LockGroup(); group.Id = this.availableIds.Min(); foreach (var timelineElement in elements) { if (this.elementLockGroups.ContainsKey(timelineElement)) { var elementGroup = this.elementLockGroups[timelineElement]; foreach (var element in elementGroup) { if (element != timelineElement) { this.elementLockGroups[element] = group; } } group.UnionWith(elementGroup); this.lockGroups.Remove(elementGroup); this.availableIds.Add(elementGroup.Id); } else { group.Add(timelineElement); } this.elementLockGroups[timelineElement] = group; } group.Id = this.availableIds.Min(); this.lockGroups.Add(group); this.availableIds.Remove(group.Id); return(group.Id); }