ContentProposalAdapter会阻止选择提案上的新行

时间:2013-06-25 13:47:41

标签: java eclipse swt eclipse-rcp

我使用ContentProposalAdapter为StyledText字段提供内容辅助。我编写了一个实现IControlContentAdapterIControlContentAdapter2的适配器来支持StyledText。我的问题是,当我按下返回以插入提案时,将返回键插入到StyledText中,然后插入提案。

为什么没有遍历UPDOWN箭头,但返回键是。

如何在用于选择提案时阻止返回键开始插入StyledText字段。

2 个答案:

答案 0 :(得分:1)

也许这个问题已经过时了,但是当我用谷歌搜索时,这篇文章几乎涵盖了我的问题,但没有解决方案,我想提供我现在找到的解决方案。

我的问题完全相同,但在选定的提案之后插入换行符。 通过双击选择提案工作得很好,所以我同意你的意见,可能是StyledTextWidget得到关于Enter的通知...... 首先,我在ContentProposalAdapter上尝试了setPropagateKeys(false),因为文档说它“表明当提案弹出窗口打开时,内容提议弹出窗口收到的关键事件(包括自动激活字符)是否也应该传播到适应的控件”。但这也不起作用。

实际上对我有用的是: 我向StyledTextWidget添加了一个VerifyKeyListener,并在ProposalPopup打开时过滤了Enter事件。我认为这可能不会起作用,因为在提案之后插入换行符但是在我的程序上它工作正常所以似乎在将Enter键传递给StyledTextWidget之后关闭提议弹出窗口。

下面是代码:

styledText.addVerifyKeyListener(new VerifyKeyListener() {

@Override
public void verifyKey(VerifyEvent arg0) {
        try {
            KeyStroke k = KeyStroke.getInstance("Enter");
            if(k.getNaturalKey() == arg0.keyCode &&  contentProposalAdapter.isProposalPopupOpen()) {
                arg0.doit = false;
            }
        } catch (ParseException e) {
                e.printStackTrace();
        }
    } });

答案 1 :(得分:0)

我不知道您是如何在代码中实现IControlContentAdapterIControlContentAdapter2的。你试过this了吗?我在自定义StyledText实现中使用它。但所有这些都是SWT.SINGLE文本字段。我希望它可以帮助你。