如何在ComboBoxViewerCellEditor中按类型字母输入下拉列表

时间:2017-03-28 16:28:49

标签: eclipse autocomplete eclipse-plugin swt eclipse-rcp

ComboBoxViewerCellEditor我想写点什么,结果我会得到匹配的下拉值。

你能建议怎么做吗?请找到以下代码:

public TCOperationColumnEditable(TableViewer viewer) {
    super(viewer);
    try
    {
        this.viewer = viewer;
        //this.editor = new TextCellEditor(this.viewer.getTable());

        OperationGSON[] allOperations = OperationAPIHandler.getInstance().getAllOperations();

        ArrayList<String> opnName = new ArrayList<String>();

        for(OperationGSON opn : allOperations)
        {
            opnName.add(opn.opnName);
        }
        this.editor = new ComboBoxViewerCellEditor(this.viewer.getTable(), SWT.FULL_SELECTION );

    this.editor.setLabelProvider(new LabelProvider());
    this.editor.setContentProvider(new ArrayContentProvide());
    this.editor.setInput(opnName);
    String[] stockArr = new String[opnName.size()];
    stockArr = opnName.toArray(stockArr);
    new AutoCompleteField(this.viewer.getControl(), new CComboContentAdapter(), stockArr); 
    }
    catch(Exception e)
    {
        System.out.println("[" + getClass().getName() + " : TCOperationColumnEditable()] - Exception : " + e.getMessage());
        e.printStackTrace();
    }
}

enter image description here

1 个答案:

答案 0 :(得分:1)

Subclass TextCellEditor。 对于内容提案,请使用JFace的字段辅助API (org.eclipse.jface.fieldassist)。内容辅助已启用 当第一次激活单元格编辑器时:

if (contentProposalAdapter == null) {
    .... 
    // enable content assist on the cell editor's text widget 
    contentProposalAdapter = new ContentProposalAdapter(text, new TextContentAdapter(), proposalProvider, activationKeyStroke, null); 
} else { 
    contentProposalAdapter.setEnabled(true); 
}
super.activate(); 
....

确保也覆盖方法 TextCellEditor#dependsOnExternalFocusListener()始终返回false。 否则,您将面临一些关注焦点的严重问题。