Laboration 2 RSS Läsare



Relevanta dokument
Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Åtkomst och användarhandledning

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Lära känna skrivbordet

Editering, Kompilering och Exekvering av Javaprogram

Lathund för att arbeta med pdf

Föreläsning 7. Grafiska användargränssnitt

Föreläsning 10. ADT:er och datastrukturer

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Datorlaboration 0, Programmering i C++ (EDAF30)

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen, EDAA20/EDA501 Programmering

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Installationsanvisning för kursens programvara på egen dator

Survey&Report steg för steg: Skapa rapport

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Kraftfullare filsökning med Houdahspot

19. Skriva ut statistik

Föreläsning 3.1: Datastrukturer, en översikt

Projektarbete 2: Interaktiv prototyp

Frågebanker, frågeuppsättningar och slumpvisa block

Programmering för språkteknologer II, HT2014. Rum

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

LITEN HANDLEDNING TILL E-TJÄNSTER I BJUVS KOMMUN. Så här ser inloggningssidan ut. Börja med att skriva ditt användarnamn och lösenord i rutorna.

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

Laboration 10 - NetBeans

Föreläsning 11. Giriga algoritmer

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h

Massutbyte av HCC. Manual för administration av massutbyte i SITHS Admin

Innehåll. Kurs i Windows

Malmö högskola 2007/2008 Teknik och samhälle

Skolan på webben. för vårdnadshavare till barn i grundskola, särskola och träningsskola - Manual till SchoolSoft

Tor Sterner-Johansson Thomas Johansson Daniel Henriksson

Objektorienterad programmering D2

Lathund, till Photo Story, för skräckslagna lärare

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Tidigt uppföljningssystem Skövde

Section Divider. Skapa nytt utskick

På sjön 2.0 Intern Guide för Android

Lathund till PsycINFO (OVID)

Tentamen, EDA501 Programmering M L TM W K V

Föreläsning 1 & 2 INTRODUKTION

Version

Tentamen i Objektorienterad programmering

KA Webb - utbildning Skapa utbildningstillfälle

Innehåll. Liber AB Version 1.0 Sida 1

Manual för version V2

HÖGSKOLAN I KALMAR Institutionen för teknik Erik Loxbo LABORATION I PLC-TEKNIK SEKVENSSTYRNING AV TRANSPORTBAND SIMATIC S7 - GRAPH

Sida 1 av 12. WSB Biodling. Manual V

Tentamen OOP

Chapter 3: Using Classes and Objects

Årsskiftesrutiner i HogiaLön Plus SQL

Det första steget blir att titta i Svensk MeSH för att se om vi kan hitta några bra engelska termer att ha med oss på sökresan.

Våga Visa kultur- och musikskolor

Lathund GUL Lärare. Allmänt. Hur du presenterar Dig själv för kursdeltagarna. Hur du lägger upp din kontaktlista

EDA095 Nätverksprogrammering

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Kursutvärdering. Samhällskunskap A

Fönsterhanterare i JavaScript PWD, Personal Web Desktop

Är du osäker på hur det ser ut i skolan idag? Lugn, det finns ett lätt sätt att få svar. Vi kallar det SIRIS.

ANVÄNDARMANUAL. handdatorer i ängs- och betesmarksinventeringen. för

Funktionsbeskrivning

Att använda Java SE JDK 6

Manual för praktiker

Gunnesboskolan, miljövänlig? Energi och Miljö tema VT-10

Föreläsning 2: Avlusning och antilustekniker

Tillgänglighetskrav på teknik Dessa krav baseras på WCAG 2.0,

Objektorienterad programmering

Objektorienterad programmering Föreläsning 15. Grafiska användargränssnitt (GUI Graphical User Interface)

Objektsamlingar i Java

SchoolSoft för elever

Lathund. Fakturering via fil i Tandvårdsfönster

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

ANVÄNDARMANUAL. handdatorer i ängs- och betesmarksinventeringen. för

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Portföljer Studentmanual

Webbteknik för ingenjörer

Dokumentnamn lathund_ping Docs. Med Ping Docs kan du skapa egna dokument i PING PONG. Dokumenten sparas automatiskt och lagras inom systemet.

