TextContainer 核心功能InsertBefore、InsertRangeBefore:在指定元素前插入單個或批次元素。AddLastElement、IsLastElement 由子類實作,刪除前必經檢查。RefreshSize:遞迴計算所有子元素顯示尺寸。RefreshLine:啟動分行流程,產生 TextLine 物件樹。TextLine承載單行佈局資訊:
LineSpacing、Elements、FirstElement、LastElementRealLeft、RealTop:行在視圖區絕對座標Container、ContentWidth:所屬容器與行內容寬度容器 Lines 屬性(ArrayList)保存所有行物件,避免重複計算。
Lines,準備參與分行元素集合。RefreshLine。CanBeLineHead/CanBeLineEnd。若違反則回退當前元素至下一行(亦屬情況 1)。防死循環機制:容器過窄時強制允許違規,避免無限迴圈(曾因該 Bug 耗費數日)。WidthFix 均勻對齊右緣;強制換行依段落對齊分配。Top 使底緣對齊。Lines,建立新行繼續迴圈。依容器視圖座標與行距累加,計算各行絕對座標;元素視圖座標 = 行座標 + 行內相對座標。
EditorAction為避免 TextDocument 膨脹,抽離指令概念:
HotKey、KeyCode、ShiftKey、ControlKey、AltKey、MouseX/Y、MouseButton、Param1~3。TestHotKey(熱鍵判斷)、ActionName、IsEnabled、Execute(核心邏輯)。TextDocument.Actions 初始化註冊所有內建指令,外部可動態擴展。