Class 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 Summary

      Fields 
      Modifier and Type Field Description
      static int DEFAULT_DELAY
      Das Default-Delay nach dessen Ablauf das Widget mit der Suche beginnen soll.
    • Constructor Summary

      Constructors 
      Constructor Description
      SearchInput()
      Erzeugt eine neue Such-Box.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addListener​(org.eclipse.swt.widgets.Listener l)
      Fuegt dem Eingabe-Feld einen Listener hinzu, der bei jedem Focus-Wechsel ausgeloest wird.
      void disable()
      Deaktiviert das Eingabefeld.
      void enable()
      Aktiviert das Eingabefeld.
      void focus()
      Gibt diesem Eingabefeld den Focus.
      protected java.lang.String format​(java.lang.Object bean)
      Formatiert die Bean passend fuer die Anzeige in der Combo-Box.
      org.eclipse.swt.widgets.Control getControl()
      Liefert das eigentliche Eingabecontrol.
      java.lang.String getText()
      Liefert den derzeit angezeigten Text zurueck.
      java.lang.Object getValue()
      Liefert das aktuelle Objekt.
      boolean isEnabled()
      Prueft, ob das Eingabe-Feld aktiv ist.
      void setAttribute​(java.lang.String name)
      Legt den Namen des Attributes fest, welches von den Objekten angezeigt werden soll.
      void setDelay​(int millis)
      Legt ein abweichendes Delay fest.
      void setEnabled​(boolean enabled)
      Aktiviert oder deaktiviert das Eingabe-Feld.
      void setMaxLength​(int maxLength)
      Definiert die maximal eingebbare Menge von Zeichen.
      void setMinWidth​(int width)
      Legt eine Mindest-Breite fuer die Ergebnisliste in Pixeln fest.
      void setSearchString​(java.lang.String text)
      Legt einen abweichenden Text fest, der vor Eingabe der Suche angezeigt wird.
      void setStartAt​(int length)
      Legt fest, ab wieviel eingegebenen Zeichen die Suche starten soll.
      void setText​(java.lang.String s)
      Speichert den anzuzeigenden Text.
      void setValue​(java.lang.Object o)
      Schreibt einen neuen Wert in das Eingabefeld.
      java.util.List startSearch​(java.lang.String text)
      Diese Funktion sollte ueberschrieben werden, wenn die Liste der Vorschlaege bei Eingabe von Suchbegriffen aktualisiert werden soll.
      protected void update()
      BUGZILLA 743
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • 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:
        Constant Field Values
    • Constructor Detail

      • SearchInput

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

      • setSearchString

        public void setSearchString​(java.lang.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​(java.lang.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 java.lang.String format​(java.lang.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 java.util.List startSearch​(java.lang.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 java.lang.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:
        Input.getValue()
      • getText

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

        public void setText​(java.lang.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​(java.lang.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.