3

クラスを使用org.eclipse.jface.fieldassist.AutoCompleteFieldして、コンボボックスのオプションを提案しています。ただし、最初に入力されたテキストに一致するエントリを提案するだけなので、役に立ちません。

JavaCode:

   ComboContentAdapter comboAdapter = new ComboContentAdapter();                    
   new  AutoCompleteField(branchCombo,comboAdapter,branchCombo.getItems());

例 :

コンボボックスオプション:

['ZMEDIA_TWITTER_MIGRATION_BRANCH','ZMEDIA_TWITTER_HOTFIX_BRANCH','ZMEDIA_FB_BRANCH'].

TWITTERコンボボックスに入力すると、何も表示されません。TWITTERコンボボックスオプションのwithstartswithmatchのように見えます。

これを上書きするオプションはありますか?

ありがとうございます

4

2 に答える 2

4

簡単に言えば、ありません。

ただし、これはorg.eclipse.jface.fieldassist.IContentProposalProvider、フィルタリングロジックをそのgetProposals(String contents, int position)メソッドに実装および実装することにより、独自のプロポーザルプロバイダーを作成することで実現できます。

次に、次のように、プロポーザルプロバイダーをに追加しContentProposalAdapterてコンボボックスを調整します。

MyContentProposalProvider provider = new  MyContentProposalProvider(combo.getItems());
ContentProposalAdapter adapter = new ContentProposalAdapter(combo, comboAdapter, provider, null, null);
adapter.setPropagateKeys(true);
adapter.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_REPLACE);
于 2012-11-10T18:56:23.620 に答える
1

tkotisisが言ったように、独自のIContentProposalProviderを実装できます。プロバイダーに、ユーザーが入力した文字のいずれかを含むすべてのプロポーザルを提供させたい場合は、私が思いついたこのコードを使用できます。

注: charへの変換は必須ではありませんが、rawバイトを使用することもできますが、プロバイダーをさらに処理したい場合は、charを使用する方が簡単です。

IContentProposalProvider proposalProvider = new IContentProposalProvider() {

            @Override
            public IContentProposal[] getProposals(String contents, int position) {
                String[] props = new String[] { "Test0", "Test1", "Test2",
                        "Test3" }; // This is all your propsals.
                List<IContentProposal> validProposals = new ArrayList<IContentProposal>();
                for (String prop : props) {
                    contents = contents.substring(0, position);
                    for (byte b : contents.getBytes()) {
                        char c = (char) (b & 0xFF);
                        if (prop.indexOf(c) != -1) { // This is where it checks if the proposal contains the chars.
                            validProposals.add(new ContentProposal(prop));
                            break;
                        }
                    }
                }
                return validProposals.toArray(new IContentProposal[validProposals.size()]);
            }
        };
于 2013-11-22T18:05:57.647 に答える