ctrl + c 快捷键触发事件定义 (基于dbeaver)

在dbeaver中,有很多地方能去触发ctrl + c 快捷键方式进行复制内容,比如:

 

 

 在查询管理器中选中列进行ctrl + c 快捷复制选中内容。

先看注册事件代码:

在 /org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/controls/querylog/QueryLogViewer.java  类中 408行代码

 

 

 使用了内部封装好的一个方法进行注册获取焦点和失去焦点事件。具体内部方法不在此讨论。下面来看 这个QUERY_LOG_CONTROL_ID 变量是什么。

 

 这个变量是一个私有静态常量,全局搜索该全局常量:

 

 该全局常量有两处,转到plugin.xml 的引用

 

 plugin.xml 中定义了一个扩展点 

org.eclipse.core.expressions.definitions  扩展点作用:
https://wiki.eclipse.org/Platform_Expression_Framework#Where_they_are_useful

那么这里通过在  org.eclipse.core.expressions.definitions  扩展点下定义的  org.jkiss.dbeaver.core.ui.querylog.control  来表示上面添加好的获取焦点链路追踪在什么情况下进行触发,当追踪到的controlId 是 org.jkiss.dbeaver.ui.qm.log 时 触发 org.eclipse.ui.handlers扩展点中定义的activeWhen中definitionId是 org.jkiss.dbeaver.core.ui.querylog.control 的handler 配置。

 

 

由于我使用的快捷访问方式是ctrl + c 也就是copy,那么最终到类 org.jkiss.dbeaver.ui.controls.querylog.QueryLogCommandHandler 进行执行

 

 进入到QueryLogCommandHandler 类:

 

 由于这里是在logViewer中的一个table中绑定的获取焦点事件,因此需要在创建这个table时,对这个table设置 setData

 

 圈出的这行代码很重要!!

 

 以上是个人看法,目前也是刚开始rcp开发,若有错误,欢迎指正~

posted @ 2020-05-09 20:08  margo  阅读(610)  评论(0编辑  收藏  举报