2

我正在合作ContentProposalAdapter向表格中的单元格提出建议。

当我使用键盘时(通过键盘选择哪个建议并按 Enter),表格单元格中的值将被替换(由于adapter.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_REPLACE))。

但是当我双击提案时,单元格中的值保持不变。有什么解决办法吗?

请注意,RCP 应用程序基于 3.4.0。

4

2 回答 2

1

上述场景在 3.7.0 中运行。我不确定 3.4.0

示例测试代码:

public class ContentProposalTest {

  public static void main(String[] args) {

    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new GridLayout(1, false));
    IContentProposalProvider proposalProvider = new SimpleContentProposalProvider(new String[]{"Test","Test1","Test2","Test4"});
    Control text = new Text(shell, SWT.BORDER);
    ContentProposalAdapter adapter = new ContentProposalAdapter(text, new TextContentAdapter(), proposalProvider, null, null);
    adapter.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_REPLACE);
    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    display.dispose();
  }
}
于 2012-11-29T17:03:25.580 回答
0

我用 解决了同样的问题ContentProposalAdapter,但是我使用的是 JFace 3.8(似乎是最新的,在 Eclipse 4.2 Juno 中使用)。您最初的问题可能不是这种情况,但我会试一试。

基本上,文本内容提议与鼠标事件一起正常工作,sambi reddy提供的示例将证明这一点。

但是,当 Text 在 Table 内用作 CellEditor 时,内容建议弹出窗口会在您通过鼠标单击选择其中一个建议后立即关闭。在我的情况下,它是由 CellEditor 的“FocusOut”侦听器引起的,每当您将焦点移出单元格时,它都会提交编辑的值。当然,这种行为看起来很自然。然而,除了提交之外,它还处理了底层的 Text 控件。问题是内部使用的弹出窗口ContentProposalAdapter正在侦听它建议的控制处置,并在发生这种情况时自行关闭。就是这样。

因此,在这种特殊情况下,明显的解决方案是:避免提交 CellEditor 值,并且如果内容提议弹出窗口打开,则不释放底层控制,可以通过contentProposalAdapter.isProposalPopupOpen().

于 2013-01-11T08:28:49.223 回答