Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan...

82

Transcript of Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan...

Page 1: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of
Page 2: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Hogeschool GentDepartement Industriele Wetenschappen

Vakgroep Elektronica

Academiejaar 2004–2005

FIM for iTV

Koen De Voegt

Promotoren:Ir. K. Handekyn (Alcatel Antwerpen)

Ir. L. Colman (Hogeschool Gent)

Scriptie voorgedragen tot het behalen van het diploma vanIndustrieel Ingenieur Elektronica optie ICT

Page 3: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Woord vooraf

Het schrijven van een afstudeerscriptie vormt een belangrijk deel van iemands opleiding. Om tot eendegelijk resultaat te komen is er dan ook een degelijke begeleiding noodzakelijk. De mensen die hier-voor in mijn geval gezorgd hebben wil ik dan ook uitvoerig bedanken.

Allereerste wil ik mijn stage begeleider ir. Koen Handekyn en het ganse ReNA-team van AlcatelAntwerpen bedanken. Zij gaven mij de kans te werken met zeer boeiende technologie in een inspire-rende omgeving.

Verder bedank ik ook graag ir. Luc Colman, voor zijn wijze raad bij de opbouw van dit schrijven.

Als laatste bedank ik iedereen die geholpen heeft bij het vinden van schrijf- en typfouten. Waar-bij ik in het bijzonder mijn zus Veerle De Voegt wil vermelden.

Koen De VoegtAntwerpen, 20 mei 2005

i

Page 4: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Abstract

Keywords: interactive television, calendar, SMS, instant messaging.

Abstract: This work examines how the modern family can use several new technologiesto manage it’s information. This is called FIM or Family Information Management. Thefamily information examined in this work is the family calendar, the grocerylist and miscel-laneous note’s. The new technologies described are iTV, or Interactive Television, InstantMessaging and SMS. By combining these technologies the information will be available to thedifferent family members via TV, PC and mobile phone.

In concrete this work describes the development of two applications. One is used to readcalendar information from a server and display it on TV. The other application will allow theuse of an instant messaging client to edit the same calendar information.

This all will show potential new ways for sharing information between family members usingmodern technology.

ii

Page 5: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Inhoudsopgave

Woord vooraf i

Abstract ii

Inhoudsopgave iii

Inleiding vii

1 Situering 11.1 Stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 AmigoTV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2.1 Werking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2.2 Opbouw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.3 Opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.4 FIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.5 Overzicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

I Gebruikte technologieen 7

2 Ontwikkelings hulpmiddelen 82.1 Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2 Log4j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.3 Lumbermill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3 iTV Middleware 103.1 Gesloten middleware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.2 Open middleware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.3 MHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.3.1 Invoer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.3.2 Grafische weergave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4 iCal 144.1 Kalender applicaties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.2 Mogelijkheden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.3 iCal4j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4.3.1 Bestanden openen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

iii

Page 6: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

INHOUDSOPGAVE iv

4.3.2 Wijzigingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

5 Jabber 185.1 Smack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

6 WebDAV 206.1 Jakarta Slide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

7 Javadoc 227.1 @author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227.2 @param . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237.3 @return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237.4 @see . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

II Ontwikkeling applicaties 24

8 De TV-GUI 258.1 Beperkingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258.2 Structuur van de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258.3 De applicatie opstarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268.4 Het Overzichtsscherm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268.5 Het ”Vandaag”-scherm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278.6 Het ”Morgen”-scherm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288.7 Het ”Deze Week”-scherm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288.8 Het ”Deze Maand”-scherm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298.9 Het ”Notitie”-scherm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298.10 Het ”Boodschappen”-scherm . . . . . . . . . . . . . . . . . . . . . . . . . . . 308.11 Gegevensopslag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

9 Het AWT pakket 319.1 De AComponent en AAbstractComponent klassen . . . . . . . . . . . . . . . 319.2 De ALabel klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329.3 De AMultilineLabel klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339.4 De AShortLabel klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339.5 De AList klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339.6 De BoxLayout klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339.7 De GridLayout klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

10 Het Model pakket 3510.1 De -View klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3510.2 De NormalTV klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3610.3 De FridgeTV klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3610.4 De Models klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3610.5 De ModelsView klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3710.6 De ScenesViewItf klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3710.7 De ScenesImpl klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

Page 7: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

INHOUDSOPGAVE v

11 Het GUI pakket 3811.1 De InternalFrameUI klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3811.2 De -ViewUI klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

11.2.1 De DayViewUI klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . 3811.2.2 De WeekViewUI klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . 3911.2.3 De MonthViewUI klasse . . . . . . . . . . . . . . . . . . . . . . . . . . 39

11.3 De DayOfMonth klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3911.4 De CommandBarUI klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4011.5 De FridgeTVUI klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4011.6 De DefaultSkin klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4011.7 De ScenesUI klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4011.8 De Gui klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4111.9 De Images klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4111.10De Constants klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

12 De IM-Interface 4212.1 Werking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

12.1.1 Afspraken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4212.1.2 Boodschappen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4312.1.3 Notities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

13 Het IM Interface pakket 4513.1 De Constants klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4513.2 De Grocery klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4513.3 De GroceryList klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4513.4 De Note klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4613.5 De NoteList klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4613.6 De InitData klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4613.7 De AppointmentList klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4613.8 De FridgeTV klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4713.9 De FridgeTVPacketFilter klasse . . . . . . . . . . . . . . . . . . . . . . . . . . 4713.10De FridgeTVPacketListener klasse . . . . . . . . . . . . . . . . . . . . . . . . 4713.11De FridgeTVRosterListener klasse . . . . . . . . . . . . . . . . . . . . . . . . 4713.12De MessageParser klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4813.13De UserList klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

14 Gedeelde klassen 4914.1 iCal Bestanden Lezen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

14.1.1 De OpenLocalFile klasse . . . . . . . . . . . . . . . . . . . . . . . . . . 4914.1.2 De OpenRemoteFile klasse . . . . . . . . . . . . . . . . . . . . . . . . 4914.1.3 De OpenSecureRemoteFile klasse . . . . . . . . . . . . . . . . . . . . . 50

14.2 iCal Bestanden Schrijven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5014.2.1 De SaveLocalFile klasse . . . . . . . . . . . . . . . . . . . . . . . . . . 5014.2.2 De SaveSecureRemoteFile klasse . . . . . . . . . . . . . . . . . . . . . 50

14.3 De TestMain klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Page 8: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

INHOUDSOPGAVE vi

15 SMS 5215.1 SMS gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5215.2 Andere gateways . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

15.2.1 MSN Mobile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

III Opzetten demo-opstelling 54

16 Demo opstelling 5516.1 Opzet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5516.2 Jabber server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5516.3 iCalendar Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5616.4 TV-GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

16.4.1 Uitvoer op een TV scherm . . . . . . . . . . . . . . . . . . . . . . . . . 5616.4.2 De afstandsbediening . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5616.4.3 Overlay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

16.5 Mozilla Calendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5816.6 Jabber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

Conclusie 59TV-GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59IM-Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60SMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

Lijst van figuren 62

Lijst van tabellen 63

IV Bijlagen 64

A Code Voorbeelden 65A.1 Uitlijning AMultilineLabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65A.2 Uitlijnen elementen in GridLayout . . . . . . . . . . . . . . . . . . . . . . . . 67A.3 Invullen list in DayView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68A.4 Opbouw scherm in DayViewUI . . . . . . . . . . . . . . . . . . . . . . . . . . 70A.5 Ophalen elementen uit list in DayViewUI . . . . . . . . . . . . . . . . . . . . 71

B CD-ROM 72

Page 9: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Inleiding

Vele van de ontwikkelingen in computer- en internettechnologie die onze maatschappij delaatste decennia doormaakte zijn nog steeds niet in de gehele bevolking doorgedrongen. Ditis vooral te wijten aan het feit dat de PC nog steeds ontbreekt in groot aantal huisgezinnen,maar een familie zonder televisie is in onze maatschappij vrijwel onbestaande. Met de nakendeopkomst van de interactieve televisie (iTV) zullen vele van de, in oorsprong, PC-toepassingennu voor een aanzienlijk grotere groep mensen beschikbaar worden.

Dit schrijven behandelt het elektronisch beheer van kalenderinformatie, meer en dit speci-fiek in het kader van het gezin. Toepassingen die dit mogelijk maken op PC zijn reeds ingrote verscheidenheid beschikbaar. Ze worden PIM’s genoemd, ofwel Personal InformationManagers. Naar analogie wordt er hier gesproken over FIM, ofwel Family Information Ma-nager.

Een andere zeer veel gebruikte technologie is SMS. Er zal dan ook getracht worden SMSte gebruiken om voor een mobiele functionaliteit te zorgen.

Concreet wordt hier de ontwikkeling van een applicatie om kalendergegevens op het interactie-ve televisieplatform weer te geven besproken. Evenals de ontwikkeling van een afzonderlijkeapplicatie die het mogelijk maakt deze gegevens via een instant messaging client in te voerenen op te vragen. Er wordt verder ook onderzocht of deze laatste wijze van gegevens opvragenen invoeren kan uitgebreid worden naar een mobiel platform via SMS.

Met dit alles wordt geprobeerd een beeld te schetsen van de manier waarop een modernefamilie in de nabije toekomst haar informatie zou kunnen beheren.

vii

Page 10: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Hoofdstuk 1

Situering

1.1 Stage

Om mijn eindwerk te maken heb ik stage gelopen bij Alcatel te Antwerpen. Meer bepaald bijde ReNA-groep van het Research & Innovation departement. ReNA staat voor ResidentialNetworked Applications. In het ”Residential Networked Applications Project Plan 2005”wordt de volgende omschrijving van de objectieven van de ReNA-groep gegeven:

The ReNA’s project’s objective is to design and prototype innovative applications,generating appealling experiences for the broadband family, leveraging Alcatel’sservice platforms and broadband solutions. ReNA application concepts can bepositioned in the interactive TV space of converged triple play solutions. Proto-typing activities anchor the application concepts in Alcatel’s portofolio of servicesolutions. Users trials ensure the applications are aligned with end-users’ expecta-tions and provide the business division with lead customers.

Het is dus het doel van de ReNA groep om prototype applicaties te ontwikkelen die gebruikmaken van de zogenaamde ”triple play”-technologieen. Triple play is hoge snelheid internet,IP-telefonie en interactieve breedband video over een enkele verbinding. Met deze toepassin-gen is het de bedoeling gebruikers-testen uit te voeren. Op het ogenblik werkt men bij ReNAaan twee projecten namelijk de Personal Broadcaster en AmigoTV. Het project dat in ditwerk beschreven wordt, sluit zeer nauw aan bij AmigoTV. Er wordt in de volgende deel danook meer informatie over AmigoTV gegeven.

1.2 AmigoTV

1.2.1 Werking

Bij AmigoTV draait alles om het samen televisie kijken. Waarbij de TV kijker van zijn vrien-den ”Buddies” kan zien welk programma zij op dit ogenblik aan het bekijken zijn. (Figuur1.2 (a)) Hij kan dan eventueel beslissen om naar hetzelfde TV programma te gaan kijkenen via voice chat met elkaar in contact treden. (Figuur 1.1) Dit is eventueel met meerdergebruikers op verschillende locaties tegelijkertijd mogelijk. Deze verschillende gebruikers dienaar hetzelfde programma kijken en met elkaar kunnen praten bevinden zich nu virtueel indezelfde kamer of ”Room”.

1

Page 11: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 1. SITUERING 2

Figuur 1.1: Voice chat met AmigoTV

Zoals in afbeelding 1.2 (b) te zien is, kan een gebruiker tijdens het gezamenlijk televisie kijken,verschillende animaties starten. Die verschijnen dan op het scherm van alle TV-kijkers diezich in dezelfde kamer bevinden. Dit is vergelijkbaar met de ”Winks” die in de laatste versieMSN messenger te vinden zijn.

(a) (b)

Figuur 1.2: (a) Weergeven welke TV programma’s je buddies bekijken. (b) Een Animatie verzenden.

1.2.2 Opbouw

Zoals in Figuur 1.3 te zien is, is er voor de gebruiker maar een zeer gelimiteerde infrastructuurnoodzakelijk. Dit is namelijk een breedband router, een set-top box (STB), een afstandsbe-diening en een microfoon. De besturing gebeurt met een gewone afstandsbediening. Navigatiegebeurt met behulp van de kleurknoppen en de pijltjestoetsen. Er wordt steeds gezorgd vooreen eenvoudige intuıtieve besturing. Dit moet garanderen dat deze applicatie dicht bij de TVervaring staat die de gebruiker gewoon is. Dit is wat men de ”lean back experience” noemt

Page 12: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 1. SITUERING 3

Figuur 1.3: Benodigdheden AmigoTV

in tegenstelling tot bijvoorbeeld PC gebruik dat als ”lean forward experience” bestempeldwordt. Een gebruik van andere invoerapparaten zoals draadloze muis of toetsenbord zoudendeze gebruikerservaring veranderen.

1.3 Opdracht

In dit schrijven wordt onderzocht hoe een moderne familie van de verschillende technologieengebruik kan maken om op een efficiente manier zijn informatie te beheren. Er wordt gedachtaan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of denotities op een prikbord in de keuken of met magneetjes op de koelkast. Deze zaken zoudenop een elektronische manier bewaard kunnen worden. Via deze weg kunnen zij dan ook vanop verschillende plaatsen geraadpleegd worden. En bijkomend voordeel is dat informatie inmultimediale vorm kan gebruikt worden. Er moet voor gezorgd worden dat de gegevens snelen door ieder gezinslid bekeken en gewijzigd kunnen worden. Hiervoor wordt er uitsluitendgebruik gemaakt van wijd verspreide en toegankelijke technologie. Dit is met name de TV, viade uitbreidingen die iTV, of interactieve televisie, bied. En het zeer populaire en commercieelzeer aantrekkelijke SMS. Er wordt eveneens voor gezorgd dat de link met de PC omgevingniet verloren gaat.

1.4 FIM

Programma’s die in een PC-omgeving instaan voor kalenderbeheer worden PIM’s genoemd.PIM is de afkorting van Personal Information Managment. Analoog hieraan spreken wij overFamily Information Managment, ofwel FIM. Om de sterke verwantschap met AmigoTV tebenadrukken werden de applicaties die in dit kader ontwikkeld werden FrigoTV genoemd.

Page 13: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 1. SITUERING 4

Dit is de naam van de gebruikersgerichte dienst die met behulp van deze applicaties zal aan-geboden worden.

De opdracht, in sectie 1.3 beschreven, is zeer ruim en weinig concreet. Het bouwen vaneen applicatie die al deze aspecten ten volle ondersteunt was dan ook niet mogelijk in de be-perkte periode die voor dit project beschikbaar was. Een van de weinige vereisten was dat ervoor de iTV component gewerkt moest worden in het reeds voor AmigoTV opgezette frame-work. Dit om later een eventuele integratie in dit project te vergemakkelijken. Dit betekentdat er gewerkt moest worden met de bij Alcatel in ontwikkeling zijnde AWT1. De ontwikke-ling van AmigoTV gebeurde in java. Bij het uitdenken van de vormgeving en functionaliteitmoest er dus ook reeds met AmigoTV rekening gehouden worden. Zoals bijvoorbeeld hetonderaan weergeven van de functies die bij de kleurknoppen van de afstandsbediening horenen de functionaliteit van de rode knop die steeds voor een stap terug zorgt. Aangezien defunctie van de rode knop al vast lag bleven er nog drie knoppen over. De link tussen de geleknop en de traditioneel gele notitiepapiertjes leek voor de hand liggend. Aan de groene knopwerd alle kalenderinformatie verbonden. Aan de blauwe het boodschappenlijstje.

Figuur 1.4: Schema

Aangezien snelle toegang tot de gegevens wenselijk is, wordt er een overzichtsscherm voorzien.Dit scherm zal de afspraken van de huidige dag, de meest recente notities en het boodschap-

1AWT: abstract windowing toolkit

Page 14: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 1. SITUERING 5

