GEF理解系列五(2)

2021-08-29 11:29:08 字數 2326 閱讀 7356

新建連線模型,過程大同小異。此時需要在結點模型上安裝policy,policy的型別為:graphicalnodeeditpolicy。

在helloworldeditpart的createeditpolicies()方法裡追加:

installeditpolicy(editpolicy.

graphical_node_role

,newhelloworldgraphicalnodeeditpolicy());

其中helloworldgraphicalnodeeditpolicy是我們的policy實現類。還是一樣,先完成command,再回過頭來完成policy。

要成功的實現乙個連線,首先我們知道至少需要有三個物件:連線線、源結點和目標結點。所以我們的command的可以如下實現:

publicclassaddconnectioncommandextendscommand

publicvoidsetsrc(helloworldmodel src)

publicvoidsettarget(helloworldmodel target)

publicvoidsetconnection(abstractconnectionmodel connection)

@override

publicvoidexecute()

@override

publicvoidundo()

}然後我們實現我們的policy。這裡要分兩步進行,首先是完成源結點的連線,然後就完成目標結點的連線,**如下:

@override

protectedcommand getconnectioncompletecommand(

createconnectionrequest request)

@override

protectedcommand getconnectioncreatecommand(createconnectionrequest request)

publicstaticfinalstring

p_source

= "p_source"

;publicstaticfinalstring

p_target

= "p_target"

;publicvoidaddinput(abstractconnectionmodel model) }

publicvoidaddout(abstractconnectionmodel model) }

publicvoidremoveinput(abstractconnectionmodel model) }

publicvoidremoveout(abstractconnectionmodel model)

}然後再修改對應的editpart的propertychange()方法如下:

publicvoidpropertychange(propertychangeevent evt)elseif(evt.getpropertyname().equals(helloworldmodel.

p_source

))elseif(evt.getpropertyname().equals(helloworldmodel.

p_target))}

最後試一下效果:

圖三 editpolicy的gethost()方法返回的是安裝這個policy的那個物件。也就是安裝這個policy的那個editpart。

Cocos2d開發系列(五)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!learn iphone andipad cocos2d game delevopment 第6章 原文中部分無關緊要的內容沒有進行翻譯 一 ccspritebatchnode 在螢幕上貼圖時,圖形硬體需要經過準備 渲染 清除等步驟。每次貼圖都會重...

Java併發系列五 深入理解volatile關鍵字

instance new instancce instance是volatile變數 這個寫回記憶體的操作會使得其他cpu裡快取了該記憶體位址的資料無效 乙個處理器的快取回寫到記憶體會導致其他處理器的快取失效 當處理器發現本地快取失效後,就會從記憶體中重讀該變數資料,即可以獲取當前最新值。publi...

學習Emacs系列教程(五) 編輯(2) 標記

學習emacs系列教程 三 編輯 1 有段時間沒寫這個教程了,自己險些放棄,不過回頭想想看個 都討厭太監,自己寫更不能太監,還是要堅持下去。閒話不多說,進入這次的正題,關於編輯文字的另一些內容。一 標記和區域 所謂區域 region 就是平時我們使用滑鼠選中的一段文字,在emacs中用樣可以使用滑鼠...