Användarmeddelande (maj 2012) Ny programversion. FLEX Reseräkning. Version 12.2a

Projekt i Nätverksprogrammering. MegaNet Handledare: Pierre Nugues

Kom igång med LUPP 6.0

Kom igång med LUPP 6.1

Decipher och Datataker DT100

Användarmanual Skolrapport.se. Vårdnadshavare

1 Skapa Tabell Skapa Relationer Redigera Relationer Redigera Fält i Tabell Lägga till Poster i Tabell...

Introduktion. Markera den gröna bocken. Skriv in URL:en Klicka på knappen Platser.

TENTAMEN. Kurs: Applikationsutveckling i Java 5DV135. Ansvarig lärare: Johan Eliasson. HT12 Datum: Tid: kl

Swing. MER Java Foundation Classes (JFC) Hur lära sig? Vad är farorna. LayoutManagers. Exempel på några av komponenterna

ELEVHJÄLP. Diskussion s. 2 Åsikter s. 3. Källkritik s. 11. Fördelar och nackdelar s. 4. Samarbete s. 10. Slutsatser s. 9. Konsekvenser s.

Lagadministration Linda Emterby

Introduktion till Fronter för studenter

Guide för pdf-formulär

Swing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? LayoutManagers. Exempel på några av komponenterna

2. Komma igång Skapa grupper och elever Skriv också ut sidan 13 så att eleverna har en snabbguide till programmet.

Att skriva till och läsa från terminalfönstret

Smartair System. TS1000 Version 4.23

FÖRELÄSNING 1 ANALYS MN1 DISTANS HT06

Jag vill inte vara hemlig längre

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Transkript:

dit06omr@cs.umu.se 1 december 2008 Laboration 2 RSS Läsare Kurs: Applikationsprogrammering i Java, HT-08 HT08 5DV085 Kursansvarig: Övriga lärare & handledare: Johan Eliasson Johan Granberg Tor Sterner-Johansson Daniel Henriksson P-O Östberg

dit06omr@cs.umu.se 1 december 2008 Innehållsförteckning Problemspecifikation...1 Åtkomst och användarhandledning...1 Systembeskrivning...1 Lösningens begränsningar...2 Problem och reflektioner...2 Testkörningar...1 Bilagor...1 Källkod...1 Kurs: Applikationsprogrammering i Java, HT-08 HT08 5DV085 Kursansvarig: Övriga lärare & handledare: Johan Eliasson Johan Granberg Tor Sterner-Johansson Daniel Henriksson P-O Östberg

Problemspecifikation Laborationen går ut på att skapa en dynamisk RSS-läsare med ett valfritt grafiskt gränssnitt. Krav som ställs är bland annat att skapa denna med hjälp av god objektorienterad metodik, följa Suns javakonvention och att designa gränssnittet enligt MDI teori. RSS-läsaren ska kunna spara inställningar mellan körningar, uppdateras automatiskt och man ska kunna lägga till nya feeds. Orginalspecifikation: http://www.cs.umu.se/kurser/5dv085/ht08/labbar/lab2.html Åtkomst och användarhandledning Källkod: Kompilerad pc version: Kompilering: Exekvering (cmd): ~dit06omr/edu/apjava/lab2/src/ ~dit06omr/edu/apjava/lab2/bin/ ~dit06omr/edu/apjava/lab2/src/javac *.java ~dit06omr/edu/apjava/lab2/java -cp bin;bin/jdom.jar JeedReader 1