penlijstje bevatten. Als vormgeving werd er voor dit overzichtscherm gekozen voor een ijskast.Dit zou een herkenbare situatie voor de gebruiker moeten scheppen. Het zou tevens van eenvoldoende hoge grafische kwaliteit moeten zijn om de TV-ervaring van de gebruiker niet ver-loren te laten gaan.

Een van de eigenschappen die SMS gebruik van verschillende elektronische diensten kenmerktis het tekstuele karakter. Op PC bestaat er een vergelijkbaar systeem dat ogenblikkelijke com-municatie van kleine tekstberichten toelaat. Dit is instant messaging (IM). Het is in eersteinstantie voor dit platform dat er een tekstuele interface zal ontworpen worden. Er zal lateronderzocht worden of deze interface via SMS toegankelijk kan gemaakt worden. Het meestpopulaire open source IM protocol, met name Jabber, werd voor deze opdracht gekozen. Eeneigenschap die Jabber van de andere IM protocollen onderscheidt is de mogelijkheid om metandere IM protocollen samen te werken.

Voor de opbouw van de kalenderapplicatie werd er in eerste instantie onderzocht welke debestaande kalender applicaties op PC zijn. Het belangrijkste dat hierbij werd vastgesteld isdat er een standaard is die vaak wordt gebruikt om kalendergegevens op te slaan. Dit is deiCalendar standaard. Er zal dan ook van deze standaard gebruik gemaakt worden. Voor hetuitwisselen van iCalendar wordt er gebruik gemaakt van een WebDAV server. Er zal danook van zo’n server gebruik gemaakt worden om de kalendergegevens op te slaan. Er moetnamelijk rekening mee gehouden worden dat niet elke STB over een opslag capaciteit beschikt.

Het gebruik van de WebDAV server geeft ons de mogelijkheid om FrigoTV in twee delente splitsen. Een deel, de TV-GUI zal op een STB worden uitgevoerd. Het andere deel, deIM-Interface zal op een server worden uitgevoerd. Dit heeft verschillende voordelen. Alseerste beperkt het de belasting op de STB die zo laag mogelijk dient gehouden te worden.Tevens bevrijdt het ons bij het ontwikkelen van de IM-Interface toepassing van alle beperkingdie geldig zijn op het STB platform. Verder is de IM-Interface nu als een aparte optie in onsdienstenpakket beschikbaar. In figuur 1.4 wordt er een duidelijker beeld geschetst van dezearchitectuur.

1.5 Overzicht

In het eerste deel worden de gebruikte technologieen besproken. Om te beginnen besprekenwe in hoofdstuk 2 de hulpmiddelen die gebruikt werden. In de daaropvolgende hoofdstukken3, 4, 5, en 6 worden de gebruikte standaarden verduidelijkt. Ook wordt er vermeld met welkeprogramma bibliotheken het gebruik van deze standaarden gerealiseerd wordt.

In het tweede deel wordt de werking en de opbouw van de applicaties gedetailleerder be-sproken. De werking van de TV-GUI wordt besproken in hoofdstuk 8. In de hoofdstukken9, 10 en 11 wordt er dieper ingegaan op de opbouw van deze component. In hoofdstuk 12wordt de werking van de IM-Interface besproken, de opbouw wordt besproken in hoofdstuk13. In Hoofdstuk 14 wordt besproken hoe de toegang tot bestanden gerealiseerd wordt. Dezebestandstoegang wordt in beide toepassingen gebruikt.

In een laatste deel bespreken we het opzetten van een concrete demo opstelling. Dit zo-

Page 15: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 1. SITUERING 6

wel wat betreft de configuratie aan de server zijde als aan de client zijde van de verschillendebenodigde componenten.

Voor een goed begrip van de hoofdstukken 9, 10, 11, 13 en 14 is kennis van object geo-rienteerd programmeren in java noodzakelijk.

Page 16: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Deel I

Gebruikte technologieen

7

Page 17: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Hoofdstuk 2

Ontwikkelings hulpmiddelen

2.1 Eclipse

Eclipse is een open-source framework voor software-ontwikkelomgevingen. Daarnaast is Eclip-se ook zelfstandig te gebruiken als krachtige Java-ontwikkelingsomgeving. Het is een zoge-naamde IDE of Integrated Development Environment. Eclipse heeft een open structuur waar-door het mogelijk is de functionaliteit uit te breiden door middel van plug-ins. Deze applicatiekan gevonden worden op http://www.eclipse.org.

Figuur 2.1: Eclipse

Eclipse wordt actief ondersteund door IBM, dat verschillende van zijn eigen producten, bouwtrondom de Eclipse-code. De naam Eclipse (zonsverduistering) is opmerkelijk, omdat de Java-wereld gedomineerd wordt door concurrent Sun (zon).

8

Page 18: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 2. ONTWIKKELINGS HULPMIDDELEN 9

2.2 Log4j

Deze java-bibliotheken worden gebruikt om de verschillende stappen die de applicatie door-loopt makkelijk te kunnen volgen. Dit om het debuggen te vergemakkelijken. Na het decla-reren van de logger kan met behulp van de hieronder vermelde commando’s informatie vanuitde applicatie naar buiten gebracht worden. Deze bibliotheken maken deel uit van het opensource project apache, bekend van de apache web server. Meer informatie is beschikbaar ophttp://logging.apache.org/log4j.

private static final Logger log = Logger.getLogger(klasse.class);

log.debug("String");log.warn("String");log.error("String");log.fatal("String");

De manier waarop deze gegevens naar buiten gebracht worden kan ingesteld worden via eenconfiguratie bestand, log4j.properties. Dit bestand moet zich in het build path van het projectbevinden.

2.3 Lumbermill

Dit is een applicatie die tijdens de ontwikkelingsfase gebruik kan worden om de door log4jverzamelde debug informatie overzichtelijk weer te geven. Ook dit is een open source project.De verschillende soorten informatie die log4j verzameld, worden elk met een specifieke kleurweergegeven. Lumbermill kan teruggevonden worden op http://traxel.com/lumbermill/.

Figuur 2.2: Lumbermill

Page 19: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Hoofdstuk 3

iTV Middleware

iTV1 Middleware bevindt zich tussen de hardware van de STB en de toepassingssoftware.(Figuur 3.1) Het zorgt voor decodering van de inkomende gegevens, gegevensverwerking,schermhandelingen en verwerking van de gebruikersinvoer. De iTV Middleware maakt hetsimpeler om complexe applicaties te ontwikkelen. Het laat toe om toepassingen uit te voerenop elke STB waarop de iTV Middleware draait. De ontwikkelaar van deze gebruikerstoepas-singen hoeft geen rekening te houden met de specifieke hardware van de verschillende typesSTB.

Figuur 3.1: iTV Middleware

Er zijn vele verschillende soorten iTV middleware: MHP, MHEG, OpenCable, OpenTV, Mi-crosoft TV, Liberate, NDS, ... Deze middleware bieden een software ontwikkelingsomgeving,die toegang tot de functies die de STB aanbiedt, verleend. Er wordt meestal met C/C++of java gewerkt. Eventueel is er ook HTML ondersteuning. Deze middleware kan in tweedelen opgesplitst worden, de open en gesloten middleware. Deze delen komen overeen metrespectievelijk een verticale en horizontale markt.

1iTV: interactieve televisie

10

Page 20: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 3. ITV MIDDLEWARE 11

3.1 Gesloten middleware

Gesloten middleware komt overeen met verticale markt benadering. Interactieve televisiewerd traditioneel beheerst door verticale betaal-TV waarbij de inhoud, de levering en hetplatform door hetzelfde bedrijf geleverd werden. Onder gesloten middleware valt onder an-dere OpenTV Core, MediaHighway, Microsoft TV, power TV, NDS, Liberty, Liberate, ...

Hoewel gesloten middleware een groot marktaandeel hebben en ongeveer dezelfde dienstenbieden (soms zelfs meer) zijn er toch enkele ernstige nadelen aan verbonden. Er zijn te veelverschillende middleware verkopers die elk hun eigen middleware aanbieden voor verschillen-de marktsegmenten. Applicaties gebaseerd op gesloten middleware zijn niet herbruikbaar.Er zou dus door de programmeur bijvoorbeeld een aparte applicatie voorzien moeten wor-den voor de kabel- of satellietversie van de dienst. Bovendien is er aan gesloten middlewareeen licentiekost verbonden. Deze nadelen beperken sterk het markt potentieel van geslotenmiddleware.

3.2 Open middleware

Open middleware correspondeert met een horizontale markt visie. Een open middleware iseen standaard die voor de hele industrie bruikbaar is. Het kan door iedereen geımplementeerdworden. Voorbeelden van open middleware zijn MHP, OpenCable, MHEG, DAVIC, ... OpMHP zullen we in de volgende sectie dieper ingaan.

3.3 MHP

MHP, ofwel Multimedia Home Platform, is een voorbeeld van open iTV Middleware. MHPis een op java gebaseerde open standaard voor interactieve televisie. Deze standaard werdgedefinieerd door het DVB2 consortium. Deze technologie is gebaseerd op bestaande openstandaards zoals DVB, MPEG3 en JavaTV. Deze standaard is nog steeds in volle ontwik-keling, de huidige versie is MHP 1.1. De integrale tekst die deze standaard beschrijft kanteruggevonden worden op http://www.mhp.org.

De MHP software API is gemaakt met als doel de open middleware standaard voor alleinteractieve TV applicaties te zijn. Het laat ontwikkelaars toe om te werken zonder rekeningte moeten houden met de specificaties van een STB. MHP definieert een generische interfacetussen de interactieve televisie applicaties en het platform waarop ze worden uitgevoerd. De-ze interface ontkoppelt de verschillende toepassingen van de specifieke hardware en softwaredetails van verschillende MHP platform implementaties. Dit geeft leveranciers van digitale in-houd de mogelijkheid om alle verschillende types platformen, gaande van low-end tot high-endSet-Top boxen, geıntegreerde digitale televisietoestellen en multimedia PC’s te ondersteunen.

Enkele aspecten van MHP die voor ons belangrijk zijn, worden hieronder verder verdui-delijkt. Het moet de lezer duidelijk zijn dat dit een zeer beperkte selectie is. BijvoorbeeldDVB-HTML of toegang tot Smart Card lezers wordt hier volledig ter zijde gelaten.

2DVB: Digital Video Broadcasting3MPEG: Moving Picture Experts Group

Page 21: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 3. ITV MIDDLEWARE 12

3.3.1 Invoer

De meeste MHP ontvangers zullen gebruikersinvoer krijgen van een afstandsbediening. Hoe-wel invoer van een toetsenbord en eventueel zelfs een muis ook beschikbaar kan zijn, is hetonwaarschijnlijk dat dit in veel gevallen gebruikt zal worden. Onze applicatie dient dan ookuitsluitend met een afstandsbediening gebruikt te worden. Tabel 3.1 geeft de door MHPgedefinieerde standaard afstandsbedieningtoetsen.

Naam constante Toets Toets codeVK UP boven pijl niet gestandaardiseerd

VK DOWN onder pijl niet gestandaardiseerdVK LEFT linkse pijl niet gestandaardiseerd

VK RIGHT rechtse pijl niet gestandaardiseerdVK ENTER enter (ook bekend als select of OK) niet gestandaardiseerd

VK 0 tot VK 9 nummer toetsen 48 - 57VK TELETEXT teletext toets 459

VK COLORED KEY 0 eerste kleur toets (rood) 403VK COLORED KEY 1 tweede kleur toets (groen) 404VK COLORED KEY 2 derde kleur toets (geel) 405VK COLORED KEY 3 vierde kleur toets (blauw) 406

Tabel 3.1: Afstandsbedieningstoetsen MHP

Hoewel de afstandsbediening nog andere toetscodes kan genereren, zijn dit de enige waarvande werking op elke ontvanger gegarandeerd wordt. Onze applicatie zal dan ook uitsluitend vande in Tabel 3.1 vermelde toetsen gebruikmaken. Een volledige lijst van gedefinieerde toetsenkan in de org.havi.ui.event.HRcEvent klasse van de MHP specificatie gevonden worden.

3.3.2 Grafische weergave

Het grafische model is waarschijnlijk een van de meest complexe delen van MHP. Er zijnnamelijk vele verschillende zaken waarmee rekening moet worden gehouden wanneer we metafbeeldingen werken in een TV omgeving. Een aantal van de zaken waarmee er bijvoorbeeldrekening dient gehouden te worden, zijn:

De pixel aspect ratio: Televisie en video toepassingen gebruiken vaak niet-vierkantepixels, terwijl grafische API’s voor computer er veelal vanuit gaan dat pixels vierkant zijn.

Aspect Ratio: Standaard TV werkt met een aspect ratio van 4:3, breedbeeld echter meteen 16:9 aspect ratio of soms zelfs met 14:9.

Kleur weergave: Op PC wordt er overwegend met RGB4 gewerkt om kleuren voor testellen op TV gebruikt men YUV5, althans bij PAL. De omzetting tussen beiden wordt doorMHP verzorgd.

4RGB: Red Green Blue5YUV: Y luminance/brightness U and V chrominance/color

Page 22: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 3. ITV MIDDLEWARE 13

Figuur 3.2: De 3 grafische lagen

Een iTV scherm wordt typisch opgebouwd uit minimum 3 lagen. (Figuur 3.2) Een achtergrond-laag, een video-laag en een grafische-overleg-laag. De achtergrond-laag is meestal slechts instaat om een stilstaand beeld weer te geven. Hierboven bevindt zich de video laag, hier wor-den de televisieprogramma’s weergegeven. De bovenste laag is de grafische laag, hierop wordter door de grafische operaties in MHP effectief getekend.

Transparantie wordt door MHP ondersteund in verschillende gradaties. Er zijn er drie diegegarandeerd ondersteund worden: volledige, 30% en geen transparantie.

MHP ondersteunt slechts vier types afbeeldingformaten namelijk; GIF, JPEG, PNG enMPEG I-Frame. Het kleuren palet is gelimiteerd tot 188 kleuren voor GIF, JPEG en PNG.MPEG I-Frame kan wel van het volledige kleurenpallet gebruik maken.

Page 23: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Hoofdstuk 4

iCal

ICal, ofwel internet calendar is een open standaard die een bestandsformaat definieert voor hetopslaan van Kalender informatie. Internet Calendar wordt besproken in RFC24451. De hui-dige versie is iCalendar v2.0. De oudere versie iCalendar v1.0 wordt soms ook vCal genoemd.De informatie wordt opgeslagen in plaintext-bestanden met extensie .ics. Mede dankzij depopulariteit van het programma iCal van Apple, dat enkel voor de Mac beschikbaar is, wordtdit bestandsformaat nu door vele verschillende applicaties ondersteund.

4.1 Kalender applicaties

In volgende tabel wordt een overzicht gegeven van enkele van de programma’s die iCal on-dersteunen, gegroepeerd naargelang platform:

• Mac OS X

– Apple iCal http://www.apple.com/ical/

• Linux

– Evolution http://www.gnome.org/projects/evolution/

– Mozilla Calendar http://www.mozilla.org/projects/calendar/Plug-in voor de gekende Mozilla browsers. (oa. Mozilla Firefox)

– Mozilla Sunbird http://www.mozilla.org/projects/calendar/sunbird.htmlDe stand-alone versie van Mozilla Calendar.

– KDE Kontact http://www.kontact.org/

• Windows

– Mozilla Calendar http://www.mozilla.org/projects/calendar/

– Mozilla Sunbird http://www.mozilla.org/projects/calendar/sunbird.html

– Windates http://www.rockinsoftware.com/windates.aspx

– eventSherpa http://www.eventsherpa.com/

1http://www.ietf.org/rfc/rfc2445.txt

14

Page 24: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 4. ICAL 15

– Calendar http://www.osx-e.com/modules.php?modid=1&action=show&id=7onvolledige Apple iCal kloon

Het ontbreken van, misschien wel het meest bekende kalenderprogramma, MS Outlook, is eenzeer jammerlijke zaak. Hoewel Outlook iCal niet volledig ondersteund, waardoor de echtevoordelen van iCal voor Outlook gebruikers onbeschikbaar zijn, is het wel mogelijk om ge-downloade iCal bestanden in te voeren. Het uitvoeren kan Outlook alleen per afspraak enniet als een volledige kalender. Door gebruik te maken van het programma outport, te vin-den op http://outport.sourceforge.net/, kunnen we de kalendergegevens wel exporterennaar een iCal-bestand. Dit moet dan gebeuren via de Evolution Calendar en Evolution Tasksopties, de iCalendar optie van outport creeert weerom afzonderlijke bestanden per afspraakof taak. Taken en afspraken komen, door gebruik te maken van deze methode, nog steeds intwee afzonderlijke bestanden terecht. Deze werkwijze is getest met Outlook 2000.

Verder zijn er ook nog enkele mogelijkheden om iCal bestanden online weer te geven ineen browservenster. Enkele voorbeelden hiervan zijn:

• Linux

– Brown Bear Calcium Web Calendar http://www.brownbearsw.com/calcium/Perl CGI applicatie (platform onafhankelijk)

– PHPiCalendar http://phpicalendar.net/PHP applicatie (platform onafhankelijk)

• Windows

– Brown Bear iCal Web Calendar http://www.brownbearsw.com/ical/volledige server applicatie speciefiek voor kalender bestanden

– Brown Bear Calcium Web Calendar http://www.brownbearsw.com/calcium/Perl CGI applicatie (platform onafhankelijk)

– PHPiCalendar http://phpicalendar.net/PHP applicatie (platform onafhankelijk)

Dit alles toont aan dat de iCal standaard een wijde ondersteuning geniet en dus een uitste-kende keuze vormt als bestandsformaat voor onze kalender applicatie.

4.2 Mogelijkheden

Met de lancering van Apple iCal werden er een paar nieuwe mogelijkheden toegevoegd aande traditionele kalendertoepassingen. Het was nu mogelijk om meerdere verschillende ka-lenderbestanden tegelijk weer te geven. Het feit dat deze bestanden rechtstreeks gelezen engeschreven konden worden van een online locatie, zorgt ervoor dat er een hele nieuwe wereldopen ging. Het is nu mogelijk om bepaalde kalenders publiek of aan een bepaalde groepmensen aan te bieden. Deze kalenderinformatie kan dan gewoon weergegeven worden tussende prive kalender gegevens van de ”geabonneerde” gebruiker. Wijzigingen in de publieke ka-lender worden onmiddellijk op de server gepubliceerd. Wanneer een gebruiker opnieuw zijn

Page 25: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 4. ICAL 16

agenda raadpleegt zijn steeds de meest recente gegevens beschikbaar. Er is van synchronisa-tie geen sprake omdat alles wordt opgeslagen in een enkel bestand dat voor alle gebruikerstoegankelijk is. Deze mogelijkheden maken het gebruik van complexe server applicaties zo-als Microsoft Exchange of Novell GroupWise onnodig. De bestanden worden op een gewonewebserver (http-server) geplaatst. Om deze mogelijkheden te verduidelijken worden hieronderenkele voorbeelden gegeven:

• Kalenders van allerhande clubs en verenigingen. Bijvoorbeeld:

– Beschikbaarheid van sportvelden of materieel voor sportclubs.

– Verzameltijden voor jeugdverenigingen.

– Activiteiten georganiseerd door studentenclub.

