【插件开发】—— 13 GEF双击模型事件
前文回顾:
1 插件学习篇
4 SWT编程须知
7 SWT布局详解
9 编辑器代码着色
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源码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律