Skip to content

Add generic TreeView<T> control#50

Merged
ThomasRemmery merged 8 commits into10.5.5.Xfrom
generic-treeview
Oct 23, 2025
Merged

Add generic TreeView<T> control#50
ThomasRemmery merged 8 commits into10.5.5.Xfrom
generic-treeview

Conversation

@TomW-Skyline
Copy link
Member

No description provided.

@TomW-Skyline TomW-Skyline self-assigned this Oct 23, 2025
@TomW-Skyline TomW-Skyline requested a review from Copilot October 23, 2025 10:56
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This pull request introduces a generic TreeView<T> control that extends the existing non-generic TreeView implementation. The generic version allows developers to attach custom metadata of any type to tree view items, making it easier to work with domain objects while maintaining the UI tree structure.

Key changes:

  • Addition of generic TreeViewItem<T> wrapper that associates custom values with tree view items
  • New TreeView<T> control extending a newly created TreeViewBase abstract class
  • Refactoring of the original TreeView to also extend TreeViewBase for code reuse
  • Introduction of interface hierarchy (ITreeViewBase, ITreeView, ITreeView<T>) to support both implementations

Reviewed Changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
GenericTreeViewTests.cs Comprehensive test suite for the new TreeView<T> control covering constructors, item navigation, state management, and equality operations
TreeViewItem.cs Generic wrapper class that associates a value of type T with a TreeViewItem instance
TreeViewBase.cs Abstract base class extracting common functionality for both generic and non-generic tree view controls
TreeView.cs Refactored to extend TreeViewBase and implement ITreeView, with improved implementation using a lookup table and queue-based traversal
ITreeViewBase.cs Base interface defining common tree view operations like expand, collapse, and cache updates
ITreeView.cs Interface definitions for both non-generic (ITreeView) and generic (ITreeView<T>) tree view contracts
GenericTreeView.cs Implementation of the generic TreeView<T> control with support for typed tree view items and values
UiResultsExtensions.cs Updated extension methods to accept TreeViewBase instead of TreeView for broader compatibility

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@TomW-Skyline TomW-Skyline marked this pull request as ready for review October 23, 2025 11:03
Simplified state management by removing redundant variables
and dynamically creating `changedItems` in `RaiseResultEvents`.
Replaced `List` with `ISet` for better performance in key
operations. Streamlined list initialization using LINQ for
improved readability and reduced boilerplate code.

Removed unused `Skyline.DataMiner.Automation` namespace to
clean up dependencies. Refactored `LoadResult` and event
handling logic for consistency and efficiency. Reformatted
LINQ queries for better readability. Overall, these changes
enhance maintainability, performance, and clarity.
@sonarqubecloud
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants