Göm menyn

Laboration 2 - Komplexa komponenter och datamodeller

Syfte

Användare är olika, och även samma användare kan vilja interagera på olika sätt med samma applikation beroende på dennes mål med användandet. Det är därför viktigt för många användargränssnitt att hantera flera former av interaktion för att uppnå samma mål.

Uppgift

I denna laboration är uppgiften att tillhandahålla två sätt att traversera och visualisera data i en trädliknande struktur. Användargränssnittet består dels av en trädliknande komponent som tillhandahålls av ExpandableListView och dels av en TextField där den aktiva noden representeras som en sökväg som i UNIX (exempelvis /medium/yellow ). Båda interaktionsmetoderna ska fungera parallellt på ett snyggt och konsistent sätt. Detta innebär att om en nod är markerad i den ena vyn så ska den också vara det i den andra (du ska alltså markera det sista elementet i sökvägen). Följande krav ställs på applikationen:

  • Applikationen ska använda en lämplig layouthanterare och klara olika storlekar på fönstret.
  • Fyll trädet med hierarkisk data som du skapat själv, minst 10 noder vettigt fördelade i minst 2 nivåer. Några (men inte alla) ska ha identiska sökvägar, dvs minst 2 barn-noder i varje förälder-node.
  • När en nod väljs så ska vägen från rotnoden till den aktuella noden synas i textfältet (exempelvis "/medium/yellow").
  • Om ingenting är markerat i trädet så ska "/" synas i textrutan.
  • När någonting skrivs i textfältet som inte matchar något i trädet helt, men som kan matcha om användarendaren fortsätter skriva så skall den senast matchade noden vara markerad. Textfältets bakgrundsfärg skall vara vit
  • När någonting skrivs i textfältet som inte kan matcha något i trädet så ska inget vara markerat i trädet, men textfältets bakgrundsfärg skall vara röd.
  • När något skrivs som matchar en nod i trädet skall denna markeras. Trädet skall automatiskt expanderas så att den aktiva noden syns. Det räcker att den första matchade noden markeras.

Det är upp till dig att hitta testfall, men det finns ett som ofta misslyckas som vi ger dig gratis: Skapa ett träd med 4 noder b, b1, c, d. Alla noder har samma text som namn, utom b1 som har texten "b". c är barn till b, d är barn till b1. Kan du hitta "/b/c" och "/b/d" ?

Tips

  • Vilka datamodeller finns redan (Vilken används i ExpandableListView)? Vilka datamodeller och/eller actions är du intresserad av? Behöer du skapa en ny datamodell som passar dig eller finns det en som passar dig.
  • Hur ska du få de olika delarna att samverka, särskilt när det gäller att hålla ordning på markeringarna. Fundera över om designmönstret Mediator kan hjälpa.

Redovisning

Demonstrera dina applikation för labassistenten, assistenten kan be dig förklara delar av koden. Assistenten berättar hur hen vill att du lämnar in din kod.


Sidansvarig: Anders Fröberg
Senast uppdaterad: 2016-11-08