Visual Studio DSL 入門 6—DSL的圖形表示1

來源:互聯網
上載者:User

     到現在為止,我們還是只是介紹模型相關的東西,還沒有接觸到Dsl的模型的展現,對於一個Dsl來說,沒有圖形展現也是可行的,不過對於一個開發工具來說,要提供一種方式來操作我們的中繼資料,Visual Studio DSL在圖形展現這方面提供了不錯的支援,不過對於複雜的Dsl來說,圖形的展現往往需求很複雜,現在的圖形化支援在一定程度上也未必能夠滿足一些特定的需求, 有總比沒有好,期望微軟會在這方面會有所加強。 
    還是以我們建立的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)
      泳道用來將圖表分割成行或例,我們看下面的狀態流程圖:
     

參考資源
      1. Visual Stuido DSL 工具特定領域開發指南
      2.Using WPF As The Designer Surface In DSL Tools   Gokhan Altinoren

作者:孤獨俠客(似水流年)
出處:http://lonely7345.cnblogs.com/
本文著作權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,否則保留追究法律責任的權利。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.