zt EMF edit功能解析

2021-08-22 06:49:15 字數 3163 閱讀 5412

from:

1.emf.edit a)

說明:emf.edit

位於emf.editor

和emf.ecore

之間,他起了乙個中介者的作用。他負責把來自

emf.editor的ui

相關的請求轉換成符合

emf.ecore的ui

無關的呼叫。他需要提供以下四個功能:實現用於支援

viewer

顯示的contentprovider

和labelprovider

;實現用於支援屬性顯示的

ipropertysource

;實現用於支援對模型進行操作的

commandframework

;實現用於支援修改通知的

framework。

b)contentprovider

和labelprovider

i.             圖:

ii.             

說明:當

treeviewer

需要顯示內容時,呼叫她的

icontentprovider

的getchildren(object obj)

方法。這個方法會被**到

adapte***ctorycontentprovider

內部。她通過她所引用的

itemprovideradapte***ctory

來獲取乙個對

obj的

itreeitemcontentprovider

型別的adapter

,這個adapter

是由emf

生成的對應於

ecore

模型的乙個

itemprovideradapter

(這裡為

teacheritemprovider

),最後由這個

teacheritemprovider

負責生成所需要顯示的子節點列表。

iii.             

**:

public classadapte***ctorycontentprovider implements itreecontentprovider }

注:紅色是

ui相關的請求,藍色是

ui無關的介面卡類,粉紅色就是

ui無關的請求。 c)

ipropertysource

i.             圖:

ii.             

說明:當

propertysheetpage

需要顯示屬性內容時,他訪問他的

ipropertysourceprovider

的getpropertysource(object obj)

方法。這個方法會被**到

adapte***ctorycontentprovider

內部。她通過她所引用的

itemprovideradapte***ctory

來獲取乙個對

obj的

iitempropertysource

型別的adapter

,這個adapter

是由emf

生成的對應於

ecore

模型的乙個

itemprovideradapter

(這裡為

teacheritemprovider

),最後由這個

teacheritemprovider

負責生成所需要顯示的屬性列表。

iii.             

**:

public classadapte***ctorycontentprovider implements ipropertysourceprovider    }

d)command framework

i.             圖:

說明:由於

emf.editor

並不了解底層的模型細節,因此他不能直接對模型進行操作,他需要生成一些用於操作模型的

command

物件。當

editor

需要對模型進行修改時,他通過呼叫他的

createcommand(editingdomain domain)

方法,建立用於進行模型操作的

command

物件,該方法最後會被**到

domain

的createcommand()

,然後domain

會根據他所引用的

itemprovideradapte***ctory

來獲取乙個

ieditingdomainitemprovider

的介面卡,由他來最後生成用於對模型進行操作的

command

物件。

iii.             

**:

public class deleteaction extendscommandactionhandler }

public class removecommand extendsabstractoverrideablecommand }

public classadapte***ctoryeditingdomain implements editingdomain }

注:當需要執行命令時,

editor

會呼叫editingdomain

上的commandstack

,並呼叫他上面的

execute(command c)

方法。

e)notify framework

i.             圖:

ii.             

說明:當我們修改了模型的值以後,模型將會向他對應的

itemprovider

發出乙個更新通知,這個通知隨後被**到

itemprovideradapte***ctory

,然後最終發到

adapte***ctorycontentprovider

處,並由他來負責更新對應的

viewer。

T BOX功能解析

在 車聯網系統的組成概述 一文中,我們已經簡單介紹了t box的功能結構。今天,我們來進一步挖掘,t box在整個車聯網系統中,究竟承擔了哪些具體服務?1事件資訊上報類服務 總體來說,這類服務就是在車端滿足特定事件上報條件後,向tsp平台上報訊息 tsp平台在收到車端上報的訊息後,向車端傳送確認資訊...

jspatch功能解析

一 三個模型 1 補丁 執行時結構維護模型 2 通訊模型 3 解釋模型 執行時 二 js oc分層解釋呼叫 js模組與oc模組的關係 1 oc呼叫js的配置資訊完成配置 2 oc執行時重定位到js功能 3 js功能 被oc端解釋為oc 並執行 oc解釋為js overridemethod objc ...

Time 模組功能解析

在實際的程式設計中我們要經常與時間打交道,所以time模組是非常有用的,在python中,對時間的處理並不只有time,還有datetime和calendar,locale。本文只涉及time模組。首先我們需要明確兩點概念。1 時間戳 時間戳就是從1970年1月1日00 00 00開始按秒計算的偏移...