接續前幾章建立狀態機 DSL 核心模型與圖形符號,本章著重於設計器體驗細節的打磨:工具箱標籤文字修改、屬性分類整理、Explorer 名稱調整、動態圖示顯示邏輯(初始/結束狀態圖示),以及實驗環境重置技巧,打造更專業、直覺的領域專用語言設計工具。
預設工具箱分頁標籤顯示為自動生成的「LanguageSm」,需改為「StateMachine」:
DslDefinition.dsl,展開 DSL Explorer。LanguageSm / Editor / Toolbox Tabs / LanguageSm。StateMachine。
執行時發現 Transition 的所有屬性歸類在「雜項」,缺乏語意。將域類 Transition 的四個域屬性 Event、Condition、Action、Label 的 Category (從屬分類) 屬性設為 Transition;同理可調整 State 的屬性分類。重新建置執行,屬性視窗即以分類呈現:

除錯環境右側的「LanguageSm Explorer」同樣需改名:
State Machine Explorer。
調整後效果:

觀察發現 State2 的「Entry Actions」與「Exit Actions」隔間下顯示的是「Entry Action」、「Exit Action」而非我們定義的 Label 值 (如 SwitchOn/SwitchOff)。原因在於域類 Action 的 Label 屬性未設為元素名稱。
Action。Label 的 Is Element Name 設為 True。Is Element Name = True,於顯示與序列化時作為識別鍵值。重新建置執行,隔間正確顯示自訂 Label 值:

完整狀態機設計器運行畫面:

運行後工具箱可能仍殘留舊的「LanguageSm」分頁,兩種解決方式:
開始 / 所有程式 / Microsoft Visual Studio 2008 SDK / Tools / Reset the Microsoft Visual Studio 2008 SP1 Experimental hive出處:https://lonely7345.cnblogs.com/
本文配套原始碼下載