阅读:7570回复:0
GEF两种处理双击模型事件的方法
GEF的模型都是我们自定义的,不具有双击处理事件的方法。下面介绍两种常见的双击模型处理事件的方法:
第一种 performRequest 在模型对应的EditPart中添加performRequest方法,捕捉事件 1 public void performRequest(Request req) { 2 if(req.getType().equals(RequestConstants.REQ_OPEN)){ 3 //这里写事件处理代码 4 } 5 } 第二种,就是在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()可以获得点击的对象,如果这个对象属于我们自己定义的接口,就会触发双击事件。 资料参考:http://www.cnblogs.com/xing901022/p/4111363.html |
|