private static PackageItem FindPackageItemPageUpOrPageDown(PackageItem item, bool isPageUp) { PackageItem targetItem = null; if (item.packageGroup.IsExpanded) { targetItem = (isPageUp ? item.parent.Children().FirstOrDefault(p => !UIUtils.IsElementDisplayNone(p)) : item.parent.Children().LastOrDefault(p => !UIUtils.IsElementDisplayNone(p))) as PackageItem; } if (targetItem == item) { targetItem = null; } if (targetItem == null) { Func <VisualElement, bool> expandedNonEmptyGroup = (element) => { var group = element as PackageGroup; return(group.IsExpanded && group.packageItems.Any(p => !UIUtils.IsElementDisplayNone(p))); }; var nextGroup = FindNextSiblingByCondition(item.packageGroup, expandedNonEmptyGroup, isPageUp) as PackageGroup; if (nextGroup != null) { targetItem = (isPageUp ? nextGroup.packageItems.LastOrDefault(p => p != item && !UIUtils.IsElementDisplayNone(p)) : nextGroup.packageItems.FirstOrDefault(p => p != item && !UIUtils.IsElementDisplayNone(p))) as PackageItem; } } return(targetItem); }
private void UpdateGroups() { foreach (var group in Groups) { UIUtils.SetElementDisplay(group, group.packageItems.Any(item => !UIUtils.IsElementDisplayNone(item))); } }
private static PackageItem FindNextVisiblePackageItem(PackageItem item, bool reverseOrder) { PackageItem nextVisibleItem = null; if (item.packageGroup.IsExpanded) { nextVisibleItem = FindNextSiblingByCondition(item, UIUtils.IsElementVisible, reverseOrder) as PackageItem; } if (nextVisibleItem == null) { Func <VisualElement, bool> expandedNonEmptyGroup = (element) => { var group = element as PackageGroup; return(group.IsExpanded && group.packageItems.Any(p => !UIUtils.IsElementDisplayNone(p))); }; var nextGroup = FindNextSiblingByCondition(item.packageGroup, expandedNonEmptyGroup, reverseOrder) as PackageGroup; if (nextGroup != null) { nextVisibleItem = reverseOrder ? nextGroup.packageItems.LastOrDefault(p => !UIUtils.IsElementDisplayNone(p)) : nextGroup.packageItems.FirstOrDefault(p => !UIUtils.IsElementDisplayNone(p)); } } return(nextVisibleItem); }