還是以我們創建的LanguageSm項目為例,我們大概介紹一下界面表示相關的概念,打開DslDefinition.dsl文件,這次我們看泳道(也就是樹線)的右邊:
一. 圖表
我們看最下面的LanguageSmDiagram,這就是圖表元素,它是存儲形狀和連接器映射的容器,代表設計界面自身,映射到模型的根域類(圖形元素 Diagram Elements都是與模型相對應的),也就是映射到我們例子裡的ExampleModel,我們來看一下圖表的屬性:
在這裡,我們可以對圖表的外觀,代碼,文檔,公開樣式屬性,資源幾個方面進行屬性設置,Dsl會收集設置的這些信息,然後根據T4模板,在Dsl項目的 Generate Code文件夾下面生成Diagram類,我們也可以對這個類進行擴展,實現圖表方面的一些自定義,比如設置背景圖,顯示網絡等。如果你想實現Dsl模型的自己的界面表示方式,也需要實現自己的圖表元素Diagram類.
二.編輯器
編輯器分為兩種類型:(圖形)設計器和自定義編輯器.編輯器的定義在Dsl資源管理器(Dsl Explorer)中的“編輯器”(editor)節點下,這裡的定義的屬性用於生成EditorFactory類(熟悉VSX的應該知道,我們會在後面介紹),工具箱等,我們來看一下默認的設計器的屬性:
這裡需要提示一下,在dsl設計的過程中,有很多時候需要dsl浏覽器和屬性對應操作使用,可以通過右鍵屬性來進行設置。
屬性裡設置了編輯器對應的圖表元素,編輯器的GUID,根域類,以及存儲Dsl模型的文件擴展名,與文件關聯的圖標。或許你不太明白這些屬性代表什麼意義,沒有關系,以後會明白的。
我們在第一節就說過, Dsl模型並不一定要有圖形編輯器的,我們也可以在這裡添加我們自定義的編輯器,你可以右鍵刪除默認的Editor,然後在根結點LanguageSm上右鍵添加自定義編輯器,然後設置上面說的那些屬性,然後實現自己的DocView,在這裡有詳細流程,具體的方法我們也會在後面詳細介紹.
三.形狀
形狀是Dsl圖形符號的重點,因為形狀和模型元素一一對應(前面說的ExampleShape是一個幾何形狀,和根域類對應),可以使模型元素形象化,這也是Vs.Net DSL圖形化DSL的特點. 形狀又分為以下五個不同的類型,這五個形狀在工具箱上都有,可以直接拖動到圖形區域創建對應的形狀,建議現在沒有必要太去細化,而只需要記住他們的樣式,能夠按需所有,具體怎麼設置還是到使用的時候再去研究:
1.幾何形狀(GeometryShape)
左側為形狀的模型,右側為調試後運行的顯示模型,形狀中的文本裝飾器NameDecorator就是用來控制我們顯示圖形中的文本,你可以查看裝飾器的屬性,控制文本的顯示,包括文本,顯示位置等.
對於幾何形狀,除了文本裝飾器以外,你還可以添加IconDecorator(裝飾圖形上顯示圖標),ExpandCollapseDecorator(裝飾圖形的展開收縮)
2.隔間形狀(CompartmentShape)
隔間形狀是帶有隔間的幾何形狀,一個隔間形狀有可以有多個隔間:
同樣,對於隔間形狀,你也可以象幾何形狀那樣添加其它的裝飾器.
3.圖像形狀(ImageShape)
圖像形狀是顯示圖形非輪廓的形狀:
可以看到,圖像形狀顯示的和我們普通的幾何形狀是不一樣的,我們可以針對圖象開關設置顯示的圖像和圖標資源,我們來看一下上面的圖像形狀的屬性,在最下面我們定義了顯示的圖標:
4.端口(PortShape)
端口是依附在形狀輪廓上,並只能繞輪廓移動的特殊形狀,除此之外,和普通的幾何形狀沒有區別。
5.泳道(Swimlane)
泳道用來將圖表分割成行或例,我們看下面的狀態流程圖:
出處:http://lonely7345.cnblogs.com/