前文回顧:html
1 插件學習篇java
3 利用擴展點,開發透視圖架構
4 SWT編程須知編輯器
5 SWT簡單控件的使用與佈局搭配佈局
6 SWT複雜空間與佈局搭配學習
7 SWT佈局詳解spa
9 編輯器代碼着色code
10 JFace開發
11 GEF監聽
12 GEF入門
因爲GEF的架構過於龐大,對於新手來講確實不易。而對於GEF典型的應用場景,模型拖拽編輯,一個經常使用的操做方式就是雙擊模型彈出對話框進行編輯。可是因爲模型是咱們本身定義的,如何雙擊模型產生事件這個就點摸不着頭腦了。
因爲GEF的模型都是咱們自定義的,所以根本不具備雙擊的方法。可是能夠經過其餘的渠道來達到目的。
下面介紹兩種常見的雙擊模型,產生響應的方法:
在模型對應的EditPart中添加performRequest方法,捕捉事件
public void performRequest(Request req) { if(req.getType().equals(RequestConstants.REQ_OPEN)){
MessageDialog.openInformation(getViewer().getControl().getShell(),"Gef Practice","A Dialog"); } }
這種方法時從八進制的博客中學習的。其中RequestConstants還有不少常量,能夠多關注一下。
首先咱們須要定義一個接口
1 public interface IDoubleClickSupport { 2 3 public void doubleClicked(); 4 5 }
繼承這個接口的模型,都須要實現一個doubleClicked方法。
而後,須要在Editor.java中添加監聽事件
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 }
這裏經過調用getGraphicalViewer().getSelection()能夠得到點擊的對象,若是這個對象屬於咱們本身定義的接口,就會觸發雙擊事件。
AmaterausERD源碼