【插件開發】—— 13 GEF雙擊模型事件

  

前文回顧:html

插件學習篇java

簡單的創建插件工程以及模型文件分析編程

利用擴展點,開發透視圖架構

SWT編程須知編輯器

SWT簡單控件的使用與佈局搭配佈局

SWT複雜空間與佈局搭配學習

SWT佈局詳解spa

IPreferenceStore使用詳解插件

編輯器代碼着色code

10 JFace開發

11 GEF監聽

12 GEF入門

  因爲GEF的架構過於龐大,對於新手來講確實不易。而對於GEF典型的應用場景,模型拖拽編輯,一個經常使用的操做方式就是雙擊模型彈出對話框進行編輯。可是因爲模型是咱們本身定義的,如何雙擊模型產生事件這個就點摸不着頭腦了。

  因爲GEF的模型都是咱們自定義的,所以根本不具備雙擊的方法。可是能夠經過其餘的渠道來達到目的。

  下面介紹兩種常見的雙擊模型,產生響應的方法:

  第一種 performRequest

  在模型對應的EditPart中添加performRequest方法,捕捉事件

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

  這種方法時從八進制的博客中學習的。其中RequestConstants還有不少常量,能夠多關注一下。

 

  第二種,就是在Editor類中,對整個viewer添加雙擊事件監聽

  首先咱們須要定義一個接口

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源碼

相關文章
相關標籤/搜索