我有 RCP 应用程序,并且我有一个命令,它启动某个实体的向导(编辑向导,显示实体的所有字段,用户可以更改它并完成向导以保存该实体)。我正在使用 JFace 数据绑定将实体的字段绑定到 swt Texts 和 Combos。
该命令具有处理程序(包含向导调用),并且该处理程序绑定到某个按钮并且一切正常。
然后我需要将此命令绑定到某个组合键(例如 Ctrl+E)。我正在使用 org.eclipse.ui.bindings 扩展:
<key
commandId="com.project.command"
contextId="com.project.view.context"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
sequence="M1+E">
</key>
“com.project.view.context”是我制作的,用于在 2 个不同的视图中绑定到相同的组合键,看起来还可以(并在这 2 个视图中激活不同的命令)。
但是当我通过这个组合键打开我的向导时,出现了一个问题:
SWT 文本字段不绑定到实体的整数字段。使用 String 字段一切正常,并且它们绑定得很好。但是整数字段没有(里面只有空白)。
我试过的:
我调试了我的向导和向导页面,并且所有时间实体状态都很好(它们的整数字段是正确的,而不是 0 或 null)
试图为 JFace 绑定编写整数到字符串转换器。没有帮助。
我尝试禁用此字段的 JFace 绑定,并手动设置文本字段值:
swtTextField.setText(entity.getIntegerField().toString());
但这也没有用!看起来不是 JFace 绑定问题,而是 SWT 文本问题?调试这种情况:
entity.getIntegerField().toString() = "1234" 在 "setText" 之前和之后 swtTextField.getText = "" 在 "setText" 之前和之后
(当我不是从组合键命令调用中运行此调试时,一切看起来都很好,并且在“setText”之后 swtTextField.getText =“1234”)
试图将绑定扩展的上下文更改为默认值(“org.eclipse.ui.contexts.window”),但这也没有帮助。
所以,总而言之,当我通过按钮(或上下文菜单)调用我的命令时,一切正常。但是当我通过键组合绑定扩展调用我的命令时,整数->文本字段(字符串字段工作正常)存在问题。
有什么想法吗?
补充:我发现问题出在组合键上。当组合键包含非英语键符号(Ctrl+non-english-key 我的语言键符号,导致我们的应用程序使用非英语键组合)时,就会出现问题:SWT 文本不接受整数值。当组合键为英语时(Ctrl+english-key)- 一切正常。
所有其他命令(没有 SWT 文本字段)也可以正常工作,并且它们也绑定到 Ctrl+非英语键组合......
这很奇怪,我还是不明白,为什么那汉内普......