Unterschiede

Hier werden die Unterschiede zwischen der gewählten und der aktuellen Version gezeigt.

swt-jface:autocompletefield 2007/09/17 16:18 swt-jface:autocompletefield 2020/01/22 20:59 aktuell
Zeile 1: Zeile 1:
 +[[swt-jface:swt-jface|Java - SWT/JFace]]\\
====== AutoCompleteField ====== ====== AutoCompleteField ======
 +//org.eclipse.jface.fieldassist.AutoCompleteField//\\
Die JFace-Klasse AutoCompleteField(..) für ein einfaches Textfield kann beispielsweise so verwendet werden: Die JFace-Klasse AutoCompleteField(..) für ein einfaches Textfield kann beispielsweise so verwendet werden:
<code java> <code java>
Text textField = new Text(); Text textField = new Text();
-String[] str = {"Ananas", "Apfel", "Banane", "Birne", "Kiwi", "Pflaume"};+String[] str = {"Ananas", "Apfel", "Banane", "Birne", "Kiwi", "Pflaume" };
new AutoCompleteField(textField, new TextContentAdapter(), str); new AutoCompleteField(textField, new TextContentAdapter(), str);
</code> </code>
-Sollte das TextField über ein Binding verfügen, so muss das Binding **nach** Erstellung des AutoCompleteField's durchgeführt werden.+Sollte das TextField über ein Binding verfügen, so muss das Binding **nach** Erstellung des AutoCompleteField's durchgeführt werden.\\ 
 +\\ 
 +<html> 
 +  <script type="text/javascript"><!-- 
 +      google_ad_client="pub-9681858985507948"; 
 +      google_ad_width = 468; 
 +      google_ad_height = 60; 
 +      google_ad_format = "468x60_as"; 
 +      google_ad_type = "text"; 
 +      google_ad_channel = ""; 
 +      google_color_border = "cccccc"; 
 +      google_color_bg = "FFFFFF"; 
 +      google_color_link = "1d2d8c"; 
 +      google_color_text = "000000"; 
 +      google_color_url = "1d2d8c"; 
 +      //--> 
 +  </script> 
 +  <script type="text/javascript" 
 +      src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> 
 +  </script> 
 +</html> 
 +\\ 
 +\\ 
 +//org.eclipse.jface.fieldassist.IContentProposal//\\ 
 +//org.eclipse.jface.fieldassist.IContentProposalProvider//\\ 
 +Möchte man in der Auswahlliste einen anderen Text anzeigen, als hinterher übernommen wird, so muss eine eigene Klasse MyAutoCompleteField erstellt werden, welche eine eigene Klasse MyContentProposalProvider instanziert. 
 +Die Klasse MyContenteProposalProvider kann am Einfachsten durch eine Kopie von SimpleContentProposalProvider erzeugt werden. Dort muss dann die Methode makeContentProposal angepasst werden.\\ 
 +Dabei liefert die Methode getContent() den Wert, welcher im Textfeld erscheint. Die Methode getLabel() liefert den Text, welcher in der Auswahl-Liste unter dem Textfeld angezeigt wird und die Methode getDescriptionen() einen zusätzlichen ausführlichen Text, welcher für den jeweils ausgewählten Eintrag der Liste in einem seperaten Fenster daneben angezeigt werden kann.\\ 
 +<code java> 
 +Text textField = new Text(); 
 +String[] str =  {"Ananas", "Apfel", "Banane", "Birne", "Kiwi", "Pflaume" }; 
 +String[] str2 = {"besonders lecker", "schön grün", "wunderbar gebogen",  
 +                "irgendwie nicht rund", "exotisch", "hmm" }; 
 +new MyAutoCompleteField(textField, new TextContentAdapter(), str, str2); 
 +</code> 
 +\\ 
 +<code java> 
 +package com.sowas.javawiki.autocomplete; 
 + 
 +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; 
 +  } 
 +
 +</code> 
 +\\ 
 +[[http://www.fotostacker.de|{{:fotostacker2.png|FotoStacker}}]]FotoStacker, Fotos für Ihre Website\\ 
 +\\ 
 +<code java> 
 +package com.sowas.javawiki.autocomplete; 
 + 
 +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(); 
 +        } 
 +      }; 
 +  } 
 +
 +</code> 

Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007