# OutlinePanel The **Navigation Panel**: the presentation-only panel along the left edge of the Workspace that lists the Active Session's **Outline** — every **Section Heading** as a clickable **Outline Entry**, indented by heading level. It is presented as a tab of the [Side Dock](../UbiquitousLanguage.md) (alongside the Folder Panel, so the two share one column) and is hidden until the user toggles it on (`SideDockViewModel.IsNavigationTabVisible`, INV-046). - **Class:** `UI.Controls.OutlinePanel` (derives from `System.Windows.Controls.ListBox`) - **Default style:** `src/UI/Controls/OutlinePanel.xaml` (merged in `App.xaml`) Authored as a custom Control (a `ListBox` subclass plus a ResourceDictionary for its look), per the project's Control exception to the zero-code-behind rule — the same pattern as the [EditorGutter](EditorGutter.md). The panel is **view-only**: it reads the editor's Outline and drives Navigation, and never mutates the document — so it cannot change the Markdown source (INV-012). ## How it works The panel mirrors the editor through its `Editor` dependency property (bound the same way as the gutter): - **Listing** — on [`MarkdownRichEditor.OutlineChanged`](MarkdownRichEditor.md) it sets its `ItemsSource` to `MarkdownRichEditor.Outline`, the ordered list of every Section Heading (including ones inside a Folded Section Body, so the whole document is always represented). Each Outline Entry is indented by `HeadingLevelToIndentConverter` so subsections nest under their parents. - **Navigating** — selecting an Outline Entry (a click) calls `MarkdownRichEditor.Navigate`, which reveals the heading (Unfolding its enclosing Section if hidden), selects it, and scrolls it into view. - **Collapse / Expand** — an Outline Entry that leads nested entries shows a chevron (▾ Expanded, ▸ Collapsed). Clicking it Collapses or Expands that entry, hiding or showing the nested Outline Entries beneath it. Which entries are hidden under a Collapsed ancestor is computed by the pure `UI.Wysiwyg.OutlineView`. Collapse state is panel-only (it never changes the document or any Fold — INV-012) and is preserved across edits, keyed by heading block. The chevron is a `Button`, so clicking it toggles the Collapse without selecting the row or Navigating. - **Highlighting the Current Section** — on `MarkdownRichEditor.CurrentSectionChanged` it selects the Outline Entry of `MarkdownRichEditor.CurrentSection`, so the entry for the Section under the caret stays highlighted as the user edits and scrolls. These self-made selections are guarded so they never trigger Navigation back into the editor. ## Properties | Property | Type | Description | | --- | --- | --- | | `Editor` | `MarkdownRichEditor?` | The editor whose Outline this panel lists and Navigates. Setting it wires the Outline/Current-Section subscriptions. | ## Usage ```xml ... ```