Systembeskrivning Programmet sparar undan alla nyheter som läses från angiven rss-kanal, den håller på så sätt reda på vilka nyheter som är lästa och olästa plus att man kan läsa gamla nyheter vid ett senare tillfälle. Kanalerna listas i ett träd till vänster i programmet. Nyheterna ligger på rad till höger ordnat efter senaste nyheten. För att markera en nyhet läst klickar man endast på nyheten så minimeras denna. NewsItem content: String link: URL read: Boolean title: String NewsItemGui NewsItem(in title: String, in content: String, in link: URL) getdescription(): String desc: String getlink(): URL jeedgui: JeedGui ml: MouseListener nyheten: NewsItem title: String NewsItemGui(in outputstring: String, in nyheten: NewsItem, in title: String, in desc: String, in jeedgui: JeedGui) getdesc(): String gettitle(): String gettitle(): String isread(): Boolean setread() setunread() doc: Document filename: String hasdesc: boolean hastitle: boolean intervall: Integer JeedFeeder jeedreader: JeedReader name: String onlinenyheter: NewsItem run: boolean url: URL xmlnyheter: NewsItem FeedGui feed: JeedFeeder jeedgui: JeedGui nyheter: NewsItemGui FeedGui(in feed: JeedFeeder, in jeedgui: JeedGui) getname(): String updatefeed() JeedFeeder(in name: String, in filename: String, in url: String, in jeedreader: JeedReader) getfilename(): String getintervall(): Integer getname(): String getnews(): LinkedList geturl(): URL loadonlinefeed() loadxmlfeed() run() savefeed() setintervall(in intervall: int) setname(in name: String) seturl(in url: URL) stop() «access» JeedGui addfeed: ActionListener cards: JPanel cl: CardLayout feedlist: JeedFeeder fgui: FeedGui ml: MouseListener reader: JeedReader selrow: int setintervall: ActionListener top: DefaultMutableTreeNode treefeeds: JTree updateall: ActionListener updateselected: ActionListener JeedGui addlastnode(in namn: String, in f: JeedFeeder) createnodes(in top: DefaultMutableTreeNode) getfeedguis(): ArrayList makemenu() maketree(): JScrollPane updatefeed() JeedReader feeds: JeedFeeder gui: JeedGui JeedReader() addfeed(in namn: String, in url: String) avoidduplicatefile(in namn: String): File loadxmlfeeds() loadxmlfile(in srcfile: String): Document loadxmlurl(in url: URL): Document main(in args: String[]) savefeeds() updatefeeds() updategui() JeedReader Huvudklassen för programmet. Läser in sparade feeds och inställningar. Instansierar gränssnittet. JeedFeeder Varje RSS-feed är en instans av denna. Klassen använder sig av en egen tråd för att uppdatera rss-feedsen kontinuerligt. Klassen ärver av Runnable. NewsItem En nyhetsartikel. 1

JeedGui Huvudklassen för gränssnittet. Ärver av JFrame. Varje FeedGui läggs till i en CardLayout för att kunna byta mellan dessa. FeedGui Varje RSS-feed har en instans av denna för sitt GUI. Ärver av JPanel. NewsItemGui Varje nyhets grafiska gränssnitt är av denna typ. Ärver av JEditorPane. Lösningens begränsningar På Mac java version 1.5 visar JEditorPane inte htmlkoden korrekt men på pc visas det korrekt. Programmet måste avslutas genom att man trycker på krysset både på PC och Mac. Man kan alltså inte använda sig av äpple+q för att avsluta programmet på Mac, då sparas inte vilka nyheter som är lästa samt tillagda feeds och inställningar. Man kan inte ta bort tillagda feeds i programmet. Programmet sparar undan alla nyheter den har fått in, det finns ingen begränsning på maxantal. Programmet kommer alltså krascha när det blir för många nyheter och man måste då manuellt ta bort de sparade feedsen. Om jag hade haft tid hade jag implementerat en funktion som skrev över de äldsta nyheterna när man uppnådde ett visst antal nyheter i varje feed. Problem och reflektioner Största problemet med labben var att skapa gränssnittet. Jag valde ett ganska svårt gränssnitt att implementera. Problem låg i att hitta vilken Layout Manager som bäst kunde sköta nyheterna så de hamnade under varandra och som hade en dynamisk höjd men fast bredd. Problem låg även i att få en rullist på panelen som håller nyheterna även att denna skulle anpassa sin höjd (eller skrollbarhet ) till innehållet. Laborationen kändes väldigt stor. Jag har suttit cirka 8 timmar per dag 5 dagar i veckan för att få till den. 2

Testkörningar Innan klick: Efter klick: Bilagor Källkod 1