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で使用されている最新のもののようです)。あなたの最初の問題には当てはまらないかもしれませんが、私はショットを与えます。

基本的に、テキストコンテンツの提案はマウスイベントで正しく機能します。sambireddyによって提供された例はそれを証明します。

ただし、テキストがテーブル内でCellEditorとして使用されている場合、マウスクリックでプロポーザルの1つを選択すると、コンテンツプロポーザルポップアップがすぐに閉じます。私の場合、セルの外にフォーカスを移動するたびに編集された値をコミットするCellEditorの「FocusOut」リスナーが原因でした。確かに、この動作はかなり自然なようです。ただし、コミットするだけでなく、基になるテキストコントロールを破棄することもありました。内部で使用されるポップアップは、ContentProposalAdapter提案された制御の破棄をリッスンしており、これが発生すると自動的に閉じます。それでおしまい。

したがって、この特定の場合の明らかな解決策は次のとおりです。コンテンツ提案ポップアップが開いている場合は、CellEditor値をコミットせず、基になるコントロールを破棄しないでくださいcontentProposalAdapter.isProposalPopupOpen()

于 2013-01-11T08:28:49.223 に答える