日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【插件开发】—— 13 GEF双击模型事件

發(fā)布時(shí)間:2023/12/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【插件开发】—— 13 GEF双击模型事件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  

前文回顧:

1?插件學(xué)習(xí)篇

2?簡單的建立插件工程以及模型文件分析

3?利用擴(kuò)展點(diǎn),開發(fā)透視圖

4?SWT編程須知

5?SWT簡單控件的使用與布局搭配

6?SWT復(fù)雜空間與布局搭配

7?SWT布局詳解

8?IPreferenceStore使用詳解

9?編輯器代碼著色

10?JFace開發(fā)

11 GEF監(jiān)聽

12 GEF入門

  由于GEF的架構(gòu)過于龐大,對于新手來說確實(shí)不易。而對于GEF典型的應(yīng)用場景,模型拖拽編輯,一個(gè)常用的操作方式就是雙擊模型彈出對話框進(jìn)行編輯。但是由于模型是我們自己定義的,如何雙擊模型產(chǎn)生事件這個(gè)就點(diǎn)摸不著頭腦了。

  由于GEF的模型都是我們自定義的,因此根本不具有雙擊的方法。但是可以通過其他的渠道來達(dá)到目的。

  下面介紹兩種常見的雙擊模型,產(chǎn)生響應(yīng)的方法:

  第一種?performRequest

  在模型對應(yīng)的EditPart中添加performRequest方法,捕捉事件

public void performRequest(Request req) { if(req.getType().equals(RequestConstants.REQ_OPEN)){
     MessageDialog.openInformation(getViewer().getControl().getShell(),"Gef Practice","A Dialog");}}

  這種方法時(shí)從八進(jìn)制的博客中學(xué)習(xí)的。其中RequestConstants還有很多常量,可以多關(guān)注一下。

?

  第二種,就是在Editor類中,對整個(gè)viewer添加雙擊事件監(jiān)聽

  首先我們需要定義一個(gè)接口

1 public interface IDoubleClickSupport { 2 3 public void doubleClicked(); 4 5 }

  繼承這個(gè)接口的模型,都需要實(shí)現(xiàn)一個(gè)doubleClicked方法。

  然后,需要在Editor.java中添加監(jiān)聽事件

1 protected void initializeGraphicalViewer() { 2 viewer = getGraphicalViewer(); 3 .... 4 viewer.getControl().addMouseListener(new MouseAdapter(){ 5   public void mouseDoubleClick(MouseEvent e){ 6 IStructuredSelection selection = (IStructuredSelection)getGraphicalViewer().getSelection(); 7 Object obj = selection.getFirstElement(); 8 if(obj!=null && obj instanceof IDoubleClickSupport){ 9   ((IDoubleClickSupport)obj).doubleClicked(); 10 } 11 } 12 }); 13 14 }

  這里通過調(diào)用getGraphicalViewer().getSelection()可以獲得點(diǎn)擊的對象,如果這個(gè)對象屬于我們自己定義的接口,就會觸發(fā)雙擊事件。

?

  參考:

  八進(jìn)制博客

  AmaterausERD源碼

總結(jié)

以上是生活随笔為你收集整理的【插件开发】—— 13 GEF双击模型事件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。