• Uurroosters van studenten: In dit verband is het misschien interessant om te verwijzennaar het open-source project UW Calendar van de Universiteit van Washington (http://www.washington.edu/ucal/)

• Lokale vuilnisomhaling

• De nationale voetbal competitie

Hierna geef ik een overzicht van enkele sites die zich specialiseren in het aanbieden van iCalbestanden. Ze beschikken over een uitgebreid archief van kalenders.

• iCal Exchange: biedt een gratis locatie aan om kalenders op te slaan. Dit kan zowelvoor publiek als prive gebruik zijn. De mogelijkheid om verschillende paswoorden te defi-nieren is een betalende optie. Hiermee is het bijvoorbeeld mogelijk paswoorden met lees-en schrijftoestemming voor het bestuur aan te maken en paswoorden met enkel leestoe-stemming voor de leden. (http://www.icalx.com of http://www.icalexchange.com)

• iCalShare: biedt de mogelijkheid om kalenders publiekelijk te delen. Het biedt even-eens de mogelijkheid om te bladeren en te zoeken door kalenders die zich reeds op dezeserver bevinden en zich er desgewenst op in te schrijven. (http://www.icalshare.com)

4.3 iCal4j

Mijn applicatie maakt gebruik van de java programma bibliotheken iCal4j2 om toegangte krijgen tot iCalendar bestanden. Dit pakket kan gevonden worden op http://ical4j.sourceforge.net/. De API die bij dit pakket hoort is beschikbaar op http://ical4j.sourceforge.net/api/. Met dit pakket is het onder andere mogelijk iCal bestanden teparsen door gebruik te maken van enkele zeer simpele regels programmacode.

4.3.1 Bestanden openen

ICalendar bestanden zijn gewone tekstbestanden en kunnen dus met de gewone voorzienin-gen uit java worden ingelezen. Het codevoorbeeld hieronder geeft weer hoe men de javainputstream, met behulp van de iCal4j klasse builder, omzet naar een iCalendar klasse.

2iCal4j: internet calendar for java

Page 26: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 4. ICAL 17

ICalendar iCalendar;CalendarBuilder builder = new CalendarBuilder();

iCalendar = builder.build(in);

Hierin is ”in” de inputstream die het iCal bestand bevat. Hierna is de informatie die hetbestand bevat simpelweg toegankelijk via de objecten: VALARM, VEVENT, VFREEBU-SY, VJOURNAL, VTIMEONE en VTODO. Onze toepassingen maken enkel gebruik vande component VEVENT. Toegang tot de achtereenvolgende componenten wordt als volgtgerealiseerd.

for (Iterator i = iCalendar.getComponents().iterator(); i.hasNext();) {Component component = (Component) i.next();if (component.getName() == Component.VEVENT) {

VEvent ve = new VEvent(component.getProperties());

}}

4.3.2 Wijzigingen

Aangezien het gaat om een open source programma bibliotheek beschikt de gebruiker overde volledige broncode en staat het hem dus vrij om hier wijzigingen aan te brengen. Ik hebeen wijziging aangebracht in het iCal4j pakket. Om voor een duidelijk onderscheid te zorgentussen de klassen, net.fortuna.ical4j.model.Calendar en java.util.Calendar, heb ik de naam vande eerste klasse veranderd van net.fortuna.ical4j.model.Calendar naar net.fortuna.ical4j.mo-del.ICalendar. De klasse ICalendar bevat nu gegevens in iCal formaat, de klasse Calendarbevat allerhande functies die handig zijn om met data te werken. Het opnieuw benoemengeeft u de mogelijkheid om beide klassen vanuit dezelfde klasse aan te roepen zonder dat devolledige pakketnaam steeds moet meegegeven worden.

Page 27: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Hoofdstuk 5

Jabber

Jabber is een open protocol dat op XML gebaseerd is. Het kan gebruik worden voor InstantMessaging. Op Jabber gebaseerde software wordt gebruikt op duizenden servers verspreidover het internet en wordt door miljoenen mensen wereldwijd gebruikt. Deze getallen volgensde Jabber Software Foundation vind je terug op http://www.jabber.org.

Het Jabber project is in 1998 begonnen door Jeremie Miller, de eerste belangrijke publiekepublicatie gebeurde in mei 2000. Het belangrijkste product is Jabberd, een server waarmeeJabber clients verbonden worden zodat ze met elkaar kunnen chatten. Met deze server kun-nen er zowel een prive Jabber netwerk opgezet worden (achter een firewall) of de server kandeel gaan uitmaken van het globale publieke netwerk. De belangrijkste kenmerken van jabberzijn de gedistribueerde aard van het IM systeem en het gebruik van XML streams.

Een uniek kenmerk van het Jabber systeem is het gebruik van transports of gateways. Dezelaten het de gebruikers toe verbinding te maken met netwerken die van een ander protocolgebruik maken: zoals AIM en ICQ, die van het OSCAR1 protocol gebruik maken, MSN Mes-senger en Windows Messenger, die van de .NET Messenger Service gebruik maken, SMS ofe-mail. In tegenstelling tot multi-protocol-clients zoals Trillian of Gaim, zorgt Jabber voortoegang op het server niveau. Dit komt tot stand door communicatie via speciale gatewayserviceses die op de server actief zijn. Elke Jabber gebruiker kan zich registreren bij een vandeze gateways. De gebruiker moet enkel de informatie verstrekken die noodzakelijk is om opdat netwerk in te loggen. Hierna is communicatie met gebruikers van dat netwerk mogelijkalsof het Jabber gebruikers waren. Dit heeft tot gevolg dat elke client, die het Jabber protocolvolledig ondersteunt kan gebruikt worden om toegang te krijgen tot elk netwerk waarnaar ergateways bestaan zonder dat er extra code nodig is in de client.

De basis van het Jabber protocol wordt nu beheerd door de Jabber Software Foundation.Het is door de IEFT2 aanvaard als standaard onder de naam XMPP3, met RFC nummer3920. Het wordt vaak beschouwd als een concurrent van SIMPLE4, gebaseerd op het SIP5

protocol, als het standaardprotocol voor instant messaging en aanwezigheidsmelding. Het1OSCAR: Open System for CommunicAtion in Realtime2IEFT: Internet Engineering Task Force3XMPP: Extensible Messaging and Presence Protocol4SIMPLE: SIP for Instant Messaging and Presence Leveraging Extensions5SIP: Session Initiation Protocol

18

Page 28: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 5. JABBER 19

ontwerp van XMMP is echter bedoel om een meer algemene middleware voor communicatietussen applicaties voor alle doeleinden te vormen.

5.1 Smack

Om de communicatie tussen de applicatie en de Jabber server te verzorgen wordt er gebruikgemaakt van een programma bibliotheek. Er is een waaier aan programma bibliotheken voor-handen die voor XMPP communicatie kunnen instaan. Een overzicht van al deze pakkettenkan gevonden worden op http://www.jabber.org/software/libraries.shtml. Een grootaantal van de keuzemogelijkheden die op deze site te vinden zijn vallen weg, aangezien hetaangewezen is in het hele project enkel de java-programmeertaal te gebruiken. Uit de overge-bleven bibliotheken werd Smack gekozen. Dit omdat bij de aanvang van het project Smack eenvan de meest volledige API’s was die voor jabber beschikbaar was. Smack is een Open SourceXMPP client bibliotheek voor instant messaging. Dat Smack enkel ondersteuning biedt voorhet ontwerp van client toepassingen is geen bezwaar. Hoewel de applicatie op een server uit-gevoerd zal worden is het ten opzichte van de Jabber server een client toepassing. De Smackbibliotheken kunnen gevonden worden op http://www.jivesoftware.org/smack/. De do-cumentatie over Smack is eveneens online te vinden op http://www.jivesoftware.org/builds/smack/docs/latest/documentation/ en http://www.jivesoftware.org/builds/smack/docs/latest/javadoc/.

Page 29: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Hoofdstuk 6

WebDAV

WebDAV is een IETF werkgroep. De afkorting staat voor Web-based Distributed Autheringand Versioning. De term wordt ook gebruikt om te verwijzen naar het protocol dat deze groepdefinieerde. Dit protocol is veeleer een uitbreiding op het http protocol dan een protocol opzich.

Na aanvang van het werk werd het duidelijk dat de afhandeling van zowel Distributed Au-thering als Versioning een te grote taak was zodat beide zaken gesplitst werden. De WebDAVgroep besloot de versioning in eerste instantie niet meer in het opzet mee te nemen.

Het protocol bestaat uit een set van nieuwe methoden en headers om in http gebruikt teworden. Dit protocol onderscheidt zich omdat het een van de eerste was dat van XML ge-bruikt maakt.

WebDAV voegt de methoden in tabel 6.1 aan het http protocol toe.

Methode OmschrijvingPROPFIND Ophalen van de eigenschappen van een resource.PROPPATCH Gebruikt om meerder eigenschappen te veranderen of te verwijderen.MKCOL Gebruikt om een resource van de ene naar de ander URI te kopieren.COPY Gebruikt om een resource van de ene naar de ander URI te kopieren.MOVE Gebruikt om een resource van de ene naar de andere URI te verplaatsen.LOCK Gebruikt om toegang tot een resource te blokkeren voor andere processen.UNLOCK Om toegang te deblokkeren.

Tabel 6.1: De WebDAV http extensies

Een resource is een aan http specifieke term die ruwweg gedefinieerd wordt als hetgeen waar-naar een URI1 verwijst.

De WebDAV werkgroep werkt nog steeds verder aan een aantal uitbreidingen.1URI: Uniform Resource Identifier

20

Page 30: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 6. WEBDAV 21

6.1 Jakarta Slide

Om toegang te krijgen tot een WebDAV server werd er gebruik gemaakt van de JakartaSlide bibliotheken. Deze bibliotheken werden slechts in zeer beperkte mate gebruikt. Het isnamelijk enkel voor het schrijven naar de server noodzaak om van de WebDAV uitbreidingengebruik te maken. Lezen van de WebDAV server zelfs als hij beveiligd is, gebeurt steeds viahet gewone http protocol. Dit kan dus ook steeds gebeuren met klassen die deel uit makenvan de standaard java bibliotheken. Dit open source project is van de hand van de makers vande zeer bekende Apache webserver. Hoewel de applicatie ontworpen is voor gebruik op eenserver, wordt er toch uitsluitend van de client bibliotheken gebruik gemaakt. De toepassing isnamelijk een client van de WebDAV server. Deze programma bibliotheek en meer informatieerover kan gevonden worden op http://jakarta.apache.org/slide/. De API vindt menop http://jakarta.apache.org/slide/clientjavadoc/index.html.

Page 31: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Hoofdstuk 7

Javadoc

Met javadoc kunnen er aan de hand van commentaar, dat rechtstreeks tussen de code wordtingevoerd, automatisch HTML bestanden gegenereerd worden in de kenmerkende stijl vanjava-API1’s. Een voorbeeld hiervan is: bijvoorbeeld de ”JavaTM 2 Platform, Standard Edi-tion, v 1.4.2 API Specification”. Dit is terug te vinden op http://java.sun.com/j2se/1.4.2/docs/api/. Het commentaar dat voor javadoc bestemd is onderscheidt zich van hetnormale java commentaar doordat de begintag een extra sterretje bevat. De javadoc compilerveronderstelt steeds dat het commentaar aangaande een bepaalde constante, variabele, klasse,constructor of methode zich onmiddellijk boven de respectievelijke declaratie bevindt.

/** normaal java commentaar*/

/*** java commentaar bestemd voor de javadoc compiler*/

Om het samenstellen van deze documentatie meer mogelijkheden te geven is het noodzakelijkuw commentaar van een aantal eenvoudige tags te voorzien. Verder in dit hoofdstuk eenoverzicht van enkele van de van deze tags waarvan ik veelvuldig gebruik gemaakt heb. Hetaanroepen van de javadoc compiler kan op eenvoudige grafisch wijze gebeuren vanuit Eclip-se. Meer informatie kan gevonden worden op: http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/javadoc.html

7.1 @author

Deze tag wordt meestal onderaan de commentaarblok, behorend bij klasse, geplaatst. Hijwordt gebruikt om de auteur van deze klasse kenbaar te maken.

/*** @ author Koen De Voegt*/

1API: Application Programming Interface

22

Page 32: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 7. JAVADOC 23

7.2 @param

Dit wordt gebruikt om te verduidelijken met welke parameters een bepaalde methode moetaangeroepen worden.

/*** @param text The text to be displayed by the label.* @param size Sets the size of this label.*/

7.3 @return

@return dient om verduidelijking te geven bij de teruggegeven waarden van een methode.

/*** @return The value of the align property, one of the following constants* defined in ALabel: LEFT_ALIGNMENT, CENTER_ALIGNMENT, RIGHT_ALIGNMENT.*/

7.4 @see

Deze tag geeft ”See Also” in het HTML bestand. Hiermee wordt meestal verwezen naarmethoden die verwante functies hebben. De See-tag heeft de volgende vorm:

@see package.class#member label

Men kan respectievelijk het pakket, de klasse en het deel van de klasse waar naar verwezenwordt, opgeven. Deze verwijzingen zijn relatief, zodat het pakket en de klasse eventueelweggelaten kunnen worden. Ook het label kan weggelaten worden, in dit geval wordt gewoonde naam van definitie van de methode waarnaar verwezen wordt, gebruikt.

/*** @see ALabel#getHorizontalMargin()*/

Page 33: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Deel II

Ontwikkeling applicaties

24

Page 34: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Hoofdstuk 8

De TV-GUI

Dit hoofdstuk geeft een overzicht van de functionaliteit van de TV-GUI en de verschillendeelementen waarmee tijdens het ontwerp rekening werd gehouden.

8.1 Beperkingen

De belangrijkste beperkingen zijn:

• Hoewel de software ontwikkeling op PC gebeurde, is de uiteindelijke toepassing voorgebruik op een STB1 bedoeld. Er moest dus met de beperkingen die eigen zijn aan ditplatform rekening gehouden worden. Er kan dus niet van alle standaard java bibliothe-ken gebruik gemaakt worden.

• De invoer moet gebeuren via een standaard afstandsbediening. Deze beschikt overeen beperkte hoeveelheid toetsen waarvan er bovendien slechts enkele beschikbaar zijn,namelijk de cijfertoetsen 0-9, de vier richtingspijltjes, de selectieknop en de vier kleur-knoppen.

• De codering van bestandsformaten die gebruikt kunnen worden zijn ook sterk beperkt.Deze formaten zijn GIF, JPEG, PNG, MPEG I-Frame. Ook qua kleurenpallet bestaaner beperkingen. In mijn applicatie werd er enkel van stilstaande beelden gebruik ge-maakt. Deze werden allemaal naar het PNG-formaat geconverteerd.

Al deze beperkingen zijn in de MHP2 standaard uitgebreid gedefinieerd.

8.2 Structuur van de code

Hoewel de TV-GUI vanuit het gebruikersstandpunt een afzonderlijke applicatie is, vormt hetgezien vanuit het standpunt van de ontwikkelaar een geheel met de code van het AmigoTVproject. Het was dus aangewezen de voor AmigoTV reeds uitgedachte structuur gewoon overte nemen. Voor mijn applicatie werden drie pakketten gebruikt:

• com.alcatel.rena.amigotv.client.gui.awt.* Dit pakket is de verzameling basiscomponen-ten die veelvuldig gebruikt worden om de GUI op te bouwen.

1STB: set-top box2MHP: Multimedia Home Platform

25

Page 35: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 8. DE TV-GUI 26

• com.alcatel.rena.amigotv.client.gui.model.* Dit pakket bevat alle klassen die met debeheersing van de gegevens en de controle van het programmaverloop te maken hebben.

• com.alcatel.rena.amigotv.client.gui.* Dit pakket groepeert alle klassen die met de visuelevoorstelling te maken hebben.

Hoewel het overnemen van de structuur en delen van een reeds bestaande applicatie, eenheleboel werk uitspaart, introduceert deze manier van werken wel een nieuwe moeilijkheids-graad. Er moet namelijk werk geleverd worden gebaseerd op code die onvolledig is, die nogin constante evolutie is en die helemaal niet gedocumenteerd is. Dit laatste op uitzonde-ring van zeer summiere commentaar die zich rechtstreeks tussen de code zelf bevindt. Omde samenwerking tussen softwareontwikkelaars die aan dezelfde code werken eenvoudiger tedoen verlopen bestaan er versie-controle-systemen. Bij Alcatel werd er gebruik gemaakt vanSubversion ook gekend onder de afkorting SVN. Dit alles zorgde ervoor dat het doorgrondenvan deze code dan ook zeer veel tijd in beslag nam. Een uitgebreidere bespreking van dezepakketten kan in de hoofdstukken 9, 10 en 11 teruggevonden worden.

8.3 De applicatie opstarten

Als het AmigoTV-icoontje (Figuur 8.1) in de linker bovenhoek over het televisie beeld ver-schijnt, betekent dit dat de applicatie correct gestart is. Met de rode knop van de afstandsbe-diening wordt het login scherm van AmigoTV weergegeven. Met de groene knop komt men ophet overzichtsscherm van de kalenderapplicatie. Hieronder worden de verschillende schermen,waaruit de kalenderapplicatie is opgebouwd, overlopen.

Figuur 8.1: Het AmigoTV-icoontje

8.4 Het Overzichtsscherm

Onderaan het scherm wordt in de gepaste kleur de functie van de knoppen op de afstandsbe-diening weergegeven. Dit zou voor de gebruiker een vertrouwd beeld moeten zijn aangezienook Teletext op een gelijkaardige manier werkt. Om eenvoudige toegang tot de applicatiete garanderen moet er voor het uitlezen van gegevens enkel gebruik van de kleurtoetsen ge-maakt worden. Verder werd het aantal schermen waaruit de applicatie opgebouwd is, bewustbeperkt.

Vanaf het overzichtsscherm kan men met de rode knop steeds terugkeren naar het norma-le televisieprogramma, dit naar analogie met AmigoTV. Met de groene knop kan vanuit hetoverzichtsscherm door de verschillende kalenderschermen gebladerd worden. Deze schermenzijn achtereenvolgens het ”Vandaag”-, ”Morgen”-, ”Deze Week”- en ”Deze Maand”-scherm.

Page 36: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 8. DE TV-GUI 27

Figuur 8.2: Het Overzichtsscherm

Met de gele knop wordt de meest recente notitie weergegeven. De Blauwe knop zorgt voor deweergave van het boodschappenlijstje.

8.5 Het”Vandaag”-scherm

Dit scherm (Figuur 8.3) geeft een duidelijk overzicht van de huidige dag. Het toont eenlijst van de afspraken die deze dag plaatsvinden en de tijdstippen waarop ze aanvangen eneindigen. Met de groene knop kan men verder gaan naar het ”Morgen”-scherm. De rode knopkan gebruikt worden om opnieuw het overzichtsscherm te bereiken. De functionaliteit van derode toets blijft verder in de applicatie onveranderd.

Figuur 8.3: Het ”Vandaag”-scherm

Page 37: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 8. DE TV-GUI 28

8.6 Het”Morgen”-scherm

In Figuur 8.4 worden op identieke wijze als in het ”Vandaag”-scherm de afspraken van de opvandaag volgende dag weergegeven. De groene toets brengt u nu verder naar het weekover-zicht.

Figuur 8.4: Het ”Morgen”-scherm

8.7 Het”Deze Week”-scherm

Dit scherm (Figuur 8.5) geeft een overzicht van de afspraken van de huidige week. De begin-en eindtijd van de afspraken worden wegens plaatsgebrek niet meer weergegeven. De eventueelte lange omschrijving van de afspraak wordt automatisch afgekort tot de juiste breedte vande kolom. Het weekend wordt in mat blauw weergegeven.

Figuur 8.5: Het ”Deze Week”-scherm

Page 38: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 8. DE TV-GUI 29

8.8 Het”Deze Maand”-scherm

Op het ”Deze Maand”-scherm (Figuur 8.6) wordt een overzicht van de volledige maand ge-geven. De afspraken worden ingekort zoals dat ook bij het weekoverzicht gebeurd, bovendienworden nu enkel de eerste twee afspraken van de dag getoond. De weekends worden netzoals bij het ”Deze Week”-scherm in het lichtblauw weergegeven en de huidige dag in hetdonkerblauw.

Figuur 8.6: Het ”Deze Maand”-scherm

8.9 Het”Notitie”-scherm

Door vanaf dit scherm (Figuur 8.7) herhaaldelijk op de gele toets te drukken kan er op cyclischewijze door de verschillende aanwezige notities gebladerd worden. Dit gebeurt chronologischte beginnen met de meest recente notitie. Met de rode knop kan er zoals steeds naar hetoverzichtsscherm worden teruggekeerd.

Figuur 8.7: Het ”Notitie”-scherm

Page 39: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 8. DE TV-GUI 30

8.10 Het”Boodschappen”-scherm

Deze functionaliteit is in de traditionele PIM’s3 ongezien. Het biedt de gebruiker de mogelijk-heid om op een centrale plaats een boodschappenlijstje, samengesteld door de verschillendefamilieleden, bij te houden. Deze functie komt uiteraard maar ten volle tot haar recht indienmen daadwerkelijk over mobiele toegang tot zijn gegevens beschikt. Dit zou er dan voor moe-ten zorgen dat, vanuit de supermarkt bijvoorbeeld, steeds de meest recente boodschappenlijstopgevraagd kan worden.

Figuur 8.8: Het ”Boodschappen”-scherm

8.11 Gegevensopslag

Voor het opslagen van de kalendergegevens die de applicatie verzamelt, werd er gezocht naareen reeds bestaand bestandsformaat. Het werd na enig opzoek werk duidelijk dat er een stan-daard was die veruit de ruimste ondersteuning genoot. Toen bleek dat er bovendien OpenSource bibliotheken bestonden die de toegang tot deze bestanden sterk vereenvoudigen lagonze keuze vast. Er werd gekozen voor het iCalender (iCal) bestandstype. Meer informatieover iCal kan gevonden worden in Appendix 4.

Bestanden kunnen zowel lokaal als op afstand opgeslagen worden. Dit is noodzakelijk omdatniet elke STB over opslagcapaciteit beschikt. De op afstand opgeslagen bestanden kunnenzich zowel op een beveiligde als op een publiek toegankelijke server bevinden. De bestand-stoegang wordt uitgebreider besproken in hoofdstuk 14.

De applicatie is tot op heden niet configureerbaar. Dus het gebruik van al deze mogelijk-heden is voorlopig enkel hardcoded te verwezenlijken.

3PIM: Personal Information Managers

Page 40: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Hoofdstuk 9

Het AWT pakket

In dit hoofdstuk worden de basis elementen besproken die nodig zijn om een GUI op het inter-actieve televisie platform op te bouwen. Dit opbouwen van basiscomponenten is nodig om eenapplicatie te krijgen die compatibel is met de MHP standaard, waarover meer in Sectie 3.3.Andere AWT pakketten, zoals java.awt, zijn ontwikkeld voor de verschillende PC platformenniet voor een STB. Deze AWT’s zijn dan ook niet bruikbaar op een platform voor interactievetelevisie waar specifieke beperkingen, zoals voorgeschreven in de MHP standaard, gelden. Hetbasiswerk voor de Alcatel-Awt werd gedaan door Michael Brackx. In dit hoofdstuk bespreekik de klassen die ik aan het AWT pakket heb toegevoegd of waaraan ik aanzienlijke wijzigingheb gedaan. Via Javadoc werd er over deze componenten een uitgebreide documentatie sa-mengesteld. Deze is beschikbaar op de CD-ROM in bijlage. Meer over het aanmaken van dezejavadocs kan in Appendix 7 gevonden worden. Voor de uitbereidingen die gemaakt werden,werd indien mogelijk gestreefd naar een naamgeving en functionaliteit die de naamgeving enfunctionaliteit van de java-AWT zo sterk mogelijk benaderd.

9.1 De AComponent en AAbstractComponent klassen

Dit zijn twee zeer fundamentele componenten. In het oorspronkelijke Alcatel AWT pakketwerd er steeds met lay-outs gewerkt waarbij de container zijn grootte aangepast werd aande inhoud die hij op dat moment bevatte. (Bijvoorbeeld de LeftGrowingLayout) Dit is nietsteeds bruikbaar indien men wisselende hoeveelheden gegevens op een overzichtelijke manierwil weergeven. Een maandoverzicht waarop alleen de dagen zichtbaar zijn waarop er reedsiets gepland is, zou toch wel zeer onoverzichtelijk zijn bijvoorbeeld.

Het was dus noodzakelijk nieuwe lay-outs te maken die op een fundamenteel andere ma-nier werken dan diegene die reeds in ons pakket bestonden, maar die toch moesten voldoenaan de vooraf gedefinieerde interfaces.

Bij deze lay-outs, zoals GridLayout bijvoorbeeld, wordt de ruimte die in de container beschik-baar is verdeeld over de verschillende componenten die hij bevat. Dit maakt het noodzakelijkom met twee verschillende afmetingen te werken, namelijk de size en preferredSize. De sizebepaalt de afmetingen die daadwerkelijk weergegeven zullen worden. De preferredSize bevateen richtgrote die slechts in bepaalde gevallen gebruikt wordt. Zo zal een BoxLayout bij-voorbeeld afhankelijk van zijn instelling enkel de hoogte of de breedte van deze preferredSize

31

Page 41: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 9. HET AWT PAKKET 32

gebruiken maar nooit beide.

Omdat alle grafische componenten aan een lay-out moeten toegewezen kunnen worden, washet nodig ondersteuning voor deze preferredSize in de absolute basis klassen, waarop de heleAWT gebouwd is, in te voegen.

Deze basisklassen zijn AComponent en AAbstractComponent. Aan de interface ACompo-nent werden de methoden setPreferredSize, getPreferredSize toegevoegd zodat zij vanuit alleafgeleide klassen steeds toegankelijk zijn. In de abstracte klasse AAbstractComponent wor-den de methoden setPreferredSize, getPreferredSize daadwerkelijk geımplementeerd. Ook hetattribuut preferredSize dat de daadwerkelijke gegevens bevat wordt hierin gedefinieerd.

9.2 De ALabel klasse

Deze component bestond ook reeds, maar was zeer beperkt in mogelijkheden. Er kon al-leen gecentreerde tekst weergegeven worden. Door toevoegen van de methode setAlign(intalign) werd er voor gezorgd dat de tekst nu rechts, links of gecentreerd kan worden weer-gegeven. Men roept deze methode best aan met als argument een van deze constanten:ALabel.RIGHT ALIGNMENT, ALabel.LEFT ALIGNMENT of ALabel.CENTER ALIGN-MENT. Met de methode setHorizontalMargin(int horizontalMargin) kan er een marge wordeningesteld die er voor zorgt dat de links of recht uitgelijnde tekst niet tegen de rand van hetlabel aan plakt. In Figuur 9.1 zien we bovenaan een gecentreerd label met als tekst ”Note”en onderaan een rechts uitgelijnd label met als tekst ”Jessy”.

Figuur 9.1: ALabel en AMultilineLabel

Page 42: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 9. HET AWT PAKKET 33

9.3 De AMultilineLabel klasse

AMultilineLabel is een uitbereiding van ALabel. Het zal de tekst die het moet weergevenautomatisch verdelen over verschillende lijnen afhankelijk van de breedte die voorzien is omhet label weer te geven. Hierbij kan men de tekst uitlijnen met behulp van dezelfde methodendie in ALabel beschikbaar zijn. In Figuur 9.1 zien we hoe een AMultilineLabel gebruiktwordt voor de weergave van een Post-it. In bijlage kan het algoritme gevonden worden datontwikkeld werd om een String over verschillende lijnen af te drukken. (Sectie A.1)

9.4 De AShortLabel klasse

Ook AShortLabel is een uitbereiding van ALabel. Indien er te weinig plaats is in een label omalle karakters van de toegewezen string weer te geven zal dit type label er voor zorgen dat detekst wordt afgebroken op de juiste plaats en dat er op die plaats ”...

1” wordt weergegeven.Een voorbeeld hiervan is te zien in Figuur 9.2, waarin zowel het woord multimedia als DSPzich elk in een afzonderlijk AShortLabel bevinden.

Figuur 9.2: AShortLabel

9.5 De AList klasse

De klasse AList is een extensie van de klasse AContainer. Deze klasse biedt de mogelijkheidom verschillende AComponents te groeperen. Deze componenten worden dan onder elkaargeschikt. Er kan met de methode add zowel een component als een List van Componententoegevoegd worden. Componenten die niet weergegeven kunnen worden op de beschikbareplaats, worden wel steeds opgeslagen. De AList wordt veelvuldig gebruikt om afspraken weerte geven in de verschillende kalenderschermen. Voorbeelden van een AList zijn onder anderete zien in Figuur 9.2 en 9.3.

9.6 De BoxLayout klasse

BoxLayout is een implementatie van ALayout. De klasse heeft twee constructoren BoxLay-out() en BoxLayout(int axis). Als de eerste constructor gebruikt wordt, worden de com-ponenten via de standaard waarde, de Y-as, geordend. Met de tweede constructor kan erbepaald worden via welke as er gewerkt moet worden. Als waarde voor de axis variabele kanmen best een van twee constanten, BoxLayout.X AXIS of BoxLayout.Y AXIS, nemen. Indiendeze lay-out met de methode setLayout() aan een container (AContainer) wordt toegekend

1unicode teken \u2026

Page 43: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 9. HET AWT PAKKET 34

worden alle componenten die deze container bevat geordend volgens de ingestelde as. (X-asvan links naar rechts, Y-as van boven naar onder) Indien de X-as/Y-as geselecteerd werdzullen de componenten de hoogte/breedte van de container overnemen. De breedte/hoogtewordt gelijk aan de waarde preferredSize.width/preferredSize.height. De laatst toegewezencomponent krijgt steeds alle overige ruimte. In Figuur 9.3 werd er van een BoxLayout gebruikgemaakt. Het scherm is opgebouwd uit een ALabel (met de tekst ”Today”), een AImage (delijn) en een AList (die de uren en afspraken bevat).

Figuur 9.3: BoxLayout

9.7 De GridLayout klasse

GridLayout is eveneens een implementatie van ALayout. De standaard constructor van Grid-Layout voorziet een rooster van 3 rijen en 3 kolommen. Via de constructor GridLayout(intcols, int rows) kan er een rooster verkregen worden met een willekeurig aantal rijen en ko-lommen. De componenten zullen de rooster van links naar rechts en van boven naar benedeninvullen. Er kunnen al dan niet rasterlijnen weergegeven worden door de methode setShow-Lines(boolean showLines) te gebruiken. Indien de ruimte die in de container voorzien is nietvolledig gelijkmatig verdeeld kan worden over de verschillende rijen en kolommen, wordt heteventuele overschot aan de aan de rechtse kolom en onderste rij toegewezen. In Figuur 9.4wordt er van een GridLayout met rasterlijnen gebruik gemaakt. In sectie A.2 van de bijlagenkan de code die voor de uitlijning van de aan een gridlayout toegevoegde elementen zorgt.

Figuur 9.4: GridLayout

Page 44: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Hoofdstuk 10

Het Model pakket

In het pakket Model bevinden zich alle klassen die te maken hebben met de loop van het pro-gramma en met de verwerking van gegevens. In dit hoofdstuk worden de klassen besproken dieik aan dit pakket heb toegevoegd en diegene waaraan ik aanzienlijke toevoegingen heb gedaan.De klassen die ik zelf geschreven heb, zijn DayView, WeekView, MonthView, NoteView enGroceryListView, gegroepeerd in de sectie De -View klassen (Sectie 10.1) en FridgeTV (Sectie10.3). Van deze klassen zijn er op de bijlage-CD-ROM javadocs beschikbaar. Verder wor-den de klassen Models, ModelsView, ScenesImpl, ScenesViewItf en NormalTV besproken. Indeze klassen waren toevoegingen nodig om de applicatie te laten werken volgens de door deAmigoTV ontwikkelaars reeds vooropgestelde principes.

10.1 De -View klassen

De klassen DayView, WeekView, MonthView, NoteView en GroceryListView zijn de klassendie gegevens verzorgen voor de overeenkomstige klassen DayViewUI, WeekViewUI, Month-ViewUI, NoteViewUI en GroceryViewUI. Het zijn allen klassen die een extensie zijn van deabstracte klasse AbstractMenu.

De Constructors van de klassen DayView, WeekView en MonthView worden telkens opge-roepen met als parameter de naam van het ICalendar bestand dat alle kalender gegevensbevat van onze gebruiker. Dit iCal bestand wordt dan ingelezen met behulp van de klassenbesproken in Sectie 14.1. Hierna halen deze drie klassen dan de gepaste informatie op uit hetICalendar object en slaan die informatie op in een ArrayList. De respectievelijke -UI klasse zaldeze gegevens uit de ArrayList terug ophalen en op het scherm weergeven. Bij DayView moeter als parameter eveneens meegegeven worden om welke dag het gaat (Vandaag of morgen).Dit gebeurt door middel van de constanten DayView.TODAY of DayView.TOMORROW.Dit omdat de klasse DayView zowel gebruikt wordt om de gegevens over vandaag als overmorgen op te slaan. Hierbij vermelden we dat er aan DayViewUI niks specifiek moet wordendoorgegeven.

De klasse NoteView wordt opgeroepen met als parameter een object van de klasse NoteListdat alle notities bevat. De klasse GroceryListView met een object van de klasse GroceryList.

Al deze klassen staan tevens in voor het bijhouden van de labels die bij de verschillende

35

Page 45: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 10. HET MODEL PAKKET 36

kleurknoppen op de afstandsbediening horen en die onderaan elk applicatiescherm wordenweergegeven. Deze labels worden via de methoden getGreenLabel(), getYellowLabel() en get-BlueLabel() opgevraagd door de klasse CommandBarUI die wordt besproken in Sectie 11.4.Merk op dat het rode label, dat doorheen al de verschillende toepassingsvensters hetzelfdelabel en functie behoudt, hier niet wordt bijgehouden.

Ook de functies die de kleurknoppen moeten vervullen, wederom met uitzondering van derode kleurknop, worden in deze klassen bijgehouden, meer bepaalt in de methoden: onGreen-Command(), onYellowCommand() en onBlueCommand(). Deze methoden moeten er in onzeapplicatie meestal enkel voor instaan dat de huidige -View wordt verborgen en dat de correcte-View zichtbaar wordt. De code waarin in de klasse DayView gebruik wordt gemaakt om delist in te vullen is terug te vinden in sectie A.3 van de bijlagen.

10.2 De NormalTV klasse

Hier wordt de verwerking van de invoer gedaan die tijdens het gewone TV kijken wordtontvangen. Deze klasse luistert enkel naar de vier kleur knoppen. Waarvan er slechts tweedaadwerkelijk gebruikt worden: De rode om AmigoTV te starten en de Groene om FrigoTVte starten. Deze laatste functionaliteit toevoegen was dus ook het enige dat er aan deze klassegewijzigd moest worden. Dit gebeurt door de reeds bestaande methode onGreenCommand()in te vullen. De methode showFridgeScreen() uit de hieronder besproken klasse (Sectie 10.7)ScenesImpl wordt hier aangeroepen.

10.3 De FridgeTV klasse

Deze klasse is een extensie van AbstractCommandBarModel en een implementatie van Com-mandBarModel. De klasse FridgeTV is de models klasse die geladen wordt wanneer er tijdenshet normale TV kijken op de groene knop gedrukt wordt. Het staat in voor de labels die wor-den weergegeven wanneer er geen enkele -View geladen is. Ook de functionaliteit die bij dezelabels hoort zit in deze klasse. Dit alles verloopt analoog met de werking van de -View klassen.Dus via onder andere de methoden: getGreenLabel(), onGreenCommand(), ... De FridgeTVklasse is geen extensie van AbstractMenu zoals de -View klassen (Sectie 10.1) omdat het geengegevens bevat. In tegenstelling tot de NormalTV klasse (Sectie 10.2) worden de labels hierwel weergegeven, de interface om dit te verwezenlijken is de CommandBarModel klasse.

10.4 De Models klasse

In deze klasse wordt er van elke verschillende -View klasse een concreet object aangemaakt.Deze objecten hebben steeds dezelfde naam als de overeenkomstige klasse. Dit op uitzon-dering van de eerste letter. Bij een klasse begint de naam steeds met een hoofdletter. Denaam van het afgeleide object begint steeds met een kleine letter. Deze manier van werken isgebruikelijk in het java programmeren. Van de klasse DayView worden hier zowel een objecttodayView als tomorrowView gemaakt. Aan de vier views die kalender gegevens weergeven,namelijk todayview, tommorowview weekview en monthview, wordt eveneens de bestands-naam van het te openen kalender bestand als parameter doorgegeven. De klassen noteView engroceryListView worden geınitialiseerd met als parameter respectievelijk een noteList en een

Page 46: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 10. HET MODEL PAKKET 37

groceryList. Deze worden, door de methoden InitData.initNotes en InitData.initGroceries uitte voeren, gevuld met voorbeeld waarden.

10.5 De ModelsView klasse

Deze klasse zorgt voor de link tussen het Model-pakket en het Gui-pakket. Voor elke be-staande -view wordt er hier een methode voorzien die het mogelijk maakt om deze -viewsop te roepen vanuit een -UI klasse. Dit gebeurt in de kalender applicatie enkel in de klasseFridgeTVUI (Sectie 11.5).

10.6 De ScenesViewItf klasse

Aan deze interface klasse wordt enkel een constante string toegevoegd met als naam FRID-GETV en als waarde ”fridgetv”. Deze string zal in het pakket gui gebruikt worden om tecontroleren welke model klasse geladen moet worden om een gegeven scene weer te geven.Een scene is een samenstelling van verschillende elementen die samen worden weergegeven.Een scene bevat bijvoorbeeld een achtergrond, commandbar en een of meerdere views of me-nu’s die al dan niet zichtbaar zijn. Andere scenes zijn bijvoorbeeld normaltv, die enkel hetAmigoTV icoontje bevat, of login, het AmigoTV loginscherm.

10.7 De ScenesImpl klasse

In deze klasse wordt door een van de constanten, waarover in de vorige sectie (Sectie 10.6)sprake was, toe te kennen aan de variabele scene, bijgehouden in welke Scene we ons opdit ogenblik daadwerkelijk bevinden. In deze klasse blijven de benodigde wijzigingen danook zeer beperkt. Er wordt hier enkel de methode showFridgeScreen() toegevoegd. In dezemethode wordt de variabele scene op FRIDGETV gezet. Ook wordt de enable methode vande juiste scene aangeroepen zodat de toetsaanslagen nu door deze scene afgehandeld kunnenworden. Hierna is het nog noodzakelijk de methode triggerSceneChanged aan te roepen zodatde wijzigingen ook daadwerkelijk zullen weergegeven worden.

Page 47: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Hoofdstuk 11

Het GUI pakket

De grafische gebruikers interface van de kalenderapplicatie wordt opgebouwd uit een groteverzameling klassen. Deze klassen zijn onder andere de eerder reeds vermelde klassen: DayVie-wUI, WeekViewUI, MonthViewUI, NoteViewUI en GroceryListViewUI, de klasse FridgeTV,die het overzichtsscherm weergeeft, InternalFrameUI, de ouderklasse van de verschillende -ViewUI klassen en de DayOfMonthUI klasse, bevat een dag op een maand en week overzicht.Verder zijn er ook in dit pakket wijzigingen aangebracht in verschillende reeds bestaande klas-sen, namelijk: CommandBarUI, DefaultSkin, ScenesUI, Gui, Images en Constants. Van deklassen die volledig door mij werden geschreven zijn de javadocs beschikbaar op de CD-ROM.

11.1 De InternalFrameUI klasse

Deze klasse werd aangemaakt om een basisklasse te hebben voor de verschillende -ViewUIklassen. In AmigoTV worden deze voorgrondcomponenten steeds op AbstractMenuUI geba-seerd. Klasse die hierop gebaseerd zijn leveren een menu op waarin elk element geselecteerdkan worden. In de kalenderapplicatie kunnen geen elementen geselecteerd worden. Internal-FrameUI is dus een vereenvoudigde versie van AbstractMenuUI die geen ondersteuning voorselectie biedt. InternalFrameUI is op zijn beurt een extensie van AContainer, zodat ook al deafgeleiden van InternalFrameUI door overerving hiervan afgeleid zijn.

11.2 De -ViewUI klassen

Al deze klassen zijn een extensie van de InternalFrameUI klasse. Deze klassen bevattende opbouw van de grafische componenten. Ze maken hiervoor veelvuldig gebruik van decomponenten uit het AWT pakket. Verder bevatten ze allen een methode layout. Dezemethode zorgt er voor dat effectieve kalendergegevens worden weergegeven. Het leest daarvoorgegevens in uit een ArrayList. Deze ArrayList wordt van zijn elementen voorzien door deovereenkomstige -View klasse. Indien de gegevens veranderen is dit de enige methode uit de-ViewUI die moet worden aangeroepen om de veranderingen weer te geven.

11.2.1 De DayViewUI klasse

Deze klasse wordt zowel voor de weergave van het ”vandaag”- als het ”morgen”-scherm ge-bruikt. De weergave wordt opgebouwd door een BoxLayout(Sectie 9.6) in de Y-richting te

38

Page 48: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 11. HET GUI PAKKET 39

gebruiken. Hieraan wordt achtereenvolgens een ALabel, een AImage en een AList toegevoegd.Verder wordt er een nog achtergrond afbeelding ingesteld. De achtergrond die in het huidi-ge ontwerp gebruikt wordt kan op een eenvoudige en snelle manier vanuit code gegenereerdworden. Het gebruiken van een afbeelding kan hier dan ook vooral gezien worden als voorbe-reiding op een meer grafische vormgeving in toekomstige versies. De code waar de gegevensuit de list worden opgehaald en op het scherm worden weergegeven is terug te vinden inbijlage sectie A.5. Verder wordt er in sectie A.4 weergeven hoe het scherm opgebouwd wordt.

11.2.2 De WeekViewUI klasse

De basisstructuur van deze klasse is opnieuw een boxlayout volgens de Y-as. Met hierineen ALabel, een AImage en een AContainer. Aan deze container wordt dan een GridLayouttoegewezen met een rij en zeven kolommen. Aan elk van deze zeven kolommen wordt eenDayOfMonthUI toegevoegd. De weekdag waarmee een week begint wordt bepaald door demethode getFirstDayOfWeek van de klasse Calendar te raadplegen. Dit is afhankelijk van deWindows instellingen.

11.2.3 De MonthViewUI klasse

Hier wordt er als basis ook weer hetzelfde stramien gebruikt. Een BoxLayout (Y-as), meteen ALabel, een AImage en een AContainer. Deze klasse maakt dan gebruik van een anderelayout, namelijk de GridLayout om aan de AContainer toe te wijzen. Met behulp van dezelayout wordt een rooster gecreeerd van 7 op 5 of 7 op 6. Dit omdat sommige maandengespreid zijn over vijf en sommige over zes weken. De weergave van de afzonderlijke dagenword wederom door de klasse DayOfMonthUI verzorgd.

11.3 De DayOfMonth klasse

De DayOfMonth klasse wordt zoals eerder reeds vermeld, gebruikt om de afzonderlijke da-gen weer te geven. Dit zowel in het ”Deze Week”-scherm als in het ”Deze Maand”-scherm.Verschillende instellingen bepalen het uitzicht van deze klasse. De dag en datum worden alsparameters doorgegeven aan de constructor. Via de methode setEvents worden de afspra-ken van de dag doorgegeven. Methode setLongHeader wordt gebruikt om het onderscheid temaken tussen de twee voorstellingswijzen. De ene met enkel de dag voluit gecentreerd diebij het ”Deze Week”-scherm gebruikt wordt. Dit is de LongHeader voorstelling. De anderemet de afgekorte dag links bovenaan en de datum rechts bovenaan zoals die in het ”DezeMaand”-scherm gebruikt wordt. Beide voorstellingswijzen worden opgebouwd door gebruikte maken van een BoxLayout volgens de Y-as. Bij de LongHeader voorstelling bevat dezeBoxLayout een ALabel, met de gecentreerde dag en een AList. Bij de andere voorstellingbevat deze BoxLayout een AContainer en een AList. De AContainer bevat op zijn beurttwee ALabels een links en een rechts uitgelijnd. Deze worden geordend door een BoxLayoutvolgens de X-as. Ze bevatten respectievelijk de verkorte dag en de datum. Met de methodesetWeekday wordt er bepaald of het een week- of weekenddag is. Dit vertaalt zich in een wij-ziging van de achtergrondkleur. De methode setWeekday zorgt eveneens voor een wijzigingvan de achtergrond kleur. Dit om de huidige dag aan te geven. De RGB waarden van dekleuren die in de applicatie gebruikt werden, werden bepaald met behulp van deze website:http://www.jafar.com/java/csel/.

Page 49: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 11. HET GUI PAKKET 40

11.4 De CommandBarUI klasse

De wijzigingen, die in deze klasse aangebracht werden, hebben niet alleen effect op de kalenderapplicatie maar ook op AmigoTV. De CommandBarUI is verantwoordelijk voor het weergevenvan de labels, die bij de kleurenknoppen op de afstandsbediening horen. In de oorspronkelijkeapplicatie werden deze labels steeds weergegeven op een zwarte balk onderaan. Om dezeweergave mooier te maken werd er beslist deze zwarte balk weg te laten. Om te garanderendat de labels echter nog steeds voldoende duidelijk weergegeven werden op elke achtergrondmoest er een zwarte rand voorzien worden rondom alle letters van de vier labels. Op Figuur11.1 is het verschil tussen beide implementaties van de CommandBarUI zichtbaar.

Figuur 11.1: Twee versies van de CommandBarUI klasse

11.5 De FridgeTVUI klasse

Dit is een uitbreiding van de klasse AContainer. Aan deze container worden al verschillendeelementen toegevoegd die in deze scene zichtbaar kunnen gemaakt worden. Dit zijn dusde achtergrond afbeelding, alle -ViewUI klassen en de commandbarUI. De -ViewUI klassenworden dus reeds bij het weergeven van de scene geladen.

11.6 De DefaultSkin klasse

In deze klasse kunnen verschillende constante waarden voor de verschillende -ViewUIs inge-steld worden. Er wordt de locatie op het scherm van de verschillende -ViewUIs bijgehouden,het lettertype, de kleur van het lettertype, evenals als de klassen die bij de verschillende-ViewUIs horen.

11.7 De ScenesUI klasse

ScenesUI zorgt ervoor dat de juiste scene wordt weergegeven. Dit gebeurt door de verschil-lende constanten in ScenesViewItf (Sectie 10.6) te vergelijken met de variabele waarde die demethode getScene uit de klasse Models teruggeeft. Hier moet de scene FridgeTV toegevoegdworden.

Page 50: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 11. HET GUI PAKKET 41

11.8 De Gui klasse

Dit is het bestand dat als eerste wordt aangeroepen als de applicatie gestart wordt. In dekeyListener klasse worden bepaalde toetsaanslagen opgevangen. Deze toetsen worden tijdensde ontwikkelingsfase gebruikt om de applicatie te bedienen. Bepaalde toetsen op het toetsen-bord nemen de functie van de knoppen op de afstandsbediening over. Tabel 11.1 geeft eenoverzicht van alle toetsen waar op de applicatie mogelijk kan reageren.

Afstandsbediening Toetsenbordboven a & pijl bovenonder d & pijl onderlinks pijl linksrechts pijl rechtsOK s & spatierood ugroen igeel o

blauw p

Tabel 11.1: Afstandsbedieningstoetsen TV-GUI

Voor een makkelijke bediening van de applicatie werden er aan de voor AmigoTV reedsgedefinieerde toetsen, nog enkele toetsen toegevoegd. Met name de pijltjes en de spatiebalk.

11.9 De Images klasse

De init methode van deze klasse wordt tijdens het opstarten van de applicatie aangeroepen. Indeze methode bevinden zich verwijzingen naar alle klassen die van afbeeldingen gebruikmaken.Deze klasse maakt deel uit van het mechanisme om alle afbeeldingen op voorhand in te ladenzodat de applicatie op een vlotte manier kan werken.

11.10 De Constants klasse

Deze klasse wordt er enkel voor gebruikt om bepaalde constanten die veelvuldig in de appli-catie gebruikt worden te groeperen. Deze klasse bevat dus geen constructoren of methodes.Het lettertype dat in de TV-GUI gebruikt wordt, wordt in de constante FRIDGETV FONTopgeslagen. Dit font wordt in alle -ViewUI klassen gebruikt.

Page 51: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Hoofdstuk 12

De IM-Interface

Deze applicatie zorgt ervoor dat de kalendergegevens toegankelijk worden via de verschillendeIM clients, zoals MSN, ICQ, Yahoo!, AOL en jabber.

12.1 Werking

De gebruiker zal op zijn IM client een contactpersoon moeten toevoegen die geen echte per-soon voorstelt maar waarachter de toepassing schuil gaat. Men zal dan via het zenden vangewone berichtjes naar deze contactpersoon gegevens kunnen opvragen en gegevens kunnenwijzigingen. Dit kan natuurlijk door de verschillende familieleden vanaf verschillende plaat-sen tegelijkertijd gebeuren. Er moet echter wel rekening gehouden met een zekere syntaxom de juiste werking van de applicatie te garanderen. Er is bewust gekozen om deze syntaxzeer eenvoudige en natuurlijk te houden. De commando’s zijn niet hoofdletter gevoelig. Deapplicatie antwoordt steeds door samen te vatten welke wijzigingen er gemaakt werden.

12.1.1 Afspraken

Het opvragen van kalendergegevens gebeurt via de commando,s ”vandaag” en ”morgen”.

Kim zegt:vandaag

FrigoTV zegt:De afspraken van vandaag zijn:

08:30-15:40 School17:30-19:00 Bij Oma gaan eten20:00-22:00 Huiswerk maken bij Joyce

Het toevoegen van een afspraak aan de kalender gebeurt door te werken met het commando

”afspraak” gevolg door ofwel ”vandaag” ofwel ”morgen”. Dan komt er eventueel de begin-en eindtijd. Deze tijden kunnen weggelaten worden. Indien er een tijd meegegeven wordtdan zal zowel de begin- als eindtijd deze waarde aannemen. Als er geen enkel uur wordtmeegegeven wordt er een afspraak voor de ganse dag gemaakt. De uren dienen steeds in24u-notatie gegeven te worden. Het opgegeven uur mag uit een of twee cijfers bestaan. Deminuten moeten steeds uit twee cijfers bestaan. Er mogen geen seconden meegegeven worden.

42

Page 52: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 12. DE IM-INTERFACE 43

Er wordt verondersteld dat alle afspraken op dezelfde dag aanvangen en eindigen. Als laatsteargument wordt de omschrijving van de afspraak gegeven.

Kim zegt:afspraak vandaag 17:30 19:00 Bij Oma gaan eten

FirgoTV zegt:Deze afspraak werd toegevoegd:

vandaag van 17:30 tot 19:00.bij oma gaan eten

12.1.2 Boodschappen

Met behulp van het commando ”boodschappenlijst” wordt er een overzicht van de huidigeboodschappenlijst opgevraagd. Naast elk item dat zich op de boodschappenlijst bevindt,wordt eveneens aangegeven wie dat item op de boodschappenlijst geplaatst heeft.

Mama zegt:Boodschappenlijst

FrigoTV zegt:De huidige boodschappenlijst is:

brood Mamaboter Mamamelk Mamaeieren MamaFanta Kim

Nieuwe boodschappen op het lijstje toevoegen gebeurt met ”boodschap” gevolgd door een ofmeerdere items. Deze items worden dan op de boodschappenlijst toegevoegd. De applicatieachterhaalt zelf wie de boodschappen op de lijst heeft toegevoegd.

Mama zegt:Boodschap boter melk eieren

FrigoTV zegt:Deze boodschappen werden toegevoegd:

boter Mamamelk Mamaeieren Mama

12.1.3 Notities

Alle berichtjes die niet beginnen met een van de voorgaande commando’s worden beschouwdals notities.

Papa zegt:Ik kom vanavond een uurtje later thuis.

FrigoTV zegt:

Page 53: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 12. DE IM-INTERFACE 44

Deze notitie werd op je prikbord bevestigd:

ik kom vanavond een uurtje later thuis.

Page 54: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Hoofdstuk 13

Het IM Interface pakket

Hier wordt het pakket beschreven dat voor de werking van de IM Interface (Hoofdstuk 12)zorgt. De volledige naam van dit pakket is: be.devoegt.koen.IM Interface. De javadocs diebij dit pakket horen evenals de volledige code programmacode kan op de CD-ROM in bijlageteruggevonden worden.

13.1 De Constants klasse

Deze klasse wordt er enkel voor gebruikt om bepaalde constanten die veelvuldig in de ap-plicatie gebruikt worden te groeperen. De configuratie van de IM Interface kan gebeurendoor enkel de, in deze klasse gedefinieerde constanten, te wijzigen. Deze klasse bevat geenconstructoren of methodes. Deze contanten zijn opgesomd in tabel 13.1.

Naam constante FunctieICALSERVER De volledige URL van het iCal bestand.

ICALUSERNAME De gebruikers naam op de iCal server.ICALPASSWORD Het wachtwoord op de iCal server.JABBERSERVER De naam van de Jabber server.

JABBERUSERNAME De gebruikers naam op de Jabber server.JABBERPASSWORD Het wachtwoord op de Jabber server.

Tabel 13.1: De constanten

13.2 De Grocery klasse

Deze klasse is een zeer elementaire basisklasse die de nickname van de gebruiker die dezeboodschap toevoegde en de naam van de boodschap groepeert.

13.3 De GroceryList klasse

In deze klasse wordt de verzameling van alle boodschappen bijgehouden. Door de methodeaddGrocerie worden boodschappen toegevoegd. Deze methode geeft de String terug die naar

45

Page 55: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 13. HET IM INTERFACE PAKKET 46

de gebruiker wordt teruggezonden. De methode toString geeft eveneens een String terug.Deze String bevat alle boodschappen die zich op de boodschappenlijst bevinden. Hij wordtgebruikt wanneer de gebruiker de opdracht ”Boodschappenlijst” doorstuurd. Deze klassewordt aangeroepen vanuit de MessageParser klasse.

13.4 De Note klasse

Deze klasse is zeer vergelijkbaar met Grocery. Het is eveneens een elementaire basisklasse diede gebruikersnaam van de zender van de boodschap, alsook de boodschap zelf groepeert.

13.5 De NoteList klasse

NoteList is een klasse die sterke verwantschap kent met GroceryList. Deze klasse staat na-melijk in voor het opslaan van notities. Laat het toe een of meerdere Note’s tegelijk toe tevoegen aan de NoteList. Geeft een de Note met gespecificeerde index in de lijst, of een lijstvan alle Note’s terug.

13.6 De InitData klasse

Dit is een klasse die enkel gebruikt wordt om de NoteList en GroceryList te vullen met testwaarden. Deze klasse heeft geen enkel nut in een afgewerkte applicatie. Deze klasse wordtook gebruikt door de TV-GUI.

13.7 De AppointmentList klasse

In deze klasse bevinden zich maar twee methoden. Dit zijn met name addAppointment engetAppointment.

Zoals de naam doet vermoeden wordt addApointment gebruikt om afspraken toe te voe-gen aan de AppointmentList. Er moeten vier argumenten meegegeven worden. Als eerste eenstring die de volledige body van het ontvangen bericht bevat. Dit bevat dus ook de identifi-catie ”Afspraak” die aan de MessageParser reeds duidelijk maakt dat deze methode gebruiktmoet worden. Het tweede argument is een int die aanduid om welke dag het gaat. Dezewordt best meegegeven door middel van de constanten TODAY en TOMORROW. Het derdeen vierde argument zijn een String die een aanvangs- en eindtijd bevatten. In deze methodewordt eerst het kalenderbestand ingelezen. Vervolgens wordt gecontroleerd of er geen, een oftwee tijden werden meegegeven. Vervolgens wordt er een nieuwe afspraak gecreeerd. Dezewordt vervolgens aan de reeds bestaande kalender toegevoegd. Waarna de kalender opnieuwwordt opgeslagen. Als laatste geeft deze klasse een String terug die het antwoord bevat datgegeven wordt wanneer een afspraak werd toegevoegd.

De methode getAppointment wordt gebruikt om de afspraken van een bepaalde dag weerte geven. Deze methode heeft maar een argument nodig. Er wordt een int meegegeven dienet zoals bij addAppointment aanduidt om welke dag het gaat. In deze methode wordt eersthet kalenderbestand geopend. Dan wordt er doorheen dit ganse bestand geıtereerd. Om zo

Page 56: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 13. HET IM INTERFACE PAKKET 47

alle afspraken op die gegeven dag plaatsvinden te verzamelen. Van al deze gegevens wordtdan een String samengesteld die door de methode wordt teruggegeven.

Het iCal bestand wordt in deze klasse geopend met behulp van de in Hoofdstuk 14 besprokenklassen.

13.8 De FridgeTV klasse

Dit de klasse die de main van de IM-Interface toepassing bevat. Hierin wordt de verbindingmet de server opgezet. De SubscriptionMode wordt op SUBSCRIPTION MANUAL gezet.Dit zorgt ervoor dat niemand zich op de status van onze applicatie kan abonneren. Dezeinstelling gebeurt door met een gewone Jabber chat client in te loggen onder de gebruikers-naam van onze applicatie. Hierna wordt de status gezet. Dan wordt aan de connectie metbehulp van de methode addPacketListener een instantie van de FridgeTVPacketListener ende FridgeTVPacketListener klasse toegevoegd. Dit zorgt ervoor dat de invoer die via de con-nectie aangevoerd wordt en die door de filter toegelaten wordt kan verwerkt worden door delistener. Hierna wordt er in het programma gewacht tot het opdracht krijgt om te stoppen.Alle verdere verwerking gebeurt via de listener.

13.9 De FridgeTVPacketFilter klasse

De binnenkomende berichten worden door deze klasse gefilterd. Deze klasse is een extensievan de klasse PacketTypeFilter. De constructor van deze onderliggende klasse wordt in dezeklasse aangeroepen met als argument Message.class. Dit zorgt ervoor dat de bovenliggendefilter (FridgeTVPacketFilter) enkel nog maar berichten te verwerken krijgt die van het typeboodschap zijn. En dus niets dat te maken heeft met de werking van Jabber, zoals bijvoorbeeldstatus of keep alive berichten. In FridgeTVPacketFilter worden enkel gebruikers die totde gebruikersgroep familie of vrienden behoren geaccepteerd. Het is duidelijk dat het nietwenselijk is dat iedereen op het publieke Jabber-netwerk toegang heeft tot onze gegevens.

13.10 De FridgeTVPacketListener klasse

In deze klasse worden alle berichten, die door de FridgeTVPacketFilter (Sectie 13.9) wordendoorgelaten, verwerkt. Aan de constructor van deze klasse wordt de connectie die in hethoofdprogramma (Sectie 13.8) wordt gemaakt doorgegeven. Dit is noodzakelijk omdat hetdeze klasse is die de antwoorden naar de gebruiker terugzendt. De inhoud van de antwoordenbekomt deze klasse door gebruik te maken van de MessageParser. (Sectie 13.12)

13.11 De FridgeTVRosterListener klasse

Wordt gebruikt om statusberichten ivm het roster te ontvangen en weer te geven. Deze klasseis enkel noodzakelijk tijdens de verdere ontwikkeling van de IM Interface. De applicatie zelfheeft in eerste instantie geen boodschap aan de status informatie van de gebruikers. Indienmen de applicatie zou willen uitbreiden met een geautomatiseerd bericht, dat verstuurd wordt

Page 57: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 13. HET IM INTERFACE PAKKET 48

telkens een herkende gebruiker online komt, dan moet deze klasse wel geımplementeerd zijnen nog verder uitgebreid worden.

13.12 De MessageParser klasse

De enige methode in deze klasse is getReply. Deze klasse maakt gebruik van de klassenGroceryList, NoteList en AppointmentList (Secties 13.3, 13.5 en 13.7). De methode getReplyheeft als argumenten twee Strings. De eerste String bevat de volledige body van de boodschap.De tweede bevat de naam van de afzender. De klasse detecteert of de boodschap aanvangtmet een van de vijf gekende commando’s (boodschappenlijst, boodschap, vandaag, morgen,afspraak). Indien dit niet het geval is wordt er verondersteld dat men een notitie wil toevoegen.Indien men een afspraak wil toevoegen wordt er reeds in deze klasse nagegaan over welke daghet gaat en of dat er al dan niet aanvangs- en eindtijd meegegeven is. Deze klasse geeft eenString terug die het antwoord op het verzonden bericht vormt.

13.13 De UserList klasse

Deze klasse wordt door de klasse FridgeTVPacketFilter (Sectie 13.9) gebruikt om de ledenvan de familie en de vrienden op te slaan. Bij het aanmaken van deze lijsten wordt er via drieboolean’s meegegeven of gebruikers die tot deze groep behoren toestemming hebben notities,boodschappen of afspraken toe te voegen. Van deze laatste functionaliteit wordt in de huidigeversie echter nog geen gebruik gemaakt. Een gebruiker die zich op een van de twee lijstenbevindt heeft volledige toegang tot de applicatie.

Page 58: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Hoofdstuk 14

Gedeelde klassen

De klassen die gebruikt worden om toegang te krijgen tot gegevens in het iCal bestandsformaatworden zowel in de TV-GUI als in de IM-interface gebruikt. Daarom werden deze klassenin een apart pakket, namelijk be.devoegt.koen.iCal RW, gestoken. Dit is een afkorting vooriCalendar Read/Write. In alle codevoorbeelden in dit hoofdstuk wordt de afhandeling vande opgeworpen exceptions voor de duidelijkheid weg gelaten. Over het bestandstype kan ermeer informatie teruggevonden worden in Bijlage 4. De javadocs van de door mij geschrevenklassen evenals de volledige programmacode die bij dit pakket horen kunnen teruggevondenworden op de CD-ROM in bijlage.

14.1 iCal Bestanden Lezen

Om bestanden in te lezen werden er drie klassen voorzien, elk met een verschillend doel.De klassen OpenLocalFile wordt gebruikt om lokaal bewaarde bestanden te openen. Omonbeveiligde bestanden van op server in te lezen is er de klasse OpenRemoteFile. Bestandenop een beveiligde server kunnen geopend worden met de klasse OpenSecureRemoteFile.

14.1.1 De OpenLocalFile klasse

De klasse OpenLocalFile krijgt bij het aanroepen als parameter de string ”file” mee. Dezestring bevat de bestandsnaam eventueel aangevuld met het pad. Het openen van een lokaalbestand wordt op de volgende manier verwezenlijkt:

fin = new FileInputStream(file);iCalendar = builder.build(fin);fin.close();

14.1.2 De OpenRemoteFile klasse

Het openen van een bestand dat zich op een publiek toegankelijke webserver bevindt, vraagtiets meer stappen. Hieronder verduidelijken we dit met een code voorbeeld. Hierin is urlStringde volledige url met inbegrip van de protocol aanduiding (http://) en de bestandsnaam. Dezevariabele wordt eveneens als parameter meegegeven.

URL url = new URL(urlString);URLConnection conn = url.openConnection();

49

Page 59: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 14. GEDEELDE KLASSEN 50

conn.setDoInput(true);conn.setUseCaches(false);fin = conn.getInputStream();iCalendar = builder.build(fin);fin.close();

14.1.3 De OpenSecureRemoteFile klasse

Een bestand dat op een beveiligde webserver opgeslagen is, gebeurt met de klasse OpenSe-cureRemoteFile. Aan deze klasse moet niet enkel de variabele urlString meegegeven worden,maar eveneens de variabelen username en password.

InputStream fin;CalendarBuilder builder = new CalendarBuilder();

Authenticator.setDefault(this);

URL urlString = new URL(urlString);fin = urlString.openStream();iCalendar = builder.build(fin);fin.close();

De klasse OpenSecureRemoteFile is een extensie van de klasse Authenticator. Via de methodePasswordAuthentication worden wachtwoord en gebruikersnaam verschaft.

14.2 iCal Bestanden Schrijven

14.2.1 De SaveLocalFile klasse

Om bestanden weg te schrijven naar een lokaal bestandssysteem beschikt dit pakket over deklasse SaveLocalFile. Hier wordt net zoals bij OpenLocalFile met de string ”file” gewerkt.

FileOutputStream fout = new FileOutputStream(file);CalendarOutputter outputter = new CalendarOutputter();outputter.output(iCalendar, fout);fout.close();

14.2.2 De SaveSecureRemoteFile klasse

Deze klasse wordt aangeroepen met als variabelen de Strings urlString, username en passworden het iCalendar object. Voor het opslaan van gegevens op een WebDAV server wordt deJakarta Slide programma bibliotheek gebruikt.

FileOutputStream fout = new FileOutputStream(file);CalendarOutputter outputter = new CalendarOutputter();outputter.output(iCalendar, fout);fout.close();

HttpURL hurl = new HttpURL(server);

Page 60: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 14. GEDEELDE KLASSEN 51

hurl.setUserinfo(username, password);WebdavResource wdr = new WebdavResource(hurl);File outFile = new File(file);

wdr.putMethod(path, outFile);wdr.close();

De variabele urlString wordt in de eerste stap opgesplitst in drie anders Strings, namelijkserver, path en file. De variabele server bevat de naam van de server en de protocol aanduiding.De variabelen path en file bevatten respectievelijk het absolute pad op de server (met inbegripvan de bestandsnaam) en de bestandsnaam afzonderlijk. In de eerste fase wordt er een tijdelijkbestand opgeslagen met dezelfde naam, dat bestand wordt in het tweede deel van de routinemet behulp van putMethod verzonden naar de server. Deze manier van werken is duidelijkgeen ideale oplossing.

14.3 De TestMain klasse

Verder bevat dit pakket nog een testklasse. Deze klasse TestMain is een uitvoerbare klassedie gebruik maakt van de bovenstaande klassen. Ze kan bestanden inlezen van een lokaalbestandssyteem, een publieke en een prive server. Ze voegt hierna een test afspraak toe.Deze afspraak heeft als omschrijving ”Test Appointment!!!”. Ze vangt steeds op het huidigetijdstip aan en duurt een uur. Hierna slaat de klasse de kalender opnieuw op. Met behulp vanconstanten die in deze klasse gedefinieerd worden kunnen de gebruikte bestanden ingesteldworden.

Page 61: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Hoofdstuk 15

SMS

Om het mobiele aspect aan de applicatie toe te voegen werden er verschillende mogelijkewerkwijzen onderzocht. De eerste methode onderzocht de bestaande SMS gateways voorjabber. De tweede methode bekeek een eventuele werking via een ander IM protocol.

15.1 SMS gateway

Er zijn verschillende SMS-gateways voor Jabber beschikbaar. De meeste transports latenechter enkel eenrichtingsverkeer, van internet naar GSM, toe. Een voorbeelden hiervan ishttp://www.amessage.be. In tegenstelling tot wat de naam doet vermoeden bevindt dezeserver zich in Duitsland. Deze diensten zijn echter niet bruikbaar omdat onze applicatie nietelk SMS berichten moet kunnen versturen.

Figuur 15.1: Netwerk infrasructuur voor verzenden SMS.

Een server die wel tweerichtingsverkeer toelaat is http://aspsms.com. De registratie, vaneen virtueel telefoonnummer om SMS te ontvangen, op deze dienst is niet kosteloos (120euro per jaar). Deze prijs werd te hoog geacht voor gebruik in een demo-opstelling. Eenschema van de werking wordt gegeven in figuur 15.1. Facturatie gebeurt via een kredietkaart.Meer informatie kan gevonden worden op http://www.chatopus.com/articles/sms.htmlen http://www.aspsms.com/solutions/3rd-party/jabbertosms/.

15.2 Andere gateways

In deze sectie wordt er alleen dieper ingegaan op de diensten van MSN Mobile. Geen van deandere IM netwerken werken samen met een van de Belgische GSM-operatoren. Dit heeft tot

52

Page 62: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 15. SMS 53

gevolg dat via deze diensten werken steeds een meer kost met zich meebrengt, en vaak zelfsonmogelijk is zonder een GSM abonnement in een van de landen waarin de dienst actief is.

15.2.1 MSN Mobile

De diensten van MSN Mobile bieden tweerichtingsverkeer tussen MSN-messenger en een GSMaan. Via deze dienst is het mogelijk locale GSM-operatoren te gebruiken. In Belgie zijn ditMobistar en Proximus. Hierbij wordt er een bestaand GSM-nummer gekoppeld aan eenbestaande MSN-account. De facturatie gebeurt via de GSM-operatoren. Zowel een SMS ver-zonden naar een MSN-account als een IM-bericht ontvangen op een GSM wordt gefactureerdaan de eigenaar van de betrokken GSM. Er kan eveneens een opgevraagd worden welke ledenvan de contactlijst er op dit moment online zijn. Dit gebeurt door het verzenden van een SMSmet als enige tekst LS naar een nummer dat bij de registratie van een MSN mobile accountwordt meegedeeld. Hierop wordt dan onmiddellijk geantwoord met een SMS die een overzichtvan de online contactpersonen bevat.

Figuur 15.2: Netwerk infrasructuur voor verzenden SMS via MSN.

Deze opstelling blijkt in de praktijk echter niet te werken. Als er een Jabber account on-line is, kan men met behulp van MSN Mobile de status opvragen. Deze wordt dan correctweergegeven. Het verzenden van een SMS naar deze contactpersoon lukt echter niet. Deboodschap gaat zonder foutmelding verloren. Ze wordt ook niet verstuurd naar het e-mailadres van de ontvanger. Dit is wat er anders gebeurt met een bericht dat naar een offlinecontact wordt verstuurd, die zijn GSM nummer niet bij MSN mobile geregistreerd heeft. Hetversturen van een bericht met behulp van een Jabber client naar een MSN-account waaraanvia MSN Mobile een GSM nummer verbonden is, geeft een foutmelding. Deze fouten zijnwaarschijnlijk te wijten aan het feit dat de MSN transport die op de Jabber server gebruiktwordt geen ondersteuning biedt voor het zenden en ontvangen van berichten van of naaroffline contactpersonen.

Page 63: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Deel III

Opzetten demo-opstelling

54

Page 64: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Hoofdstuk 16

Demo opstelling

In dit hoofdstuk worden de technische aspecten van de demo opstelling besproken.

16.1 Opzet

Om onze werking van onze applicatie te tonen gebruiken wij een fictieve familie. Deze bestaatuit een vader David, moeder Vickey en een dochter Kim. David gaat nog regelmatig een pintdrinken met zijn oude schoolkameraad Tim. Dochter Kim is goed bevriend met de dochtervan Tim, Daisy. Dit wordt in Figuur 16.1 schematisch weergegeven. Voor elk van deze fictieve

Figuur 16.1: De test families

personages werd een gebruikersnaam gecreeerd.

16.2 Jabber server

Jammerlijk genoeg laten de meeste firewalls het niet toe om een publieke Jabber server tegebruiken. We zijn dus genoodzaakt er een lokaal uit te voeren. We gebruiken hiervoorJive Messenger. Deze applicatie en meer informatie hierover kan gevonden worden op http://www.jivesoftware.org/messenger/. Deze Jabber server is van dezelfde makers als deSmack programmabibliotheken. Het feit dat we enkel van een lokale server kunnen gebruikmaken heeft een nadeel. Hierdoor kan het gebruik van andere IM-protocollen niet getoondworden.

55

Page 65: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 16. DEMO OPSTELLING 56

16.3 iCalendar Server

We hebben voor de demonstratie gekozen om gebruik te maken van een gratis account op depublieke server: http://www.icalx.com. We creeren een account met de volgende gegevens:

gebruikersnaam: FrigoTVwachtwoord: iamcool

Deze account staat het ons toe om gegevens op te staan in twee folders op de server. Eenpublieke folder en een prive folder. De test opstelling maakt gebruik van de prive folder,namelijk http://www.icalx.com/private/FrigoTV/. Zowel in de Constants klasse van deTV-GUI als van de IM-interface worden deze gegevens toegevoegd. Zodat beide applicatiesvan hetzelfde bestand gebruik maken.

16.4 TV-GUI

Om de situatie waarin de TV-GUI gebruikt zal worden zo realistisch mogelijk weer te gevenzijn er enkele stappen noodzakelijk. Aangezien het voor de demonstratie niet mogelijk wasom over een geschikte STB te beschikken, wordt de applicatie op een laptop uitgevoerd.De verschillende stappen die we ondernamen om met deze middelen het gebruikersgevoel tecreeren dat het gebruik van de applicatie moet oproepen, worden hieronder beschreven.

16.4.1 Uitvoer op een TV scherm

Een moderne laptop beschikt meestal over een composiet video of een S-video uitgang zodatde computerbeelden met behulp van de juiste kabels zeer eenvoudig op een TV scherm kunnenweergegeven worden.

16.4.2 De afstandsbediening

Aangezien het een hele opgave was om een interface te bedenken die op een logische enefficiente manier van het beperkte aantal toetsen op een afstandsbediening gebruik maakt,zou het ontzettend jammer zijn om de applicatie te demonstreren met behulp van een volledigPC toetsenbord. Een PC bedienen via een afstandsbediening is echter niet zo moeilijk teverwezenlijken. Er moet enkel de benodigde hardware en software geınstalleerd worden.

Hardware

Als afstandsbediening wordt de Thomson universal remote controle gebruikt. De keuze vanafstandsbediening is echter volledig vrij omdat de ontvanger van de IR1 signalen volledigprogrammeerbaar is. Natuurlijk moet deze afstandsbediening wel over de juiste toetsen be-schikken. Dit is bij een recente versie echter bijna altijd het geval.

Als hardware om de IR signalen op te vangen wordt er gebruik gemaakt van de Tira2-21IR: Infra Rood2Tira: Transmitting InfraRed Adapter

Page 66: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 16. DEMO OPSTELLING 57

(a) (b)

Figuur 16.2: (a) De Thomson afstandsbediening (b) De Tira infrarood ontvanger.

van home-electro. De Tira-2 kan eenvoudig op de USB-poort van de computer aangeslotenworden. Verder moeten er dan enkel nog de vereiste drivers geınstalleerd worden. Deze kun-nen gedownload worden van http://www.home-electro.com/tira support.php. Als eerstewordt de driver van Tira zelf geınstalleerd gevolgd via een virtuele seriele poort. Het is viadeze poort dat de communicatie met de hardware zal verlopen.

Software

De IR signalen worden op de computer door het programma Girder 3.3 verwerkt. Dit pro-gramma moet op de manier die op een Windows computer gebruikelijk is, geınstalleerd wor-den. Hierna moet de plugin van Tira (tira.dll) naar de plugins subdirectory van de Girderdirectory gekopieerd worden. Meer informatie over Girder evenals de benodigde plugins kun-nen gevonden worden op http://www.promixis.com/. Met behulp van Girder moet er een

Figuur 16.3: Girder

bestand aangemaakt worden waarin er voor elk van de gebruikte toetsen een bijhorend com-mando gedefinieerd wordt. De door de afstandsbediening uitgezonden signalen moeten in ditbestand verbonden worden met de door de TV-GUI gebruikte keyboard toetsen. Elke toetsop de afstandsbediening heeft twee staten. Afhankelijk van deze staat wordt er een verschil-lend signaal uitgezonden. Aangezien de applicatie geen gebruik maakt van deze staten wordt

Page 67: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 16. DEMO OPSTELLING 58

er aan beide gebeurtenissen hetzelfde commando verbonden. Girder ontvangt vaak bij eendruk op de knop verschillende malen dezelfde code. Omdat dit voor de TV-GUI maar eengebeurtenis zou zijn, moet in Girder een time-out ingesteld worden. Proefondervindelijk werdgeconcludeerd dat deze time-out best op 1000ms ingesteld word. Deze manier van werkenheeft als nadeel dat de applicatie enkel invoer van de afstandsbediening kan verwerken indienze in de focus heeft. Om dit probleem te omzeilen werkt de demo versie van Alcatel via eenscript dat een socket connectie opzet met de AmigoTV applicatie.

16.4.3 Overlay

De PC’s waarmee Alcatel de demo’s geeft van AmigoTV beschikken over een analoge TV in-gang waardoor het mogelijk wordt om een daadwerkelijke overlay van de AmigoTV applicatieen de binnenkomende televisie beelden te bekomen. De computer die voor deze demonstratiezal gebruikt worden beschik jammergenoeg niet over deze mogelijkheden.

16.5 Mozilla Calendar

Als voorbeeld voor de toegang tot onze gegevens vanaf een PC gebruiken we Mozilla Calendar.Om deze applicatie toegang te geven tot onze gegevens is er enkel wat configuratiewerk nood-zakelijk. De in Sectie 16.3 vermelde gegevens worden gebruikt om deze applicatie toegang tegeven tot het iCal bestand.

16.6 Jabber

Uit de grootte verscheidenheid aan jabber clients hebben we voor deze demonstratie Psigekozen. Alle informatie over Psi en het programma zelf kan gevonden worden op http://psi.affinix.com/. Een overzicht van de verschillende jabber clients kan gevonden wordenop http://www.jabber.org/.

Page 68: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Conclusie

De applicaties die in dit werk beschreven werden, scheppen een mogelijk beeld van hoe be-paalde technologieen op een nieuwe manier kunnen samenwerken. Het is duidelijk dat dezeapplicaties niet klaar zijn voor gebruik. In de secties hieronder overlopen we nog enkelenoodzakelijke uitbreidingen.

TV-GUI

In de ontwikkeling van deze applicatie is veruit het meeste tijd geınvesteerd. Doordat hetnoodzakelijk was op een heel laag niveau te programmeren is hiervan misschien weinig merk-baar. De TV-GUI biedt voorlopig enkel de mogelijkheid om de gegevens uit een iCal bestandte lezen. Hoewel er voorzieningen zijn om iCal bestanden in te lezen van zowel lokale opslag-media als vanaf een al dan niet beveiligde server kan de configuratie hiervan enkel rechtstreeksin de code gebeuren. Voor AmigoTV werkt men aan een systeem om de configuratie via eenbrowservenster op PC te kunnen doen. Dit zou eventueel uitgebreid kunnen worden voorFrigoTV. Hierbij zou er bepaalde informatie gedeeld kunnen worden.

De gegevens die bij het boodschappenlijstje en de notities horen zijn enkel weergaven vaninformatie die zich hardcoded in de programmatuur van de applicatie bevindt. De hoofdre-den dat dit gebeurd is, is dat er hiervoor geen voorzieningen zijn in het iCal bestandsformaat.Deze informatie zou in aparte bestanden op de WebDAV server kunnen opgeslagen worden.Dit werd echter niet ondersteund door de in de testopstelling gebruikte server. Deze spitstzich toe op het hosten van kalenderbestanden.

Nog een zeer belangrijk punt is het creeren van een daadwerkelijk overzicht op het begin-scherm van FrigoTV. Dit scherm zou op een voor de gebruiker zeer herkenbare manier gra-fisch de meest recente notities moeten weergeven, de afspraken van de huidige dag en hetboodschappenlijstje.

Op de verschillende schermen zou er met de pijltjestoetsen genavigeerd kunnen worden. Ditzou er voor moeten zorgen dat ook andere dagen, weken en maanden kunnen weergegevenworden. Op een dagoverzicht zou bijvoorbeeld met de rechts-links-pijltjes naar de volgende ofvorige dag gegaan kunnen worden. De boven-onder-pijltjes zorgen ervoor dat een selectiebalkover de verschillende afspraken van de dag verplaatst kan worden. Indien men op de OK-knopdrukt wordt een scherm getoond dat alle gegevens van deze afspraak toont. Dit scherm zouzelfs editeerbaar kunnen zijn. Voor de week- en maandschermen kan een gelijkaardig principeworden uitgedacht.

59

Page 69: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 16. DEMO OPSTELLING 60

Voor het invoeren van tekst zouden de nummers op de afstandsbediening kunnen zorgen.Dit zou dan gebeuren zoals het typen van een SMS op een numeriek klavier

Ook een animatie waarbij de deur van de ijskast dichtklapt over het TV-beeld behoord totde mogelijkheden.

IM-Interface

De IM-Interface toont aan dat een applicatie die het toelaat om kalendergegevens te bewerkenvia een IM-client mogelijk is. De geımplementeerde applicatie beschikt over veel te beperk-te mogelijkheden om in de praktijk daadwerkelijk bruikbaar te zijn. Er moet bijvoorbeeldnog gezorgd worden dat het mogelijk wordt om afspraken, notities en boodschappen weer teverwijderen. Er moet de mogelijkheid gecreeerd worden om afspraken op andere dagen danvandaag of morgen toe te voegen. Belangrijk hierbij is er steeds aan te denken dat er moetvoor gezorgd worden dat de bediening intuıtief kan gebeuren. Er wordt bijvoorbeeld gedachtaan invoer van nieuwe afspraken via commando’s zoals ”afspraak donderdag 12:00” om eenafspraak voor de eerstvolgende donderdag toe te voegen. Dit zou de noodzaak om de exactedatum te kennen voor de gebruiker sterk moeten beperken en zodanig het gebruikersgemakverhogen. Verder wordt er gedacht aan een mogelijkheid om de laatst gedane wijziging onge-daan te maken. Dit om de gebruiker de mogelijkheid te geven de door schrijffouten gecreeerdefouten snel te kunnen corrigeren. Ook de mogelijkheid om de toepassing automatisch de ge-bruiker te laten begroeten indien die online komt is misschien interessant. Dit bericht zoude afspraken van de dag bevatten die nog niet gepasseerd zijn. In een nog latere fase kaner gedacht worden aan een mechanisme dat ervoor zorgt dat er op het gepaste tijdstip eenalarmberichtje verstuurd wordt. Deze suggesties zijn uiteraard slechts enkele van de nagenoegoneindige mogelijkheden.

SMS

Voor dit deel werd er geen applicatie ontworpen. Onze studie van de bestaande tweerichtingsJabber-SMS-gateways leverde geen resultaat op dat bruikbaar was voor onze prototype appli-catie. Dit niet zozeer door het ontbreken van de benodigde software maar door het ontbrekenvan ondersteuning voor een Jabber-SMS-gateway door de Belgische GSM-operatoren. Indienmen deze dienst toch wil aanbieden is het waarschijnlijk het eenvoudigste om te werken viade diensten van MSN-Mobile. Het benodigde programmeerwerk blijft dan beperkt tot hetherschrijven van de MSN-Jabber-gateway. Een meer duurzame oplossing ligt waarschijnlijkin het aanbieden van een SMS-Jabber-gateway.

De meest geschikte partij om voor deze dienst te zorgen blijken de GSM-operatoren te zijn.Zo moet het technisch mogelijk zijn om een SMS dat verzonden wordt naar de GSM-nummervan iemand die zich op dat moment achter zijn PC bevind, op PC te ontvangen. Deze moge-lijkheid zou de bruikbaarheid van deze dienst aanzienlijk verbeteren.

MSN-Mobile werkt met twee verschillende nummers. Indien men via deze dienst wenst teSMS’en dient men een door MSN aangewezen nummer te gebruiken. Indien beide betrokke-

Page 70: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

HOOFDSTUK 16. DEMO OPSTELLING 61

nen een MSN-Mobile account hebben, zal er dan een SMS verstuurd worden naar de MSN-client van de ontvanger indien hij online is. In het andere geval ontvangt hij een SMS. Indiende ontvanger niet over een MSN-mobile account beschikt zal het SMS bericht in de E-mailaccount terecht komen. Het gewone SMS’en is in dit geval, geheel vrijstaand van MSN, na-tuurlijk ook nog mogelijk.

Deze twee laatste opmerkingen zijn echter van weinig belang voor de IM-Interface appli-catie. Deze zou op een server steeds actief, dus online, moeten zijn. Dit om te garanderendat de gegevens steeds bereikbaar zijn.

Page 71: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Lijst van figuren

1.1 Voice chat met AmigoTV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 (a) Weergeven welke TV programma’s je buddies bekijken. (b) Een Animatie

verzenden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Benodigdheden AmigoTV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.4 Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.1 Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2 Lumbermill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.1 iTV Middleware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.2 De 3 grafische lagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

8.1 Het AmigoTV-icoontje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268.2 Het Overzichtsscherm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278.3 Het ”Vandaag”-scherm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278.4 Het ”Morgen”-scherm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288.5 Het ”Deze Week”-scherm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288.6 Het ”Deze Maand”-scherm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298.7 Het ”Notitie”-scherm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298.8 Het ”Boodschappen”-scherm . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

9.1 ALabel en AMultilineLabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329.2 AShortLabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339.3 BoxLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349.4 GridLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

11.1 Twee versies van de CommandBarUI klasse . . . . . . . . . . . . . . . . . . . 40

15.1 Netwerk infrasructuur voor verzenden SMS. . . . . . . . . . . . . . . . . . . . 5215.2 Netwerk infrasructuur voor verzenden SMS via MSN. . . . . . . . . . . . . . . 53

16.1 De test families . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5516.2 (a) De Thomson afstandsbediening (b) De Tira infrarood ontvanger. . . . . . 5716.3 Girder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

62

Page 72: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Lijst van tabellen

3.1 Afstandsbedieningstoetsen MHP . . . . . . . . . . . . . . . . . . . . . . . . . 12

6.1 De WebDAV http extensies . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

11.1 Afstandsbedieningstoetsen TV-GUI . . . . . . . . . . . . . . . . . . . . . . . . 41

13.1 De constanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

63

Page 73: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Deel IV

Bijlagen

64

Page 74: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Bijlage A

Code Voorbeelden

A.1 Uitlijning AMultilineLabel

FontMetrics fm = g.getFontMetrics();int ruleCount = 0;int labelWidth = ((int)getSize().getWidth() - (2 * horizontalMargin));int charCounter = 0;

String remainingString = text.trim();while (fm.stringWidth(remainingString) > 0) {

String currentLine = "";while ((fm.stringWidth(currentLine) < labelWidth) &&

(remainingString.length() > currentLine.length())) {charCounter++;currentLine = remainingString.substring(0, charCounter);

}if (currentLine.startsWith(" ")) currentLine =

currentLine.substring(1, currentLine.length());

boolean lineOK = false;

if (currentLine.length() == remainingString.length()) {lineOK = true;

} else {if (currentLine.endsWith(" ")) {

lineOK = true;currentLine = currentLine.trim();

}if (remainingString.charAt(charCounter) == ’ ’) {

charCounter = charCounter + 1;lineOK = true;

}}

65

Page 75: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

BIJLAGE A. CODE VOORBEELDEN 66

if (!lineOK) {int lastSpace = currentLine.lastIndexOf(’ ’);if (((lastSpace != -1) || (lastSpace != 0))) {

currentLine = currentLine.substring(0, lastSpace);remainingString = remainingString.substring((lastSpace + 1),

remainingString.length());remainingString = remainingString.trim();

}} else {

remainingString = remainingString.substring(charCounter,remainingString.length());

}

// alignmentint width = fm.stringWidth(currentLine);int x = (size.width - width)/2;if (align == LEFT_ALIGNMENT) {

x = horizontalMargin;} else if (align == RIGHT_ALIGNMENT) {

x = (((int)getSize().getWidth()) - (width + horizontalMargin));}

g.drawString(currentLine, x, fm.getAscent() + fm.getHeight() * ruleCount);ruleCount = ruleCount + 1;charCounter = 0;

}

Page 76: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

BIJLAGE A. CODE VOORBEELDEN 67

A.2 Uitlijnen elementen in GridLayout

AImage[] horIm = new AImage[cols];AImage[] verIm = new AImage[rows];

int verticalSpace = (int)(container.getSize().getHeight() / rows);int verticalSpaceRemainder = (int)(container.getSize().getHeight() % rows);int horizontalSpace = (int)(container.getSize().getWidth() / cols);int horizontalSpaceRemainder = (int)(container.getSize().getWidth() % cols);

// draw linesif (others.isEmpty() && showLines) {

for (int i = 1; i< rows ;i++) {verIm[i] = (AImage)horizontalLine.clone();verIm[i].setSize((int)container.getSize().getWidth(), 1);verIm[i].setLocation(0, verticalSpace * i);others.add(verIm[i]);

}for (int i = 1; i < cols; i++) {

horIm[i] = (AImage)verticalLine.clone();horIm[i].setSize(1, (int)container.getSize().getHeight());horIm[i].setLocation(horizontalSpace * i, 0);others.add(horIm[i]);

}}

// draw componentsint componentNumber = others.size();if (showLines) componentNumber = componentNumber - ((rows - 1) + (cols - 1));int x = (componentNumber % cols) * horizontalSpace;int y = (componentNumber / cols) * verticalSpace;component.setLocation(x, y);// add remaing space to last component in row/colif ((componentNumber % cols) == (cols - 1)) {

horizontalSpace = horizontalSpace + horizontalSpaceRemainder - 1;}if ((componentNumber % rows) == (rows - 1)) {

verticalSpace = verticalSpace + verticalSpaceRemainder - 1;}component.setSize(horizontalSpace, verticalSpace);

Page 77: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

BIJLAGE A. CODE VOORBEELDEN 68

A.3 Invullen list in DayView

List eventList = new ArrayList();

if (2 == list.size()) {list.remove(1);

}

String secureRemoteFile = "http://www.icalx.com/private/FridgeTV/prive.ics";String username = "FridgeTV";String password = "iamcool";

//OpenLocalFile openLocalFile = new OpenLocalFile(file);//OpenRemoteFile openRemoteFile = new

OpenRemoteFile("http://www.icalx.com/public/KoenDV/Koen.ics");OpenSecureRemoteFile openSecureRemoteFile = new OpenSecureRemoteFile

(secureRemoteFile, username, password);//ICalendar iCalendar = openLocalFile.getICalendar();//ICalendar iCalendar = openRemoteFile.getICalendar();ICalendar iCalendar = openSecureRemoteFile.getICalendar();

for (Iterator i = iCalendar.getComponents().iterator(); i.hasNext();) {Component component = (Component) i.next();if (component.getName() == Component.VEVENT) {

PropertyList pl = component.getProperties();DtStart dt = (DtStart)pl.getProperty(Property.DTSTART);Calendar dtc = Calendar.getInstance();dtc.setTime(dt.getTime());if ((dtc.get(Calendar.DAY_OF_YEAR) == calendar.get(Calendar.DAY_OF_YEAR))

&& (dtc.get(Calendar.YEAR) == calendar.get(Calendar.YEAR))) {Summary summary = (Summary)pl.getProperty(Property.SUMMARY);DtStart start = (DtStart)pl.getProperty(Property.DTSTART);DtEnd end = (DtEnd)pl.getProperty(Property.DTEND);String dummy;try {

String startTime = start.getValue().substring(9, 11)+ ":" + start.getValue().substring(11, 13);

String endTime = end.getValue().substring(9, 11)+ ":" + end.getValue().substring(11, 13);

dummy = startTime + "-" + endTime + " " + summary.getValue();} catch (StringIndexOutOfBoundsException sioobe) {

dummy = "Whole day " + summary.getValue();} catch (NullPointerException npe) {

dummy = "Whole day " + summary.getValue();}eventList.add(dummy);

}

Page 78: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

BIJLAGE A. CODE VOORBEELDEN 69

}}list.add(eventList);triggerElementsChanged();

Page 79: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

BIJLAGE A. CODE VOORBEELDEN 70

A.4 Opbouw scherm in DayViewUI

super();log.debug("DayViewUI()");setLayout(new BoxLayout(BoxLayout.Y_AXIS));setBackground(Config.getInstance().getSkin().getImage(IMAGE_BACKGROUND));

title.setFont(Config.getInstance().getSkin().getFont(TEXT));title.setColor(Config.getInstance().getSkin().getColor(TEXT));title.setPreferredSize(100, 50);add(title);

AImage line = Config.getInstance().getSkin().getImage(IMAGE_LINE);line.setPreferredSize(line.getSize());add(line);

scrollbox = new AList();scrollbox.setArrows(Config.getInstance().getSkin().getImage(IMAGE_UP_ARROW),

Config.getInstance().getSkin().getImage(IMAGE_UP_ARROW_SELECTED),Config.getInstance().getSkin().getImage(IMAGE_DOWN_ARROW),Config.getInstance().getSkin().getImage(IMAGE_DOWN_ARROW_SELECTED));

add(scrollbox);

Page 80: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

BIJLAGE A. CODE VOORBEELDEN 71

A.5 Ophalen elementen uit list in DayViewUI

List stringList = new ArrayList();List labelList = new ArrayList();

scrollbox.removeAll();title.setText((String) modelItems.get(0));stringList = (List) modelItems.get(1);Iterator iterator = stringList.iterator();while(iterator.hasNext()) {

ALabel label = new ALabel((String)iterator.next());label.setFont(font);label.setColor(color);label.setPreferredSize(0, 40);label.setHorizontalMargin(30);label.setAlign(ALabel.LEFT_ALIGNMENT);labelList.add(label);

}scrollbox.add(labelList);

Page 81: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of

Bijlage B

CD-ROM

72

Page 82: Hogeschool Gent - Telenetusers.telenet.be/KoenDV/private/eindwerk/Thesis.pdf · 2005-12-08 · aan de familiekalender, maar ook aan simpele dingen zoals het boodschappenlijstje of