Автозаполнение предложения для SWT Combo - PullRequest
0 голосов
/ 13 января 2019

Учитывая приведенный ниже код, который работает правильно, как реализовать предложения, которые содержат письменные слова, а не только предложения, которые начинаются с данной последовательности?

Я ищу что-то вроде "% LIKE%" в SQL. Например, при написании слова «машина» я хочу предложить такие слова, как «зелёная зелень».

SimpleContentProposalProvider proposalProviderNegozio = new SimpleContentProposalProvider(combonegozio.getItems());
ContentProposalAdapter proposalAdapterNegozio = new ContentProposalAdapter(combonegozio, new ComboContentAdapter(),
        proposalProviderNegozio, getActivationKeystroke(), getAutoactivationChars());

proposalProviderNegozio.setFiltering(true);
proposalAdapterNegozio.setPropagateKeys(true);
proposalAdapterNegozio.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_REPLACE);

1 Ответ

0 голосов
/ 13 января 2019

Вместо SimpleContentProposalProvider напишите свой собственный класс, который реализует IContentProposalProvider.

Этот интерфейс имеет только один метод:

public IContentProposal[] getProposals(String contents, int position)

Вам дано текущее контрольное содержимое и позиция вставки, и вы можете вернуть соответствующие предложения.

Вы можете использовать класс ContentProposal, который реализует IContentProposal для результатов.

Таким образом, простой поставщик, который возвращается к предложениям, если текст «машина», может быть:

class MyProposalProvider implements IContentProposalProvider
{
  @Override
  public IContentProposal [] getProposals(final String contents, final int position)
  {
    if (contents.equals("car")) {
      return new IContentProposal [] {
        new ContentProposal("proposal 1", "description 1", null),  
        new ContentProposal("proposal 2", "description 2", null),  
      };
    }

    return new IContentProposal [0];
  }
}

и ваш код становится:

IContentProposalProvider myProvider = new MyProposalProvider();
ContentProposalAdapter proposalAdapterNegozio = new ContentProposalAdapter(combonegozio, new ComboContentAdapter(),
        myProvider, getActivationKeystroke(), getAutoactivationChars());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...