Class SearchInput

java.lang.Object
de.willuhn.jameica.gui.input.AbstractInput
de.willuhn.jameica.gui.input.SearchInput
All Implemented Interfaces:
Input, Part

public class SearchInput extends AbstractInput
Erzeugt eine Such-Box, in der man Text eingaben kann.

Kann prima zur Erstellung eines Suchfeldes genutzt werden, welches bei jeder Eingabe eines Zeichens eine Liste mit Vorschlaegen anzeigen kann.

Beispiel fuer die Verwendung:


 project = new SearchInput() {
   public List startSearch(String text) {
     try {
       DBService service = (DBService) Application.getServiceFactory().lookup(Plugin.class,"database");
       DBIterator result = service.createList(Project.class);
       if (text != null) {
         text = "%" + text + "%";
         result.addFilter("(name like ? or description like ?)", new Object[]{text,text});
       }
       return PseudoIterator.asList(result);
     }
     catch (Exception e) {
       Logger.error("unable to load project list",e);
       return null;
     }
   }
 };
 project.setValue(getTask().getProject());
 
Author:
willuhn
  • Field Details

    • DEFAULT_DELAY

      public static final int DEFAULT_DELAY
      Das Default-Delay nach dessen Ablauf das Widget mit der Suche beginnen soll. Angabe in Millisekunden.
      See Also:
  • Constructor Details

    • SearchInput

      public SearchInput()
      Erzeugt eine neue Such-Box.
  • Method Details

    • setSearchString

      public void setSearchString(String text)
      Legt einen abweichenden Text fest, der vor Eingabe der Suche angezeigt wird. Standardmaessig wird "Suche..." verwendet. Mit dieser Funktion kann der Wert geaendert werden.
      Parameters:
      text - der anzuzeigende Text.
    • setAttribute

      public void setAttribute(String name)
      Legt den Namen des Attributes fest, welches von den Objekten angezeigt werden soll. Bei herkoemmlichen Beans wird also ein Getter mit diesem Namen aufgerufen.

      Wird kein Attribut angegeben, wird bei Objekten des Typs GenericObject der Wert des Primaer-Attributes angezeigt, andernfalls der Wert von Object.toString().

      Parameters:
      name - Name des anzuzeigenden Attributes (muss via GenericObject.getAttribute(String) abrufbar sein).
    • setMaxLength

      public void setMaxLength(int maxLength)
      Definiert die maximal eingebbare Menge von Zeichen.
      Parameters:
      maxLength - Anzahl
    • setStartAt

      public void setStartAt(int length)
      Legt fest, ab wieviel eingegebenen Zeichen die Suche starten soll.
      Parameters:
      length - Mindest-Anzahl von Zeichen, ab der die Suche starten soll. Werte ≤ 0 werden ignoriert. Default: 1.
    • setMinWidth

      public void setMinWidth(int width)
      Legt eine Mindest-Breite fuer die Ergebnisliste in Pixeln fest. Wird kein Wert oder 0 angegeben, wird die Breite automatisch ermittelt.
      Parameters:
      width - die Mindest-Breite der Ergebnisliste.
    • setDelay

      public void setDelay(int millis)
      Legt ein abweichendes Delay fest.
      Parameters:
      millis - das Delay.
    • format

      protected String format(Object bean)
      Formatiert die Bean passend fuer die Anzeige in der Combo-Box.
      Parameters:
      bean - die Bean.
      Returns:
      String mit dem anzuzeigenden Wert.
    • startSearch

      public List startSearch(String text)
      Diese Funktion sollte ueberschrieben werden, wenn die Liste der Vorschlaege bei Eingabe von Suchbegriffen aktualisiert werden soll. Die Standardimplementierung macht schlicht keine Suche sondern laesst alles, wie es ist.
      Parameters:
      text - der momentan eingegebene Suchtext.
      Returns:
      eine neue Liste mit den als Suchvorschlaegen anzuzeigenden Objekten. Die Funktion kann sowohl null als auch eine leere Liste zurueckgeben, wenn nichts gefunden wurde.
    • addListener

      public void addListener(org.eclipse.swt.widgets.Listener l)
      Description copied from interface: Input
      Fuegt dem Eingabe-Feld einen Listener hinzu, der bei jedem Focus-Wechsel ausgeloest wird. Besteht das Eingabe-Feld aus mehreren Teilen (z.Bsp. bei SearchInput aus Eingabe-Feld + Knopf dahinter) dann wird der Listener bei Focus-Wechsel jedes dieser Teile ausgeloest.
      Specified by:
      addListener in interface Input
      Overrides:
      addListener in class AbstractInput
      Parameters:
      l - zu registrierender Listener.
    • getControl

      public org.eclipse.swt.widgets.Control getControl()
      Description copied from interface: Input
      Liefert das eigentliche Eingabecontrol. Es muss von jeder abgeleiteten Klasse implementiert werden und das Eingabe-Feld zurueckliefern.

      Da der Implementierer das Composite benoetigt, in dem das Control positioniert werden soll, kann er sich der Methode AbstractInput.getParent() in dieser Klasse bedienen.

      Returns:
      das zu zeichnende Control.
    • getValue

      public Object getValue()
      Liefert das aktuelle Objekt. Das ist entweder das ausgewaehlte aus der letzten Suche oder das initial uebergebene.
      Returns:
      Wert des Feldes.
      See Also:
    • getText

      public String getText()
      Liefert den derzeit angezeigten Text zurueck.
      Returns:
      Text.
    • setText

      public void setText(String s)
      Speichert den anzuzeigenden Text.
      Parameters:
      s - Text.
    • focus

      public void focus()
      Description copied from interface: Input
      Gibt diesem Eingabefeld den Focus.
    • disable

      public void disable()
      Description copied from interface: Input
      Deaktiviert das Eingabefeld.
    • enable

      public void enable()
      Description copied from interface: Input
      Aktiviert das Eingabefeld.
    • setEnabled

      public void setEnabled(boolean enabled)
      Description copied from interface: Input
      Aktiviert oder deaktiviert das Eingabe-Feld.
      Parameters:
      enabled - true, wenn es aktiv sein soll.
    • setValue

      public void setValue(Object o)
      Description copied from interface: Input
      Schreibt einen neuen Wert in das Eingabefeld.
      Parameters:
      o - der neu anzuzeigende Wert.
    • isEnabled

      public boolean isEnabled()
      Description copied from interface: Input
      Prueft, ob das Eingabe-Feld aktiv ist.
      Returns:
      true, wenn es aktiv ist.
    • update

      protected void update() throws OperationCanceledException
      BUGZILLA 743
      Overrides:
      update in class AbstractInput
      Throws:
      OperationCanceledException