Guide to Building a Blockable UI System

Introduction

A blockable UI system (also known as a dockable panel system) allows users to customize their workspace by rearranging UI components. This guide explains how to implement such a system for Symphony IDE, similar to what you’d find in Visual Studio, VS Code, or JetBrains IDEs.

Core Concepts

1. Key Components

2. Panel States

Architecture Overview

Online FlowChart & Diagrams Editor - Mermaid Live Editor

graph TD
    DockManager[Dock Manager] --> DockContainer
    DockContainer --> DockZone1[Dock Zone: Top]
    DockContainer --> DockZone2[Dock Zone: Left]
    DockContainer --> DockZone3[Dock Zone: Center]
    DockContainer --> DockZone4[Dock Zone: Right]
    DockContainer --> DockZone5[Dock Zone: Bottom]

    DockZone2 --> DockGroup1[Dock Group]
    DockZone3 --> DockGroup2[Dock Group]
    DockZone4 --> DockGroup3[Dock Group]

    DockGroup1 --> Panel1[Panel: Explorer]
    DockGroup2 --> Panel2[Panel: Editor]
    DockGroup3 --> Panel3[Panel: Properties]
    DockGroup3 --> Panel4[Panel: Output]

    DockManager -.-> DragController[Drag Controller]
    DockManager -.-> DropTarget[Drop Target Indicator]
    DockManager -.-> LayoutSerializer[Layout Serializer]

Implementation Strategy