【插件开发】—— 13 GEF双击模型事件
前文回顧:
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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在站点静态文件下查找某关键字并修改文
- 下一篇: 以前折腾的7zip图标