Hi, ich habe mich mal mit AutoComplete von JFace beschäftigt
Nun würde ich gerne den String von einer SQL Query füllen lassen, scheitere aber kläglich.
Die AutoComplete Klassen habe ich eingebunden
Aber ich bekomme mein
nicht in eine String übergeben. Hat wer einen tipp, ich steh heut voll auf dem Schlauch.
Nun würde ich gerne den String von einer SQL Query füllen lassen, scheitere aber kläglich.
Die AutoComplete Klassen habe ich eingebunden
Java:
import org.eclipse.jface.fieldassist.ContentProposalAdapter;
import org.eclipse.jface.fieldassist.IControlContentAdapter;
import org.eclipse.swt.widgets.Control;
public class MyAutoCompleteField {
private ContentProposalProvider contentProposalProvider;
private ContentProposalAdapter contentProposalAdapter;
public MyAutoCompleteField(final Control control,
final IControlContentAdapter controlContentAdapter,
final String[] literals,
final String[] labels) {
contentProposalProvider = new ContentProposalProvider(literals, labels);
contentProposalProvider.setFiltering(false);
contentProposalAdapter = new ContentProposalAdapter(control, controlContentAdapter, contentProposalProvider, null, null);
contentProposalAdapter.setPropagateKeys(true);
contentProposalAdapter.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_REPLACE);
}
public void setProposals(final String[] proposals) {
contentProposalProvider.setProposals(proposals);
}
public ContentProposalProvider getContentProposalProvider() {
return contentProposalProvider;
}
public ContentProposalAdapter getContentProposalAdapter() {
return contentProposalAdapter;
}
}
Java:
import java.util.ArrayList;
import org.eclipse.jface.fieldassist.IContentProposal;
import org.eclipse.jface.fieldassist.IContentProposalProvider;
public class ContentProposalProvider implements IContentProposalProvider {
private String[] proposals;
private String[] labels;
private IContentProposal[] contentProposals;
private boolean filterProposals = false;
public ContentProposalProvider(String[] proposals, String[] labels) {
super();
this.proposals = proposals;
this.labels = labels;
}
public IContentProposal[] getProposals(String contents, int position) {
if (filterProposals) {
ArrayList list = new ArrayList();
for (int i = 0; i < proposals.length; i++) {
if (proposals[i].length() >= contents.length()
&& proposals[i].substring(0, contents.length()).equalsIgnoreCase(contents)) {
list.add(makeContentProposal(proposals[i], labels[i]));
}
}
return (IContentProposal[]) list.toArray(new IContentProposal[list.size()]);
}
if (contentProposals == null) {
contentProposals = new IContentProposal[proposals.length];
for (int i = 0; i < proposals.length; i++) {
contentProposals[i] = makeContentProposal(proposals[i], labels[i]);
}
}
return contentProposals;
}
public void setProposals(String[] items) {
this.proposals = items;
contentProposals = null;
}
public void setFiltering(boolean filterProposals) {
this.filterProposals = filterProposals;
contentProposals = null;
}
private IContentProposal makeContentProposal(final String proposal, final String label) {
return new IContentProposal() {
public String getContent() {
return proposal;
}
public String getDescription() {
// Wenn hier was zurückgegeben wird, dann erscheint dieser Text in einem seperatem Fenster
return null;
}
public String getLabel() {
return proposal + " - " + label;
}
public int getCursorPosition() {
return proposal.length();
}
};
}
}
Java:
Text textField = new Text();
String[] str = {"Ananas", "Apfel", "Banane", "Birne", "Kiwi", "Pflaume" };
String[] str = {"besonders lecker", "schön grün", "wunderbar gebogen",
"irgendwie nicht rund", "exotisch", "hmm" };
new MyAutoCompleteField(textField, new TextContentAdapter(), str);
SQL:
SELECT fruechte FROM baum GROUP BY Fruechte;