Skip to content

Plan viewer properties panel: a row model, a filter box, a copy menu, and a remembered width #4574

Description

@erikdarlingdata

Part of #4511, plan viewer parity with PerformanceStudio (PS). The viewer control is shared by the Darling Viewer and Lite, so each change lands in both.

PS (erikdarlingdata/PerformanceStudio@e156e56) added a TextBox under the panel header that filters every row's label+value case-insensitively; a section with no matching rows hides, a section whose title matches keeps all its rows, Esc clears while focused, text is sticky across node selection. PM's PlanViewerControl.Properties.cs builds a flat tree of Grids per row with no row/section model and no filter box (verified end-to-end, no Filter/TextChanged hits). Port needs PS's row-tracking model first (see 435e12d below) since there's nothing to hide yet. Add a PropertiesFilterBox in PlanViewerControl.xaml, wire TextChanged/Esc, and an ApplyPropertiesFilter() walking _propertySections. Depends on 435e12d landing first (shared file/model).

PS (@217c580) replaced the default TextBox right-click menu (greyed-out Cut/Copy, live Paste on read-only data) with "Copy value" / "Copy name and value" / "Copy all properties", shared by label+value controls, clearing any theme ContextFlyout. "Copy all properties" renders from the row model, not the visual tree, so code values paste verbatim. PM's AddPropertyRow (Properties.cs L916-948) still uses a plain read-only TextBox, giving it the WPF stock context menu — no ContextMenu assignment found anywhere in the file. PM has no clipboard helper equivalent to PS's retry-guarded SetClipboardTextAsync; would use Clipboard.SetText with a try/catch. Needs 435e12d's row model to build "Copy all". Lite/Darling Viewer inherit automatically (shared control).

PS (@b5ba82e) stopped resetting _propertiesColumn.Width to a hard 320 on every node selection; width is set only on the hidden→visible transition, remembered statically for the session (default 380, clamped 280-800 while open, bounds cleared on close so MinWidth doesn't hold a strip open). PM's PlanViewerControl.Properties.cs (bottom of ShowPropertiesPanel) unconditionally does PropertiesColumn.Width = new GridLength(320); on every call — confirmed, no width-remembering field exists, no MinWidth/MaxWidth bounds in PlanViewerControl.xaml (PropertiesColumn at L149 is just Width="0"). Port: add a static _propertiesPanelWidth field, gate the width assignment on Visibility != Visible, add Min/MaxWidth to the XAML column, clear them on close. Splitter grab-area/hover cosmetic bit is optional. Lite/Darling Viewer share the fix automatically.

At 08f3e3c4e. PS reference: its dev branch at 85492a1.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions