NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP LØSNINGSFORSLAG

Like dokumenter
EKSAMEN I FAG TDT4180/IT2401 MMI Onsdag 23. mai 2007 Tid: kl

EKSAMEN I FAG TDT4180 MMI Mandag 18. mai 2009 Tid: kl

EKSAMEN I FAG TDT MMI Mandag 4. august 2008 Tid: kl

EKSAMEN I FAG TDT MMI Lørdag 11. august 2012 Tid: kl

EKSAMEN I FAG TDT MMI Tirsdag 1. juni 2004 Tid: kl

MMI-sammendrag fra eksamener

EKSAMEN I FAG TDT MMI Lørdag 4. juni 2005 Tid: kl

EKSAMEN I FAG TDT4180 Menneske-maskin-interaksjon. Lørdag 27. juni 2006 Kl

EKSAMEN I FAG TDT4180 MMI Onsdag 28. mai 2008 Tid: kl

EKSAMEN I FAG TDT4180 MMI Lørdag 15. august 2009 Tid: kl

Eksamensoppgave i TDT4180 Menneske-maskin-interaksjon

EKSAMEN I FAG SIF MMI OG GRAFIKK Lørdag 16. august 2003 Tid: kl

EKSAMEN I FAG TDT4180 MMI Torsdag 27. mai 2010 Tid: kl

Eksamensoppgave i TDT4180 Menneske-Maskin- Interaksjon (MMI)

EKSAMEN I FAG TDT4180 MMI Lørdag 21. august 2010 Tid: kl

EKSAMEN I FAG TDT MMI Mandag 15. august 2011 Tid: kl

NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP. Løsningsforslag

Oppgave 1 (30%) Grensesnittdesign

UNIVERSITETET I OSLO

JList, JTree, JTable. JList

EKSAMEN I FAG TDT MMI Lørdag 26. mai 2012 Tid: kl

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

Konseptuell modell, skjermdesign og konstruksjon

EKSAMEN. Algoritmer og datastrukturer. Eksamensoppgaven: Oppgavesettet består av 11 sider inklusiv vedlegg og denne forsiden.

case forts. Alternativ 1 Alternativer Sammensetning Objekt-interaktor med valg

Hei verden Introduksjon Swift PDF

AMS-case forts. Eksemplifisering av modellbasert. tilnærming til design av brukergrensesnitt

Object interaction. Innhold. Abstraksjon Grunnleggende programmering i Java Monica Strand 3. september 2007.

Grafisk Brukergrensesnitt

TDT4100 Objektorientert programmering

Gjennomgang av eksamen H99

Løsningsforslag (Løsningene i kursiv)

Eksamensoppgave i TDT4180 Menneske-maskin-interaksjon

Tillatte hjelpemidler: alle skrevne og trykte. Antall sider: 2 (+ 1 side vedlegg, bakerst). Oppgave 1 [25%]

Hei verden. Introduksjon. Steg 1: Sette opp Xcode. Skrevet av: Andreas Amundsen

UNIVERSITETET I OSLO

NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

1) Sørg for at du fortsatt er i eventredigeringsmodus (klikk F6 på tastaturet, eller velg ikonet med en person fra menylinjen).

LO191D/LC191D Videregående programmering

UNIVERSITETET I OSLO

Løsningsforslag fra faglærere

GUI-programmering, del 3 Vinduslyttere Dialogvinduer GUI-komponenten JTable Egne datamodellklasser. En oversikt over kapittel 19 i boka

Fagskolen i Troms, Avdeling Tromsø. Gjelder fra:

Testrapport for Sir Jerky Leap

UNIVERSITETET I OSLO

Brukersentert design Kapittel 3 i Shneiderman

Paul Hinsch. MICADO AS Utviklet MapBasic applikasjoner i 10 år. Registreringsknapper og Objektdialog

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Layout og publisering

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

Oppgavesett videregående kurs i NVivo 9

Diverse eksamensgaver

WISEflow. Brukerveiledning for eksamensvakter. Telefonnummer til IT-support:

TDT4100 Objektorientert programmering

INF1010 MVC i tekstbaserte programmer

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

Innhold. Smartfix Skanner Engelsk Manual Programvare -2-

INF Seminaroppgaver til uke 3

IN2010: Algoritmer og Datastrukturer Series 2

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

EKSAMEN I FAG TDT4180 MMI Torsdag 27. mai 2010 Tid: kl

Communicate SymWriter: R1 Lage en tavle

Eksamen i fag SIF8018 Systemutvikling. Fredag 25. mai 2001 kl

Repitisjonskurs. Arv, Subklasser og Grensesnitt

INF1010 Grafisk brukergrensesni3 med Swing og awt del 1 INF1010

Vanlige spørsmål om EndNote (april 2013)

FAGSPESIFIKKE RETNINGSLINJER FOR KARAKTERSETTING VED INNFØRING AV ECTS KARAKTERSKALA VED SAMTLIGE LÆRESTEDER FOR HØYERE PSYKOLOGUTDANNING I NORGE

Liste som abstrakt konsept/datatype

Prøvetilganger (Trials)

TDT4100 Objektorientert programmering

UNIVERSITETET I OSLO

Norges Informasjonsteknologiske Høgskole

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Bruk av kildeavskrifter som er merket med grønn kule

Communicate SymWriter: R5. Brett og knapper

Eksamensoppgave Vår 2012 Ordinær eksamen Bokmål. Videregående programmering. Eksamensdato: Studium/klasse: 2. klasse

Bygge en pyramide. Introduksjon. Steg 1: Lage en ny mod. Sjekkliste. Skrevet av: Pål G. Solheim

EKSAMEN. Emne: Algoritmer og datastrukturer

Tittel Objektorientert systemutvikling 1. Eksamenstid, fra-til Ant. oppgaver 6

KONTINUASJONSEKSAMEN I EMNE TDT4195 BILDETEKNIKK ONSDAG 13. AUGUST 2008 KL

Unit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3

Evaluering av brukskvalitet for et Web-grensesnitt

UNIVERSITETET I OSLO

INF Våren Li' repe$sjon om Tråder og GUI. Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo. Ins$tu' for informa$kk

Compello Fakturagodkjenning Versjon 10 Software as a service. Tilgang til ny modulen Regnskapsføring

UNIVERSITETET I OSLO

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

Komme igang med App Inventor Introduksjon App Inventor PDF

INF Notater. Veronika Heimsbakk 10. juni 2012

D2 - Papirprototyping av design

Lykke til! Eksamen i fag SIF8018 Systemutvikling. 20 mai, 2003 kl Fakultet for fysikk, informatikk og matematikk

Compello Fakturagodkjenning Versjon 10.5 As a Service. Tilgang til Compello Desktop - Regnskapsføring og Dokument import

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

TB-615 / TB-617 Wireless slim keyboard. EN User guide SE Användarhandledning FI Käyttöohje DK Brugervejledning NO Bruksanvisning

Sprettball Erfaren ComputerCraft PDF

Transkript:

NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP Faglig kontakt under eksamen: Dag Svanæs, Tlf: 73 59 18 42 LØSNINGSFORSLAG EKSAMEN I FAG TDT4180/IT2401 MMI Onsdag 23. mai 2007 Tid: kl. 0900-1300 Bokmål Sensuren faller 13. juni 2007 Hjelpemiddelkode: D Ingen trykte eller håndskrevne hjelpemidler tillatt. Bestemt enkel kalkulator tillatt. 1

Karakterskalaen ved NTNU Styret ved NTNU har den 31.08.04 (S-sak 46/04) revidert den generelle beskrivelsen av karaktertrinnene og endret NTNUs studieforskrift 39. Den reviderte beskrivelsen er anbefalt av Utdannings- og forskningsdepartementet og Universitets- og høgskolerådet. Symbol A B C D E F Betegnelse Fremragende Meget god God Nokså god Tilstrekkelig Ikke bestått Generell, ikke fagspesifikk beskrivelse av vurderingskriterier Fremragende prestasjon som klart utmerker seg. Kandidaten viser svært god vurderingsevne og stor grad av selvstendighet. Meget god prestasjon. Kandidaten viser meget god vurderingsevne og selvstendighet. Jevnt god prestasjon som er tilfredsstillende på de fleste områder. Kandidaten viser god vurderingsevne og selvstendighet på de viktigste områdene. En akseptabel prestasjon med noen vesentlige mangler. Kandidaten viser en viss grad av vurderingsevne og selvstendighet. Prestasjonen tilfredsstiller minimumskravene, men heller ikke mer. Kandidaten viser liten vurderingsevne og selvstendighet. Prestasjon som ikke tilfredsstiller de faglige minimumskravene. Kandidaten viser både manglende vurderingsevne og selvstendighet. I tillegg bruker NTNU skalaen bestått/ikke bestått._for obligatoriske aktiviteter som skal registreres, men ikke evalueres - f eks deltakelse på ekskursjoner, innlevering av et bestemt antall oppgaver o l, brukes fullført/ikke fullført. 2

Oppgave 1 (30%) Grensesnittdesign På bildet under ser du en første skisse til et program for å håndtere digitale bilder på en PC, et s.k. digitalt fotoalbum. Dette skjermbildet viser hovedstrukturen for hvordan det kan se ut når brukeren skal legge over bilder fra sitt digitale kamera. Skjermbildet er delt i to. Til venstre er alle foto i kameraet. Til høyre er bildene i albumet. Albumet er delt opp i kategorier som brukeren selv har valgt ( Party, Home etc.). Det brukes tabbed panes for å velge mellom katagoriene. a) Angi tre forskjellige interaksjonsstiler / dialogformer for å flytte bilder fra kamera over til albumet. For hver av løsningene, hvilke grensesnittelementer vil måtte legges til skjermbildet? Hva er fordeler og ulemper med hver av de tre løsningene for dette programmet? Det som kjennetegner dette programmet: Brukergruppe med lite IT-erfaring (eldre). Følgelig viktig at alt er enkelt å forstå. Bruk av bilder gjør at man ikke bør sløse med skjermplass. Bilder tar mye plass. Vi kan ha svaksynte, noe som gjør at liten tekst kan være vanskelig å lese. 3

Tre hovedmetoder er: Direktemanipulasjon (DM) Ikonbasert knapper. Nedtrekksmenyer Skjermelementer: DM krever ingen ekstra elementer. Alt som kreves er at det er mulig å velge ett eller flere elementer og dra de over fra venste til høyre. Ikonbasert krever en knapp pr. operasjon. F.eks. Slett valgte bilde(r), Flytt bilder etc. Nedtrekksmenyer krever at det er menyer på toppen, slik det som regel er i appliasjoner. Det er da naturlig at disse ligger under edit, og bruke cut, clear, paste og copy. Fordeler/Ulemper for dette programmet: DM: Fordeler: o Krever ikke ekstra elementer på skjermen, og sparer følgelig skjermplass. Enkelt og effektiv å bruke når man har forstått det. Ulemper: o Det mangler affordance som forteller at det er mulig å dra ikoner. Dette må forklares på et eller annet vis. Ikoner: Fordeler: o Lett å forstå dersom ikonene plasseres riktig på skjermbildet og ikon/tekst er lett forståelig. Ulemper: Tar skjermplass. Menyer: Fordeler: o Standard måte å gjøre det på i de vanligste plattformene (Windows, MacOs,,). Ulemper: o Tar litt skjermplass. Krever litt flere musetrykk av brukeren. For erfarne brukere kan det legges in shortcuts (Ctrl C, Ctrl V,,). Utifra dette så ser vi en mulig avveining mellom DM som gir mye ledig skjermplass, men krever ekstra forklaring på bruk, og Ikoner/menyer som tar litt plass, men er enklere å forstå for nybegynnere. Karaktersetting: Ren oppramsing av metoder med pros/cons gir max. karakteren C. For B og A kreves at de viser at de har forstått applikasjonen og målgruppens egenart og argumenterer opp mot det. 4

b) Schneiderman har 8 enkle regler for brukergrensesnitt: 1. Lag konsistente grensesnitt. 2. Gi trente brukere shortcuts. 3. Gi informative tilbakemeldinger. 4. Lag tydelige arbeidssteg i dialogene. 5. Unngå feil og gi evt. enkle feilmeldinger. 6. La det være mulig å angre. 7. La brukeren ha kontroll. 8. Reduser behovet for å huske (korttidsminnet) Angi kort hvordan hver av de 8 regelene kan anvendes for albumprogrammet. Lag konsistente grensesnitt. Sørg for at funksjoner som handler om det samme ser likt ut i alle deler av grensesnittet. F.eks. så bør måten å fjerne et bilde fra kameraet være likt måten å fjerne et bilde fra PCen. Gi trente brukere shortcuts. I dette tilfelle kunne det være for f.eks. flytting av bilder. Det er vanlig å legge dette inn i nedtrekksmenyer. For dette konkrete tilfellet så er målgruppen ikke særlig trent. Det er derfor viktig at shortcuts ikke kommer i veien for vanlig bruk, men som et ekstra for erfarne brukere. Gi informative tilbakemeldinger. Dette er ekstra viktig for eldre brukere. Prøv i så stor grad som mulig å unngå at feilsituasjoner oppstår. Dersom de oppstår, så bør det gis detaljert forklaring på hva som er problemet og hva som kan gjøres for å rette det opp. Eksempel: Riktig: PCen har mistet kontakten med kameraet. Det kan skyldes at kabelen mellom kamera og PC ikke lenger er koblet ordentlig. Det kan også skyldes at kameraet er gått tomt for batteri. Når feilen er rettet opp vil programmet kunne fortsette. Feil: Error 12 - USB communication error. Lag tydelige arbeidssteg i dialogene. Dersom brukeren skal gjøre noe i sekvens så er det viktig at de vet hvor de er i prosessen. Eksempel kan være å sette inn og formatere en ny minnebrikke i kameraet. Det bør forklares steg for steg. 5

Unngå feil og gi evt. enkle feilmeldinger. Se over. La det være mulig å angre. Alle handlinger bør kunne angres. For denne målgruppen er det viktig at de kan angre på det meste. Hvis mulig bør det f.eks. tas automatisk backup av bilder som slettes (en søplebøtte som så må tømmes eksplisitt). La brukeren ha kontroll. La aldri programmet ta initiativ til handlinger, slik f.eks. bindersen i Windows prøvde å gjøre. Spesielt for denne målgruppen så ville det sette en del brukere helt ut av spill. Reduser behovet for å huske (korttidsminnet). Sørg for at alle viktige valg til enhvertid er tydelig synlige på skjermen, og ikke gjemt bort i obskure undermenyer. Karaktersetting: Her må de vise at de kan anvende disse prinsippene på dette konkrete eksemplet. Bare generell kunnskap om prinsippene gir max C. 6

Oppgave 2 (30%) Designprosessen Albumprogrammet i oppgave 1 skal følge med som gratisprogram for et nytt digitalt kamera spesielt beregnet for pensjonister og eldre mennesker. Selve kameraet er utformet med få knapper og er gjort så enkelt som mulig. Du har fått i oppdrag å finne ut hvilke funksjoner som skal tilbys i albumprogrammet. Mulighetene er mange, som f.eks. automatisk utlegging på hjemmeside, fjerning av røde øyne, tidslinje, tagging med GPS data og mye annet. Hvordan vil du gå fram for å identifisere det riktige utvalget av funksjoner for denne målgruppen? Du har ressurser til å anvende tilsammen kun tre brukersentrerte metoder. a) Hvilke tre metoder ville du ha valgt? Begrunn svaret. Karaktersetting: For alle deloppgavene gjelder også her at ren oppramsing av metoder med pros/cons gir max. karakteren C. For B og A kreves at de viser at de tar utgangspunkt i applikasjonen og målgruppens egenart og argumenterer opp mot dette. Det som kjennetegner situasjonen: Målgruppe med liten IT-erfaring. Tidlig fase av prosjekt, med fokus på kravinnhenting. En del rammebetingelser, som f.eks. et ferdig kamera, er gitt. Dette er en digitalisering av en allerede eksisterende praksis og teknologi ( gammeldagse foto og fotoalbum) Jeg ville ha fokusert på metoder som gir dialog med brukerne gjennom konkrete eksempler. Det er også viktig å få innsikt i hvordan brukergruppen bruker foto i dag. 1. Jeg ville ha begynt med et dybdeintervju med noen utvalgte pensjonister om hvordan de bruker foto og fotoalbum idag. Jeg ville bedt de om å vise meg albumene sine og fortelle meg hvordan de gjør når de tar bilder og når de får bilder tilbake fra framkalling. Dette for å få innsikt i context-of-use. Jeg ville også ha intervuet de om hvordan de bruker PC, internett, mobiltelefon og annen elektronikk i dag. 2. Basert på det jeg lærte gjennom intervjuene så ville jeg ha laget noen enkle papirprototyper (skjermbilder) som jeg hadde vist fram i en fokusgruppe av pensjonister. Disse ville jeg ha supplert med noen enkle scenarier som jeg hadde laget for å illustrere bruken. Jeg ville så ha ønsket tilbakemelding på disse ideene og generelle krav til et slikt system. 7

3. Etter å ha gjennomført fokusgruppen ville jeg ha laget en mer utfyllende prototyp som jeg hadde gjort en wizard-of-oz test på noen brukere. Jeg ville ha brukt mye tid etter testene på prat rundt hva de tenker om noe slikt, og hva de anser som vesentlig og mindre vesentlig med en slik tjeneste. b) Angi hver av de tre valgte metodenes styrker og svakheter for denne oppgaven. Styrken til intervjuene er at de gir dybdekunnskap om brukerne og deres hverdag. Ulempen er at man bare når et fåtall brukere. Styrken til fokusgruppen er at man får tilbakemelding på konkrete forslag. Ulempen er at det er mange stemmer og det er lett å overse viktige detaljer. Det er også egentlig få brukere. Styrken med Wizard-of-Oz test er at den er billig sammenlignet med en full test av kjørende prototyp. Den gir også tilbakemelding på brukervennlighet og egnetheten av konkrete løsninger. Ulempen er at det er en kunstig situasjon og at prototypen er meget ufullstendig. c) For hver av de tre metodene, angi viktige ting å huske på med referanse til ISO9241-11 sin definisjon av brukervennlighet: Anvendbarhet, effektivitet og tilfredsstillelse for bestemte brukere med bestemte mål i bestemte omgivelser. Intervju: Det er viktig å plukke ut representative brukere. Å forstå hva de gjør i dag (mål med å ta vare på bilder og lage fotoalbum), og i hvilke omgivelser de gjør det (for seg selv, for å vise fram til andre,,,). Anvendbarhet går på å identifisere de sentrale funksjonene. Er effektivitet viktig? Hva kreves for å få god subjektiv tilfredstillelse? Fokusgruppe: Har vi funnet representative brukere? Mål: Er scenariene realistiske? Omgivelser: Er de satt i realistiske omgivelser? Anvendbarhet: Er det dette de primært ønsker å kunne gjøre med programmet? Effektivitet: Hva er det viktig at går fort (hvis noe)? Hva bør være brukeropplevelsen? Wizard-of-Oz test: Mye likt som for fokusgruppen. Det bør spørres om målgruppe, mål, og omgivelser i debriefingen etter testen. Karaktersetting: På 2c er det viktig at de forstår at ISO9241-11 kan brukes som en slags veiledning når man anvender brukersentrerte metoder. De som ikke har sett koblingen får ikke bedre enn D her. 8

Oppgave 3 (40%) Grensesnittkonstruksjon For å teste implementasjonen av programmet skal det lages en enkel prototyp i SWING. I stedet for ikoner brukes det lister med navnet på bildene (tekst). SWINGkomponenten JList brukes i denne implementasjonen. Figuren under viser en skjematisk oversikt over denne testimplementasjonen. I denne første versjonen er bildene i albumet ikke ordnet i kategorier, altså kun en liste av alle bildenavnene. JList med bildene i kameraet Flytt valgte bilde JList med bildene i albumet Slett valgte bilde Til venstre er en JList med listen av bildene i kameraet. Listen tillater valg av et element (single selection). Til høyre er en JList med listen av bildene i albumet på PCen. Det er to knapper, implementert som JButtons. Knappen under den venstre listen brukes til å slette valgte bilde i kameraet. Knappen mellom listene brukes til å flytte valgte bilde fra kameraet til albumet. Bildet skal da forsvinne fra kameraet. Dersom det er gjort et valg i høyre liste så skal bildet legges etter dette valget. Dersom ikke noe er valgt, så skal bildet legges først i listen. For enkelhets skyld kan du bruke DefaultListModel som datamodell for hver av de to listene og JPanel som ytre innpakning for alle elementene. a) Forklar den grunnleggende ideen bak Model-View-Controller -prinsippet (MVC): Hva er hensikten med MVC, og hvordan er MVC realisert i Swing? MVC er en programvare arkitektur / teknikk for å skille data fra grensesnittelementer. Det kan sees på som en realisering av de to øverste lagene i en 3-lags arkitektur (grensesnitt, business logic, persistens). MVC stammer fra Smalltalk prosjektet, der man skilte mellom modellen, viewet og kontrolleren. Modellen innholder alle data som forandrer seg under kjøring. Viewet tar seg av presentasjon på skjerm, mens kontroller tar seg av input. 9

Model, View og Controller objekter kobles under kjøring sammen slik at en modell kan ha flere View-Controller par koblet til seg. Ved å automatisere oppdatering av alle views når modellen endres, så innfører man en abstraksjon som gjør det mulig lett å legge til nye views. Oppdatering av views gjøres ved at modellen holder en liste med de View- Controllere som er koblet til den, og når det skjer en endring av modellen så sendes det beskjed til alle views om at det har skjedd en endring. Hvert enkelt view er så ansvarlig for å oppdatere seg selv ved å spørre modellen som sine data. Dette krever at all forandring av variable i modellen skjer gjennom egne set metoder slik at modellen kan sende de riktige oppdateringsmeldingene. b) Anvend MVC-prinsippet på testimplementasjonen. Hvilke objekter/instanser vil eksistere når programmet kjører? Tegn opp objektene og vis v.h.a. piler hvilke relasjoner som finnes mellom objektene. Vis v.h.a. et sekvensdiagram og forklar tekslig hva som skjer initielt når programmet startes opp. Vis v.h.a. et sekvensdiagram og forklar tekslig hva som skjer når brukeren har valgt et element i listen til venstre og trykker knappen for å slette valgte element. Vis v.h.a. et sekvensdiagram og forklar tekslig hva som skjer når brukeren har valgt et element i listen til venstre og trykker knappen for å flytte valgte element over til albumet. Oversikt over objekter: 10

Sekvensdiagram for oppstart: For å få plass i bredden har jeg delt sekvensdiagrammet i to. Først det som kobler modellene til sine JList objekter. JPanel objektet sender setmodel til JList objektene. AddListDataListener blir så sendt automatisk av JList objektene til sine respektive modellobjekter: Deretter blir knappene knyttet til pictureeditor med call backs. Dette fordrer at pictureeditor implementerer interfacet ActionListener: I tillegg til det som er vist her så settes begge listene i SINGLE_SELECTION mode ved oppstart og begge JList og JButton objektene legges inn i pictureeditor:jpanel med add. Sekvensdiagram for sletting av element: Brukeren trykker på deletebutton knappen. Det starter en call-back til JPanel obektet. Det spør så camera_list om hvilket bilde som er valgt og sender beskjed til camera_model om å slette det bildet. Dette skaper da automatisk et kall til seg selv om at noe er endret (firecontentschanged). camera_list er det eneste objektet som har camera_model som modell. Det får beskjed om at noe er endret (contentschanged), og spør så modellen om størrelse på listen (getsize). Deretter itereres det over alle element 0..n i listen og henter nye data fra modellen som skal vises i lista på skjermen (getelementat): 11

