De implementatie van de UIML standaard in UIML.NET Ingo Berben Eindwerk voorgedragen tot het behalen van de graad van bachelor in de informatica/ICT/kennistechnologie
Overzicht UIML Gedrag van een UI UIML.NET Implementatie Conclusie 2
UIML Op XML gebaseerd (meta taal) Generieke elementen ( ) Voorbereid op de toekomst Open standaard (OASIS) 3 UIML – Gedrag van een UI – UIML.NET – Implementatie - Conclusie
UIML (2) Structure –Opbouw UI Style –Grootte, positie,... Content –Handig bij meertalige applicaties Behavior –Gedrag at runtime 4 UIML – Gedrag van een UI – UIML.NET – Implementatie - Conclusie
5
Gedrag van een UI Wanneer moet er iets gebeuren? Wat moet er dan gebeuren?... 6 UIML – Gedrag van een UI – UIML.NET – Implementatie - Conclusie
Gedrag van een UI (2) Soorten condities: –Equal Kijkt of 2 elementen hetzelfde zijn –Event –Op Nadeel slechts 2 kinderen Voordeel willekeurig diepe nesting and, or, equal, notequal,... 7 UIML – Gedrag van een UI – UIML.NET – Implementatie - Conclusie
Gedrag van een UI (3)... Succesvol geregistreerd 8
UIML.NET Open source UIML renderer voor het.NET platform Renderer ipv compiler –Moeilijker, maar –Vluggere prototypes Backends: SWF, C-SWF, GTK# Enkel wordt ondersteund 9 UIML – Gedrag van een UI – UIML.NET – Implementatie - Conclusie
Implementatie Events opvangen Probleem: –Hoe vangen we wijzigingen van een property op? Een property stuurt geen event uit bij wijziging 10 UIML – Gedrag van een UI – UIML.NET – Implementatie - Conclusie
Implementatie (2) Mogelijke oplossingen: –Spying Dynamisch een functie schrijven om events te overschrijven Hierdoor kunnen we zelf argumenten bepalen (SpyEventArgs ) Weinig overhead Kan gebruikt worden om het wijzigen van een property te overschrijven ! Niet ondersteund op het.NET CF IlGenerator 11 UIML – Gedrag van een UI – UIML.NET – Implementatie - Conclusie
Implementatie (3) public void Execute (Object sender, EventArgs e) {... } public void Execute (Object sender, EventArgs e, string eventName, string partName) { Execute(sender, e, “Clicked”, “part1”); } 12
Implementatie (4) –Polling Om de x milliseconden Wijzigingen worden altijd gedetecteerd ! Veel overhead door continue checking 13 UIML – Gedrag van een UI – UIML.NET – Implementatie - Conclusie
Implementatie (5) Oplossing: Condition Manager –Één object handelt alles af –Events worden hier opgevangen –Condities worden nagekeken 14 UIML – Gedrag van een UI – UIML.NET – Implementatie - Conclusie
Implementatie (6) Registreer alle events van een geïntereseerde property Wanneer een event plaatsvindt, ga alle condities af Nadeel: overhead Voordeel: UI blijft idle wanneer gebruiker idle is 1/3 van de code is uit de backends verdwenen 15 UIML – Gedrag van een UI – UIML.NET – Implementatie - Conclusie
Screencast 16
Conclusie Verdere uitbreidingen – –Kijken naar de namen van events en enkel die registreren die van toepassing zijn reduceert overhead Registreren op alle events: –Beter dan naïef te pollen –Gebruiker idle UI idle Weer een stap dichter bij de UIML standaard Vragen? 17 UIML – Gedrag van een UI – UIML.NET – Implementatie - Conclusie