Oto kontrolka do wyszukiwania:
Czym taka kotrolka powinna się charakteryzować?
- wizualnie:
- ikonka jednoznacznie mówiąca nam "szukaj" - lupa jest już głęboko zakorzeniona w świadomości użytkowników
- tekst zachęcający do rozpoczęcia wyszukiwania
- w/w tekst nie może jednak przeszkadzać w korzystaniu z kontrolki. Dlatego też:
- tekst zachęcający jest szary, podczas gdy wyszukiwana fraza jest czarna
- wpisanie jednego znaku do kontrolki w czasie gdy jest w niej domyślny tekst powoduje jego zniknięcie
- skasowanie całej frazy wyszukiwania przywraca domyślny tekst
- tekst zachęcający nie jest zwracany jako wynik wyszukiwania (o tym za chwilę)
- użytkowo:
- z resztą programu kontrolka komunikuje się, udostępniając szukaną frazę (string SearchValue) oraz zdarzenie odpalane w czasie zmiany tekstu (SearchValueChanged)
- kluczowy feature: brak potwierdzenia wyszukiwania (naciskania Enter, klikania Search itd) - czyli stosujemy mechanizm "pisz i od razu szukaj"
- "od razu" nie musi być równe "natychmiast" - kontrolka powinna posiadać pewną bezwładność, czyli opóźnienie między zakończeniem edycji tekstu do wyszukania a samym wyszukaniem. Jego długość powinna zależeć od skomplikowania wyszukania a także tego, jak szybko użytkownik jest w stanie sprecyzować swoje wyszukanie
- samo wyszukiwanie powinno być zaimplementowane możliwie wydajnie - użytkownik chce na bieżąco widzieć wynik swoich poszukiwań
- jak zrealizować powyższe? Trzeba pamiętać, że przez większość czasu użytkownik będzie myślał, a nie pisał - jeżeli więc możemy w tle budować sobie cache, to jest to doskonałe rozwiązanie