Sekvensdiagram for flytting: Flytting er veldig lik sletting. I tillegg til sletting så blir valgte element i cameralist hentet ut fra modellen og lagt inn i PC_List sin modell. Oppdatering og samspill mellom modell og liste er lik: c) JButton har en metode void setenabled(boolean b) som gjør det mulig å sette en knapp i passiv modus slik at den ikke kan ta imot brukerklikk. I denne implementasjonen så hadde det vært ønskelig at de to knappene var passive når det ikke var gjort valg i venstre liste. Forklar kort hvilke mekanismer JList tilbyr som kunne vært benyttet for å realisere denne funksjonaliteten. Detaljene for besvarelse av denne oppgaven er ikke med i tillegget. Svaret er derfor på et litt generelt plan med utgangspunkt i det som er pensum i faget: JList har også en s.k. selectionmodel som tar hånd om seleksjon. Denne kan modifiseres slik at alle endringer av seleksjon fører til et kall. Endringskallet kan sendes enten til JPanel eller til selve knappen. Den som får endringshendelsen kan så sjekke om JList har noe innhold ved å spørre dens modell getsize(). Dersom den har innhold så kalles setenabled(true) ellers setenabled(false) på knappen. 12

Relevante definisjoner fra SWING-dokumentasjonen. public class JList extends JComponent implements ListDataListener A component that allows the user to select one or more objects from a list. A separate model, ListModel, represents the contents of the list. Method Summary void setmodel(listmodel model) Sets the model that represents the contents or "value" of the list and clears the list selection after notifying PropertyChangeListeners. void setselectionmode(int selectionmode) Determines whether single-item or multiple-item selections are allowed. ListSelectionModel.SINGLE_SELECTION Only one list index can be selected at a time boolean isselectionempty() Returns true if nothing is selected. int getselectedindex() Returns the first selected index; returns -1 if there is no selected item. (If single selection mode, this method returns the index of the selected object, if any. 1 if no object selected). public interface ListModel This interface defines the methods components like JList use to get the value of each cell in a list and the length of the list. Logically the model is a vector, indices vary from 0 to ListDataModel.getSize() - 1. Any change to the contents or length of the data model must be reported to all of the ListDataListeners. Method Summary Object getelementat(int index) Returns the value at the specified index. int getsize() Returns the length of the list. void addlistdatalistener(listdatalistener l) Adds a listener to the list that's notified each time a change to the data model occurs. void removelistdatalistener(listdatalistener l) Removes a listener from the list that's notified each time a change to the data model occurs. 13

public class DefaultListModel extends AbstractListModel This class loosely implements the java.util.vector API, in that it implements the 1.1.x version of java.util.vector, has no collection class support, and notifies the ListDataListeners when changes occur. All Implemented Interfaces: ListModel Method Summary Object getelementat(int index) Returns the component at the specified index. int getsize() Returns the number of components in this list. void add(int index, Object element) Inserts the specified object as a component in this list at the specified index. (index = 0 inserts the element first in the list). void removeelementat(int index) Deletes the component at the specified index public abstract class AbstractListModel extends Object implements ListModel The abstract definition for the data model that provides a List with its contents. Method Summary void addlistdatalistener(listdatalistener l) Adds a listener to the list that's notified each time a change to the data model occurs. protected void firecontentschanged(object source, int index0, int index1) AbstractListModel subclasses must call this method after one or more elements of the list change. public interface ListDataListener extends EventListener Method Summary void contentschanged(listdataevent e) Sent when the contents of the list has changed 14

public class JButton extends AbstractButton Constructor Summary JButton(String text) Creates a button with text. public abstract class AbstractButton extends Jcomponent Method Summary void addactionlistener(actionlistener l) Adds an ActionListener to the button. void setenabled(boolean b) Enables (or disables) the button. public interface ActionListener extends EventListener Method Summary void actionperformed(actionevent e) Invoked when an action occurs. public class JPanel extends JComponent JPanel is a generic lightweight container Kommentarer: ActionEvent er ikke relevant for oppgaven, og er ikke listet her. EventListener er ikke relevant for oppgaven og er ikke listet. For de spesielt SWING-interesserte: I den faktiske implementasjon av SWING så bruker JList en egen intern klasse for å implementere ListDataListener interfacet. Resultatet er det samme som om den implementerte dette direkte. 15