Add tree context menu, missing connection settings, and fix lazy-load browse

Right-click on browse tree nodes to Subscribe (multi-select) or View History
(Variable nodes only), with automatic tab switching. Add missing UI controls
for failover URLs, session timeout, auto-accept certificates, and certificate
store path. Fix tree expansion by adding two-way IsExpanded binding on
TreeViewItem.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Joseph Doherty
2026-03-30 17:45:29 -04:00
parent a2883b82d9
commit 55ef854612
8 changed files with 348 additions and 7 deletions

View File

@@ -15,20 +15,44 @@ public partial class MainWindow : Window
{
base.OnLoaded(e);
// Wire up tree selection to the main ViewModel
var browseTreeView = this.FindControl<BrowseTreeView>("BrowseTreePanel");
var treeView = browseTreeView?.FindControl<TreeView>("BrowseTree");
if (treeView != null)
{
treeView.SelectionChanged += OnTreeSelectionChanged;
}
// Wire up context menu opening to sync selection and check history
var contextMenu = this.FindControl<ContextMenu>("TreeContextMenu");
if (contextMenu != null)
{
contextMenu.Opening += OnTreeContextMenuOpening;
}
}
private void OnTreeSelectionChanged(object? sender, SelectionChangedEventArgs e)
{
if (DataContext is MainWindowViewModel vm && sender is TreeView treeView)
if (DataContext is not MainWindowViewModel vm || sender is not TreeView treeView) return;
// Update single selection for read/write and history panels
vm.SelectedTreeNode = treeView.SelectedItem as TreeNodeViewModel;
// Sync multi-selection collection
vm.SelectedTreeNodes.Clear();
foreach (var item in treeView.SelectedItems)
{
vm.SelectedTreeNode = treeView.SelectedItem as TreeNodeViewModel;
if (item is TreeNodeViewModel node)
{
vm.SelectedTreeNodes.Add(node);
}
}
}
private void OnTreeContextMenuOpening(object? sender, System.ComponentModel.CancelEventArgs e)
{
if (DataContext is MainWindowViewModel vm)
{
vm.UpdateHistoryEnabledForSelection();
}
}
}