程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Visual Studio DSL入門 9---創建狀態機的圖形符號

Visual Studio DSL入門 9---創建狀態機的圖形符號

編輯:關於.NET

打開dsl文件後,關注泳道的右側,首先我們來完成域類的形狀表示:

1.一個狀態State有進入操作和退出操作,所以我們為狀態表示為隔間形狀,可以在圖上顯示出來它的這兩種操作(就象一個類包含方法和屬性一樣),先刪除之前生成的ExampleShape.然後從工具箱中選擇隔間形狀(Compartment Shape)到Diagram Elements區域,命名為StateShape.

2.修改StateShape的一些屬性,只是為了它顯示起來更美觀,修改Geometry屬性為RoundedRectangle(圓角矩形),修改FillColor為LightBlue.

3.將StateShape與State域類映射起來,從工具箱中選擇Diagram Element Map,點擊域類State指向StateShape即可,點擊映射查看Dsl details,可以看到和我們第七節介紹的映射信息:

4.為StateShape添加隔間EntryActions(在StateShpae上直接右鍵添加Compartment), Title為”進入操作”,TitelFillColor為LightBlue.同樣也添加隔間ExitActions,Title為”退出操作”.

5.在Dsl details中映射兩個隔間,設置EntryActions隔間的顯示元素集合,開窗從State的StateHasEntryActions關系下選中EntryAction,設置顯示屬性為Label.即此隔間顯示它所具有的EntryAction集合的每個Label屬性值.同樣操作設置隔間 ExitActions.

我們為StateShape添加一些裝飾器,來控制State展現時的一些效果.

6.右鍵StateShape添加Expand Collapse Decorator,主要用來裝飾展開收縮,設置Position屬性值為InnerTopRight,這樣展開收縮圖標就會顯示在右上角.

7.添加Text Desorator,命名為NameDecorator,設置Position屬性值為InnerTopCenter.(下面我們會將此裝飾器映射到屬性 Name,也就設置屬性Name顯示在圖形的InnerTopCenter位置).

8.在dsl details中映射NameDecorator到屬性Name:

下面我們來完成在上一節我們提到的一個功能,就是設置我們狀態State的Kind屬性值,圖形能夠根據這個屬性值的不同發生不同的變化,比如如果是初始狀態,我們就在圖形上顯示一個開始的圖標,如果是結束狀態就在圖形上顯示一個結束的圖標.

9.我們先為dsl項目添加這樣兩個圖標,為Resources文件夾添加兩個圖標文件Start.emf和Stop.emf. 路徑在Visual Studio 2008 SDK安裝路徑\VisualStudioIntegration\Tools\DSLTools\SolutionTemplates \TaskFlow\Dsl\Resources\.

10.為StateShape添加兩個圖標裝飾器來表示這兩個圖標,StartIconDecorator,StopIconDecorator.設置裝飾器的Default Icon分別為以上兩個圖標.Position默認為InnertTopLeft.

11.在dsl details中映射這兩個圖標裝飾器,對於StartIconDecorator設置Visibility Filter選中,Kind屬性值為Initial.同樣處理StopIconDecorator,Kind屬性值為Final.

接下來我們來完成域關系轉移Transition的圖形顯示:

12.修改ExampleConnector為TransitionConnector.將TransitionConnector與Transition建立映射關系.

13.為TransitionConnector添加文本裝飾器

LabelTextDecorator,Position屬性值為TargetTop,也就是屬性Label將會顯示在關系線Target端的頂部

14.在dsl details中映射LabelTextDecorator到域類Transition的屬性Label:

我們已經完成了域類State和域關系Transition的圖形符號,下面我們為它們添加工具箱的圖標(當然如果不添加的話,會直接采用默認的圖標):

15.為dsl項目添加兩個圖標Tasktool.bmp,FlowTool.bmp(路徑同上,下同),打開dsl explorer,找到結點Editor/Toolbox Tabs/LanguageSm/Tools,可以看到已經有了ExampleElement,ExampleRelationship.右鍵屬性分別把它們更名為State,Transition,Toolbox Icon分別對應選中上面兩個圖標.

已經完成了,我們來運行一下這個狀態機設計器:

16.注意在運行前一定保存完dsl文件後轉換所有的模板,然後點擊調試運行整個項目.具體這個狀態機的使用先不詳細介紹了.

出處:http://lonely7345.cnblogs.com/

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved