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

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

97a91d01939911b292574078c068ca75.png

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

先看注册事件代码:

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

40ebf707f4f9a1907d9749107e45548b.png

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

26827e1958a4038ff3d6ec5dd7a6d9ef.png

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

0d989e2264ceccd8d314504d64759c04.png

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

d6816e70bd7511ca0edab027d5796f02.png

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

bb67c162dd0c1398b51ba872c2508e55.png

那么这里通过在  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 配置。

05e3b3e922c90cffeff78c89cb636a1c.png

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

58207c6e59d623935622448020e7b376.png

进入到QueryLogCommandHandler 类:

870174e68877b900265e00246582143d.png

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

46c72a91e3123dcd5ae2d7beaa2f37b3.png

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值