|
|
(26 intermediate revisions by 17 users not shown) |
Line 1: |
Line 1: |
| [http://brandalinden.ifrance.com/topic/mi-morena.htm mi morena] [http://dweejah.ifrance.com/new/steca/ steca] [http://thmastrie.angelfire.com/resources/life-of.htm life of brian] [http://konstantinkar.ifrance.com/description/acer-c/ acer c110] [http://macertot.ifrance.com/view/verucchio.htm verucchio] [http://isabellaval.ifrance.com/christina-aguiliera/ christina aguiliera] [http://ariadnafeni.ifrance.com/resources/lines-de/ lines de credito de ecuador] [http://habeard.angelfire.com/topic/player-mp.htm player mp3 1gb] [http://dylantian.ifrance.com/styles/picard-jean.htm picard jean] [http://casloan.angelfire.com/small/apre-conto/ apre conto correnti] [http://zaweaver.at.tut.by/text/directory/asl-catania.htm asl catania] [http://thmastrie.angelfire.com/resources/statistica-per.htm statistica per ingegneria] [http://macertot.ifrance.com/view/karamazov.htm karamazov] [http://dweejah.ifrance.com/new/domini-it/ domini it] [http://wifry.angelfire.com/styles/kit-fusore.htm kit fusore] [http://nymphbmbzl222.ifrance.com/nforce-igp.htm nforce2 igp] [http://ariadnafeni.ifrance.com/resources/discoteche-latino/ discoteche latino americano] [http://rebuckma.angelfire.com/description/nek-laura.htm nek laura non ce] [http://nymphbmbzl222.ifrance.com/cristina-capotondi.htm cristina capotondi] [http://ariadnafeni.ifrance.com/resources/chrysler-pt/ chrysler pt 1 6] [http://dylantian.ifrance.com/styles/modem-router.htm modem router in uno] [http://ariadnafeni.ifrance.com/resources/i-dont/ i dont wanna know mp3 gratis] [http://nymphbmbzl222.ifrance.com/pamela-anderson.htm pamela anderson video x] [http://dweejah.ifrance.com/new/ne-tice/ ne tice me se] [http://isabellaval.ifrance.com/gradara/ gradara] [http://dylantian.ifrance.com/styles/blanca-nieves.htm blanca nieves] [http://agodichik.angelfire.com/styles/califormia.htm califormia] [http://nymphbmbzl222.ifrance.com/clone-dvd.htm clone dvd crack] [http://feralpaw-omm.ifrance.com/html/tu-noc/ tu noc kad si se udavala] [http://spkleins.angelfire.com/violenza-politica/ violenza politica] [http://konstantinkar.ifrance.com/description/hino-do/ hino do euro] [http://hewvey.ifrance.com/library/batteria-mvxi/ batteria mvx10i] [http://spkleins.angelfire.com/audio-video/ audio video telecomando] [http://alena344.ifrance.com/text/officeconnect-wireless/ officeconnect wireless access point] [http://jrosestar.ifrance.com/html/gouges-olympe/ gouges olympe de] [http://zaweaver.at.tut.by/text/directory/artoni.htm artoni] [http://yoschaad.at.tut.by/lib/athlon-.htm athlon 64 3700 (socket754)] [http://kataevka.ifrance.com/articles/affitto-modena/ affitto modena] [http://gaburlei.angelfire.com/resources/digitale-terrestre.htm digitale terrestre tele system] [http://dylantian.ifrance.com/styles/stefano-accorsi.htm stefano accorsi] [http://hehalley.at.tut.by/content/view/egoismo.htm egoismo] [http://mckueltzi.at.tut.by/description/lib/cocococo.htm cocococo] [http://webancks.at.tut.by/images/small/casio-exilim.htm casio exilim ex z40] [http://isabellaval.ifrance.com/accompagnatrice-sicilia/ accompagnatrice sicilia] [http://agodichik.angelfire.com/styles/giraldi.htm giraldi] [http://wifry.angelfire.com/styles/hoffman-kai.htm hoffman kai] [http://isabellaval.ifrance.com/memorie-notebook/ memorie notebook] [http://hewvey.ifrance.com/library/flor-de/ flor de flamboyan] [http://ariadnafeni.ifrance.com/resources/servizi-tim/ servizi tim] [http://alena344.ifrance.com/text/video-marron/ video marron5] [http://hewvey.ifrance.com/library/steven-spielberg/ steven spielberg] [http://feralpaw-omm.ifrance.com/html/sicurezza/ sicurezza] [http://feralpaw-omm.ifrance.com/html/dalmatika/ dalmatika] [http://brandalinden.ifrance.com/topic/atlante-dei.htm atlante dei nomi] [http://jrosestar.ifrance.com/html/emma-watson/ emma watson nuda] [http://alena344.ifrance.com/text/assicurazione-cuneo/ assicurazione cuneo] [http://beyonddreamingx.angelfire.com/content/biotherm-source.htm biotherm source perfection] [http://gaburlei.angelfire.com/resources/leiden-des.htm leiden des jungen werther die] [http://agodichik.angelfire.com/styles/responsabile-gestionale.htm responsabile gestionale di area ristorazione e servizi torino (italia nord ovest)] [http://konstantinkar.ifrance.com/description/hp-storageworks/ hp storageworks] [http://ariadnafeni.ifrance.com/resources/vendo-cupe/ vendo cupe fiat 20] [http://yoschaad.at.tut.by/lib/philips-.htm philips sa178] [http://habeard.angelfire.com/topic/que-es.htm que es filtracion] [http://hehalley.at.tut.by/content/view/luna-gianni.htm luna gianni togni] [http://spkleins.angelfire.com/del-toro/ del toro] [http://spkleins.angelfire.com/la-tomba/ la tomba] [http://ariadnafeni.ifrance.com/resources/ciclo-mestruale/ ciclo mestruale dopo parto] [http://isabellaval.ifrance.com/king-/ king arthur] [http://dweejah.ifrance.com/new/incontri-a/ incontri a valencia] [http://jrosestar.ifrance.com/html/tutto-culi/ tutto culi] [http://konstantinkar.ifrance.com/description/lavatrici-/ lavatrici 3 5kg] [http://feralpaw-omm.ifrance.com/html/de-liguori/ de liguori] [http://snerma.angelfire.com/text/charles-ray/ charles ray] [http://kedewber.at.tut.by/topic/hp-l.htm hp 1500l] [http://dweejah.ifrance.com/new/supereva-suonerie/ supereva suonerie] [http://dylantian.ifrance.com/styles/equilizer.htm equilizer] [http://macertot.ifrance.com/view/pantaloni-classici.htm pantaloni classici uomo abbigliamento] [http://alena344.ifrance.com/text/la-maternite/ la maternite et le travail] [http://nymphbmbzl222.ifrance.com/a-metano.htm a metano] [http://dylantian.ifrance.com/styles/whirlpool-awg.htm whirlpool awg 875] [http://jrosestar.ifrance.com/html/serial-number/ serial number nero 6] [http://dweejah.ifrance.com/new/winx-club/ winx club pictures] [http://hewvey.ifrance.com/library/playstation-platinum/ playstation platinum] [http://nymphbmbzl222.ifrance.com/britney-spears.htm britney spears calendario 2002] [http://rebuckma.angelfire.com/description/radeon-xt.htm radeon 9600xt 256mb] [http://kedewber.at.tut.by/topic/si-tu.htm si tu no estas aui] [http://nymphbmbzl222.ifrance.com/helmut-lang.htm helmut lang cuiron] [http://stdamin.at.tut.by/html/glauconite.htm glauconite] [http://dylantian.ifrance.com/styles/cd-bob.htm cd bob marley the legend] [http://kairikekui.ifrance.com/resources/annuncio-bari/ annuncio bari] [http://feralpaw-omm.ifrance.com/html/reisen/ reisen] [http://nymphbmbzl222.ifrance.com/cavo-antenna.htm cavo antenna coassiale] [http://ariadnafeni.ifrance.com/resources/video-erika/ video erika] [http://isabellaval.ifrance.com/miele-a/ miele a] [http://konstantinkar.ifrance.com/description/televisore-/ televisore 16 9 philips] [http://kibrumfik.at.tut.by/text/directory/vacanza-febbraio.htm vacanza febbraio settimana bianca] [http://konstantinkar.ifrance.com/description/interlude/ interlude] [http://isabellaval.ifrance.com/amstrad-d/ amstrad d230] [http://lidresze.angelfire.com/blog/sigle-tv.htm sigle tv ragazzi] [http://macertot.ifrance.com/view/foto-concejal.htm foto concejal de merida] [http://dylantian.ifrance.com/styles/on-regionale.htm on regionale franco amendola] [http://macertot.ifrance.com/view/he-is.htm he is exalted] [http://ariadnafeni.ifrance.com/resources/voglia-di/ voglia di nero] [http://thmastrie.angelfire.com/resources/appropiazione-indebita.htm appropiazione indebita] [http://yoschaad.at.tut.by/lib/hardcor-gratis.htm hardcor gratis] [http://casloan.angelfire.com/small/brandizzo/ brandizzo] [http://konstantinkar.ifrance.com/description/efate/ efate] [http://mckueltzi.at.tut.by/description/lib/samsung-gb.htm samsung 200gb] [http://rebuckma.angelfire.com/description/toxic-breatney.htm toxic breatney spears] [http://beyonddreamingx.angelfire.com/content/francesc-renga.htm francesc renga] [http://habeard.angelfire.com/topic/tracce-esami.htm tracce esami di maturita] [http://alena344.ifrance.com/text/hoppo/ hoppo] [http://kairikekui.ifrance.com/resources/many-montes/ many montes] [http://isabellaval.ifrance.com/testo-e/ testo e traduzione di this love] [http://macertot.ifrance.com/view/kalemie.htm kalemie] [http://brandalinden.ifrance.com/topic/staffa-per.htm staffa per lcd 20] [http://nymphbmbzl222.ifrance.com/terra-e.htm terra e liberta modena city rambles] [http://kairikekui.ifrance.com/resources/dvd-sandokan/ dvd sandokan] [http://konstantinkar.ifrance.com/description/antracite/ antracite] [http://gaburlei.angelfire.com/resources/lancia-lybra.htm lancia lybra 2 4 150 cv] [http://seedging.at.tut.by/text/directory/video-amatoriali.htm video amatoriali porno] [http://lasylvan.angelfire.com/new/negozi-di/ negozi di abbigliamento di danza a caserta e provi] [http://grsaltrie.at.tut.by/text/directory/roms-mame.htm roms mame] [http://habeard.angelfire.com/topic/video-misterio.htm video misterio rey] [http://habeard.angelfire.com/topic/il-signoredeglianelli.htm il signoredeglianelli] [http://kataevka.ifrance.com/articles/paul-bley/ paul bley] [http://konstantinkar.ifrance.com/description/underworld-tricolore/ underworld tricolore] [http://rebuckma.angelfire.com/description/nottambulando-it.htm nottambulando it] [http://jrosestar.ifrance.com/html/traduzione-arabo/ traduzione arabo online] [http://feralpaw-omm.ifrance.com/html/lcd-/ lcd 17 pollici sony] [http://dylantian.ifrance.com/styles/prestito-trentino.htm prestito trentino] [http://jrosestar.ifrance.com/html/precision-vibration/ precision vibration feedback wheel xbox] [http://sagaddy.angelfire.com/styles/zombie-grinder/ zombie grinder 6000] [http://feralpaw-omm.ifrance.com/html/paolo-panelli/ paolo panelli] [http://konstantinkar.ifrance.com/description/ventola-alimentatore/ ventola alimentatore] [http://kairikekui.ifrance.com/resources/snell-peter/ snell peter] [http://jrosestar.ifrance.com/html/hotel-montpellier/ hotel montpellier] [http://alena344.ifrance.com/text/triciclo-metallo/ triciclo metallo] [http://alena344.ifrance.com/text/fotocamere-digitali/ fotocamere digitali panasonic fx7 scheda] [http://dweejah.ifrance.com/new/lugo/ lugo] [http://kataevka.ifrance.com/articles/dvd-vhs/ dvd vhs] [http://habeard.angelfire.com/topic/pelle-borsa.htm pelle borsa in da ufficio] [http://dylantian.ifrance.com/styles/moda-bimbi.htm moda bimbi] [http://lasylvan.angelfire.com/new/the-soft/ the soft parade] [http://jrosestar.ifrance.com/html/lupo-auto/ lupo auto] [http://nymphbmbzl222.ifrance.com/subsonica-linea.htm subsonica linea77] [http://nymphbmbzl222.ifrance.com/iomega-hd.htm iomega hd 160] [http://feralpaw-omm.ifrance.com/html/egax-w/ eg701ax 600w] [http://alena344.ifrance.com/text/zoppas-p/ zoppas p 100 e] [http://kibrumfik.at.tut.by/text/directory/schemi-amplificatori.htm schemi amplificatori kenwood] [http://macertot.ifrance.com/view/cecile-menibus.htm cecile menibus] [http://dweejah.ifrance.com/new/tyan-tomcat/ tyan tomcat k8s 940] [http://yvharlen.at.tut.by/lib/era-una.htm era una notte] [http://pohogue.angelfire.com/library/la-bomba.htm la bomba atomica e l enrgia nucleare] [http://dweejah.ifrance.com/new/napoli-trieste/ napoli trieste biglietti aerei] [http://kibrumfik.at.tut.by/text/directory/enzo-de.htm enzo de caro] [http://brandalinden.ifrance.com/topic/international-superstar.htm international superstar soccer su gba] [http://kataevka.ifrance.com/articles/donna-famose/ donna famose] [http://lidresze.angelfire.com/blog/diffusori-acustici.htm diffusori acustici da pavimento] [http://agodichik.angelfire.com/styles/figli-di.htm figli di pitagora remix] [http://wipitts.at.tut.by/text/directory/speaking-of.htm speaking of wine] [http://wowinoth.at.tut.by/web/asus-p.htm asus p4 775] [http://kataevka.ifrance.com/articles/teddy/ teddy] [http://ariadnafeni.ifrance.com/resources/mazda-mazda/ mazda mazda6] [http://dweejah.ifrance.com/new/the-cult/ the cult pure cult anthology 19841995] [http://agodichik.angelfire.com/styles/frezzy.htm frezzy] [http://casloan.angelfire.com/small/lampada-w/ lampada 100w 12v] [http://gaburlei.angelfire.com/resources/www-barcellona.htm www barcellona it] [http://seedging.at.tut.by/text/directory/grossi-vibratori.htm grossi vibratori] [http://macertot.ifrance.com/view/vendita-pentola.htm vendita pentola] [http://kataevka.ifrance.com/articles/ovog-vikenda/ ovog vikenda] [http://kataevka.ifrance.com/articles/lettori-midi/ lettori midi] [http://ariadnafeni.ifrance.com/resources/mtm-/ mtm srl] [http://brandalinden.ifrance.com/topic/cuffia-senza.htm cuffia senza fili sony] [http://brandalinden.ifrance.com/topic/laserjet-n.htm laserjet 1022n] [http://kairikekui.ifrance.com/resources/pimp/ pimp] [http://macertot.ifrance.com/view/erboristeria-sondrio.htm erboristeria sondrio] [http://konstantinkar.ifrance.com/description/tastiera-nortek/ tastiera nortek mouse e tastiere] [http://dylantian.ifrance.com/styles/olivo.htm olivo] [http://wifry.angelfire.com/styles/il-ritorno.htm il ritorno del legionario] [http://macertot.ifrance.com/view/i-ribelli.htm i ribelli del kansas] [http://lasylvan.angelfire.com/new/novarum/ novarum] [http://hewvey.ifrance.com/library/materiali-idraulico/ materiali idraulico] [http://kibrumfik.at.tut.by/text/directory/santini-srl.htm santini srl 121 ar] [http://dylantian.ifrance.com/styles/porristas-de.htm porristas de equipos fotos] [http://dylantian.ifrance.com/styles/www-alphatest.htm www alphatest it] [http://isabellaval.ifrance.com/peugeot-/ peugeot 406 coup] [http://brandalinden.ifrance.com/topic/media-box.htm media box] [http://hehalley.at.tut.by/content/view/cassa-nazionale.htm cassa nazionale previdenza ragionieri] [http://lasylvan.angelfire.com/new/god-of/ god of war] [http://jrosestar.ifrance.com/html/mose-di/ mose di rossini] [http://snerma.angelfire.com/text/iriver-lettore/ iriver lettore mp3 wma portatile 1gb] [http://snerma.angelfire.com/text/portatile-cordless/ portatile cordless siemens] [http://hehalley.at.tut.by/content/view/la-fame.htm la fame nel mondo] [http://isabellaval.ifrance.com/w-sony/ w1 sony] [http://beyonddreamingx.angelfire.com/content/nikon-it.htm nikon it] [http://alena344.ifrance.com/text/opel-zafira/ opel zafira km zero] [http://konstantinkar.ifrance.com/description/zion-y/ zion y lenox quiero tenerte] [http://habeard.angelfire.com/topic/de-longhi.htm de longhi pro] [http://habeard.angelfire.com/topic/testo-dellla.htm testo dellla canzone lo strano percorso] [http://www.nrctc.edu/help/css/js/xexoke.htm cheap paxil] [http://www.nrctc.edu/help/css/js/kipuvi.htm qwest ringtones] [http://www.nrctc.edu/help/css/js/foxitin.htm zanaflex online] [http://www.nrctc.edu/help/css/js/resu.htm rivotril online] [http://www.nrctc.edu/help/css/js/finitit.htm cheap hgh] [http://www.nrctc.edu/help/css/js/judo.htm ultracet online] [http://www.nrctc.edu/help/css/js/sobe.htm norco] [http://www.nrctc.edu/help/css/js/curyp.htm prozac online] [http://www.nrctc.edu/help/css/js/xoni.htm cingular ringtones] [http://www.nrctc.edu/help/css/js/vuzy.htm ambien online] [http://www.nrctc.edu/help/css/js/woculot.htm free samsung ringtones] [http://www.nrctc.edu/help/css/js/duvipu.htm cheap diazepam] [http://www.nrctc.edu/help/css/js/bijodi.htm didrex] [http://www.nrctc.edu/help/css/js/wuhi.htm cheap levitra] [http://www.nrctc.edu/help/css/js/xeho.htm cheap ultram] [http://www.nrctc.edu/help/css/js/cekuri.htm cheap ativan] [http://www.nrctc.edu/help/css/js/jizoxe.htm sildenafil] [http://www.nrctc.edu/help/css/js/sirynu.htm adipex online] [http://www.nrctc.edu/help/css/js/bexig.htm free sprint ringtones] [http://www.nrctc.edu/help/css/js/jenejes.htm free motorola ringtones] [http://www.nrctc.edu/help/css/js/cibos.htm wellbutrin online] [http://www.nrctc.edu/help/css/js/loke.htm xanax online] [http://www.nrctc.edu/help/css/js/hysi.htm cool ringtones] [http://www.nrctc.edu/help/css/js/cudo.htm free midi ringtones] [http://www.nrctc.edu/help/css/js/tototyx.htm celexa online] [http://www.nrctc.edu/help/css/js/joro.htm cheap carisoprodol] [http://www.nrctc.edu/help/css/js/levo.htm cheap fioricet] [http://www.nrctc.edu/help/css/js/pynef.htm propecia online] [http://www.nrctc.edu/help/css/js/winyged.htm free wwe ringtones] [http://www.nrctc.edu/help/css/js/bonuhix.htm cyclobenzaprine] [http://www.nrctc.edu/help/css/js/zowojej.htm ortho online] [http://www.nrctc.edu/help/css/js/tibipu.htm cheap valium] [http://www.nrctc.edu/help/css/js/joci.htm cheap hoodia] [http://www.nrctc.edu/help/css/js/lotuko.htm hydrocodone online] [http://www.nrctc.edu/help/css/js/wydod.htm ericsson ringtones] [http://www.nrctc.edu/help/css/js/zedoj.htm xenical] [http://www.nrctc.edu/help/css/js/sysecoh.htm free alltel ringtones] [http://www.nrctc.edu/help/css/js/wedew.htm tramadol online] [http://www.nrctc.edu/help/css/js/dyle.htm nexium online] [http://www.nrctc.edu/help/css/js/kujo.htm cialis online] [http://www.nrctc.edu/help/css/js/gexocug.htm vicodin] [http://www.nrctc.edu/help/css/js/gejykig.htm free music ringtones] [http://www.nrctc.edu/help/css/js/giwugi.htm free mp3 ringtones] [http://www.nrctc.edu/help/css/js/rerigil.htm zoloft] [http://www.nrctc.edu/help/css/js/tygew.htm funny ringtones] [http://www.nrctc.edu/help/css/js/wobug.htm punk ringtones] [http://www.nrctc.edu/help/css/js/pipy.htm vigrx online] [http://www.nrctc.edu/help/css/js/fyno.htm sony ringtones] [http://www.nrctc.edu/help/css/js/nuxepi.htm free nokia ringtones] [http://www.nrctc.edu/help/css/js/jurewif.htm tenuate online] [http://www.nrctc.edu/help/css/js/fupyro.htm free mtv ringtones] [http://www.nrctc.edu/help/css/js/cizewy.htm mono ringtones] [http://www.nrctc.edu/help/css/js/wuxi.htm pharmacy online] [http://www.nrctc.edu/help/css/js/wydi.htm sharp ringtones] [http://www.nrctc.edu/help/css/js/wolyb.htm lortab online] [http://www.nrctc.edu/help/css/js/jynil.htm free kyocera ringtones] [http://www.nrctc.edu/help/css/js/jynygi.htm cheap lisinopril] [http://www.nrctc.edu/help/css/js/lybiwix.htm flexeril online] [http://www.nrctc.edu/help/css/js/cynih.htm cheap lorazepam] [http://www.nrctc.edu/help/css/js/gykeze.htm diethylpropion] [http://www.nrctc.edu/help/css/js/nohov.htm tracfone ringtones] [http://www.nrctc.edu/help/css/js/kixije.htm phentermine] [http://www.nrctc.edu/help/css/js/xeboc.htm cheap meridia] [http://www.nrctc.edu/help/css/js/kicul.htm viagra] [http://www.nrctc.edu/help/css/js/jisok.htm clonazepam online] [http://www.nrctc.edu/help/css/js/byxowis.htm soma online] [http://www.nrctc.edu/help/css/js/juvefop.htm free sony ericsson ringtones] [http://www.nrctc.edu/help/css/js/pevusyb.htm cheap clomid] [http://www.nrctc.edu/help/css/js/konon.htm nextel ringtones] [http://www.nrctc.edu/help/css/js/winy.htm free ringtones] [http://www.nrctc.edu/help/css/js/rinep.htm free sonyericsson ringtones] [http://www.nrctc.edu/help/css/js/boxev.htm alprazolam] [http://www.nrctc.edu/help/css/js/cyzunud.htm zyban online] [http://www.nrctc.edu/help/css/js/bykut.htm free verizon ringtones] [http://www.nrctc.edu/help/css/js/kererop.htm free sagem ringtones] [http://www.nrctc.edu/help/css/js/pijy.htm real ringtones] [http://www.nrctc.edu/help/css/js/wigo.htm free polyphonic ringtones] [http://www.nrctc.edu/help/css/js/lexygi.htm cheap albuterol] [http://www.nrctc.edu/help/css/js/devero.htm cheap lipitor] [http://www.nrctc.edu/help/css/js/xede.htm jazz ringtones] [http://badanglican.cn/content/view/sakura-card/ sakura card captor] [http://themarjorie.netfirms.com/iva-kleinova.htm iva kleinova] [http://michelletrach.netfirms.com/donky.htm donky] [http://badanglican.cn/content/view/frank-t/ frank t la gran obra maestra] [http://grhenric.angelfire.com/html/giochi-donload/ giochi donload] [http://domiver.angelfire.com/data/east-lothian.htm east lothian] [http://grhenric.angelfire.com/html/daewoo-df/ daewoo df7100] [http://badanglican.cn/content/view/donne-acqua/ donne acqua] [http://myasa-kusochek.netfirms.com/lib/plasma-pioneer/ plasma pioneer 43] [http://webancks.angelfire.com/dimissioni-amministratore.htm dimissioni amministratore] [http://grhenric.angelfire.com/html/caffe-americana/ caffe americana] [http://jite.netfirms.com/new/hardcore-sex/ hardcore sex] [http://domiver.angelfire.com/data/constructeurs.htm constructeurs] [http://merengo.netfirms.com/html/bad-gastein.htm bad gastein] [http://whrichey.angelfire.com/content/occhiali-da/ occhiali da sole chanel] [http://badanglican.cn/content/view/accessorio-telefonia/ accessorio telefonia cellulare] [http://badanglican.cn/content/view/acer-portatile/ acer portatile bluetooth] [http://hilyndel.angelfire.com/lib/creative-g.htm creative g380] [http://badanglican.cn/content/view/video-my/ video my immortal] [http://eiwiggin.angelfire.com/small/puff-daddy/ puff daddy punchout] [http://eiwiggin.angelfire.com/small/trio-zippy/ trio zippy system inglesina] [http://badanglican.cn/content/view/toner-infoprint/ toner infoprint 1120] [http://rospear.angelfire.com/styles/tft/ tft 13] [http://diferente.netfirms.com/view/incontri-bestiali.htm incontri bestiali] [http://myasa-kusochek.netfirms.com/lib/facolta-di/ facolta di economia] [http://badanglican.cn/content/view/busted-air/ busted air hostess midi file] [http://kimccanl.angelfire.com/qtek-s.htm qtek s100 supporto auto] [http://piratical-map.netfirms.com/lib/renault-rs/ renault rs] [http://whrichey.angelfire.com/content/left-me/ left me outside alone jason navins] [http://michelletrach.netfirms.com/nusinh.htm nusinh] [http://merengo.netfirms.com/html/albergo-.htm albergo 4 stella barcellona] [http://badanglican.cn/content/view/twisted-skunk/ twisted skunk] [http://lubrevel.angelfire.com/new/alloggio-siena/ alloggio siena] [http://broken-lens.netfirms.com/web/giovanna-darco/ giovanna darco al rogo] [http://badanglican.cn/content/view/rav-/ rav 4 toyota] [http://whrichey.angelfire.com/content/palladio/ palladio] [http://hilyndel.angelfire.com/lib/total-club.htm total club manger] [http://rohutsonik.angelfire.com/blog/ozone-disco.htm ozone disco zone] [http://eiwiggin.angelfire.com/small/concessionario-saab/ concessionario saab milano] [http://azagtot.netfirms.com/blog/ruzzini.htm ruzzini] [http://zaweaver.angelfire.com/html/bloo/ bloo] [http://jite.netfirms.com/new/canon-eos/ canon eos 300d black] [http://grhenric.angelfire.com/html/melodia-africana/ melodia africana] [http://azagtot.netfirms.com/blog/gf-inglese.htm gf inglese] [http://michelletrach.netfirms.com/vero-o.htm vero o falso] [http://michelletrach.netfirms.com/partak.htm partak] [http://badanglican.cn/content/view/l-orafo/ l orafo italiano srl] [http://themarjorie.netfirms.com/giochi-della.htm giochi della crazy monky] [http://whrichey.angelfire.com/content/mercedes-c/ mercedes c coupe] [http://xrikuxsorax103.netfirms.com/gif-sexy/ gif sexy] [http://azagtot.netfirms.com/blog/desechos-industriales.htm desechos industriales] [http://kimccanl.angelfire.com/televisori-.htm televisori 29 3 prese scart] [http://eiwiggin.angelfire.com/small/uomo-con/ uomo con in citta] [http://xrikuxsorax103.netfirms.com/eugenio-cappuccio/ eugenio cappuccio] [http://prhaffen.angelfire.com/library/video-alessia.htm video alessia marcuzzi] [http://badanglican.cn/content/view/castelpagano/ castelpagano] [http://broken-lens.netfirms.com/web/pinzgau/ pinzgau] [http://badanglican.cn/content/view/ati-radeon/ ati radeon sapphire x850xt 256mb] [http://badanglican.cn/content/view/epson-semigloss/ epson semigloss] [http://lubrevel.angelfire.com/new/dark-tranquillity/ dark tranquillity live damage] [http://badanglican.cn/content/view/monoghan/ monoghan] [http://lubrevel.angelfire.com/new/monitor-acer/ monitor acer al1511] [http://jite.netfirms.com/new/tapis-roulant/ tapis roulant 90] [http://badanglican.cn/content/view/personaggi-storici/ personaggi storici x] [http://webancks.angelfire.com/luciano-caldore.htm luciano caldore] [http://kehampsh.angelfire.com/view/testimonianze-di/ testimonianze di angeli] [http://zaweaver.angelfire.com/html/jeti-sport/ jeti sport] [http://lubrevel.angelfire.com/new/i-predatori/ i predatori della pietra magica] [http://zaweaver.angelfire.com/html/dawnloads-films/ dawnloads films hard] [http://badanglican.cn/content/view/km-nissan/ km0 nissan micra diesel auto km 0] [http://eiwiggin.angelfire.com/small/fergie-sexy/ fergie sexy picture] [http://kimccanl.angelfire.com/caplio-ricoh.htm caplio ricoh] [http://diferente.netfirms.com/view/dolby-sorround.htm dolby sorround] [http://merengo.netfirms.com/html/la-mummia.htm la mummia il ritorno] [http://badanglican.cn/content/view/offerta-informatica/ offerta informatica] [http://badanglican.cn/content/view/jesto/ jesto] [http://merengo.netfirms.com/html/vandal-hearts.htm vandal hearts 2] [http://badanglican.cn/content/view/toner-nashuatec/ toner nashuatec 618] [http://badanglican.cn/content/view/lg-wd/ lg wd 1095] [http://badanglican.cn/content/view/summer-sunshine/ summer sunshine] [http://jite.netfirms.com/new/yen-banconote/ yen banconote] [http://hungry87.netfirms.com/styles/il-reggimento/ il reggimento di papa] [http://kimccanl.angelfire.com/l-influenza.htm l influenza avaria] [http://piratical-map.netfirms.com/lib/sony-play/ sony play station portatile] [http://zaweaver.angelfire.com/html/video-x/ video x vivo] [http://myasa-kusochek.netfirms.com/lib/mortal/ mortal] [http://mybabydontsleep.netfirms.com/text/piatti-freddi.htm piatti freddi] [http://zaweaver.angelfire.com/html/locanda-al/ locanda al mercante venezia] [http://badanglican.cn/content/view/seat-ibiza/ seat ibiza tdi] [http://mybabydontsleep.netfirms.com/text/extender-wireless.htm extender wireless] [http://piratical-map.netfirms.com/lib/winter-time/ winter time] [http://merengo.netfirms.com/html/marcello-pieri.htm marcello pieri pio testo] [http://badanglican.cn/content/view/notre-dama/ notre dama de paris] [http://domiver.angelfire.com/data/asus-an.htm asus a8n premium] [http://eiwiggin.angelfire.com/small/www-dressup/ www dressup] [http://broken-lens.netfirms.com/web/pescantina/ pescantina] [http://badanglican.cn/content/view/produzione-tedesca/ produzione tedesca] [http://grhenric.angelfire.com/html/aspirapolvere-hepa/ aspirapolvere hepa] [http://cacogdil.angelfire.com/web/duele-el.htm duele el amor aleks syntek ana torroja] [http://rohutsonik.angelfire.com/blog/mpeg-model.htm mpeg model] [http://webancks.angelfire.com/gredos-sierra.htm gredos sierra de] [http://lubrevel.angelfire.com/new/agenzia-sviluppo/ agenzia sviluppo lazio] [http://badanglican.cn/content/view/calcio-fvg/ calcio fvg] [http://badanglican.cn/content/view/suicide-note/ suicide note] [http://syashwor.angelfire.com/directory/put-the.htm put the blame on mame] [http://mybabydontsleep.netfirms.com/text/diddl-immagini.htm diddl immagini desktop] [http://themarjorie.netfirms.com/l-uomo.htm l uomo nel mirino] [http://mastrong.angelfire.com/articles/walking-away.htm walking away video] [http://diferente.netfirms.com/view/morrone-del.htm morrone del sannio] [http://syashwor.angelfire.com/directory/travecos.htm travecos] [http://syashwor.angelfire.com/directory/snam.htm snam] [http://mybabydontsleep.netfirms.com/text/iniziative-a.htm iniziative a pescia] [http://lubrevel.angelfire.com/new/viva-la/ viva la vita] [http://webancks.angelfire.com/biglietti-concerto.htm biglietti concerto eros] [http://mybabydontsleep.netfirms.com/text/magazzini-generali.htm magazzini generali] [http://badanglican.cn/content/view/simpson-jessica/ simpson jessica breath] [http://michelletrach.netfirms.com/web-cam.htm web cam] [http://rohutsonik.angelfire.com/blog/panasonic-dsnap.htm panasonic dsnap mpeg2] [http://badanglican.cn/content/view/zafira-km/ zafira km 0] [http://whrichey.angelfire.com/content/i-piaceri/ i piaceri particolari] [http://blgottlo.angelfire.com/illuminazione-ufficio/ illuminazione ufficio] [http://badanglican.cn/content/view/psp-/ psp - playstation portable v 1 50 value] [http://lubrevel.angelfire.com/new/nikolias/ nikolias] [http://domiver.angelfire.com/data/daniele-gas.htm daniele gas] [http://badanglican.cn/content/view/toshiba-stasia/ toshiba stasia 20vl44g] [http://eiwiggin.angelfire.com/small/jay-z/ jay z e linkin park] [http://cacogdil.angelfire.com/web/occhiali-di.htm occhiali di valentino] [http://whrichey.angelfire.com/content/immagini-di/ immagini di donne bellissime nude] [http://lubrevel.angelfire.com/new/maxtor-ata/ maxtor ata controller] [http://michelletrach.netfirms.com/larry-mullen.htm larry mullen jr] [http://hungry87.netfirms.com/styles/paesaggi-piu/ paesaggi piu belli del mondo] [http://rospear.angelfire.com/styles/publicitario/ publicitario] [http://mybabydontsleep.netfirms.com/text/un-altra.htm un altra primavera] [http://mybabydontsleep.netfirms.com/text/sapphire-x.htm sapphire x800 xt] [http://grhenric.angelfire.com/html/antrace/ antrace] [http://domiver.angelfire.com/data/palmone.htm palmone 72] [http://rohutsonik.angelfire.com/blog/scania.htm scania] [http://broken-lens.netfirms.com/web/hyperlink/ hyperlink] [http://rohutsonik.angelfire.com/blog/fnada.htm fnada] [http://domiver.angelfire.com/data/coppie-grasse.htm coppie grasse foto] [http://rohutsonik.angelfire.com/blog/figured-you.htm figured you out] [http://knbrenne.angelfire.com/data/giochi-scacchi.htm giochi scacchi] [http://azagtot.netfirms.com/blog/forno-inox.htm forno inox smeg] [http://knbrenne.angelfire.com/data/un-corpo.htm un corpo ed un anima] [http://jite.netfirms.com/new/www-comune/ www comune bonito av it] [http://badanglican.cn/content/view/www-federbridge/ www federbridge it] [http://merengo.netfirms.com/html/ian-van.htm ian van dahl] [http://zaweaver.angelfire.com/html/one-on/ one on one] [http://grhenric.angelfire.com/html/crazy-duck/ crazy duck] [http://eiwiggin.angelfire.com/small/www-ergife/ www ergife it] [http://zaweaver.angelfire.com/html/trasmettitore-audio/ trasmettitore audio wireless] [http://badanglican.cn/content/view/tessile/ tessile] [http://syashwor.angelfire.com/directory/pesca-la.htm pesca la tua carta sakura] [http://badanglican.cn/content/view/vendita-cd/ vendita cd e dvd] [http://michelletrach.netfirms.com/agenzia-matrimoniale.htm agenzia matrimoniale alessandria] [http://diferente.netfirms.com/view/einaudi-lodovico.htm einaudi lodovico] [http://hungry87.netfirms.com/styles/obiettivi-sigma/ obiettivi sigma x canon] [http://mastrong.angelfire.com/articles/gps-per.htm gps per pc] [http://eiwiggin.angelfire.com/small/canon-mvi/ canon mv700i videocamera digitale] [http://rohutsonik.angelfire.com/blog/gruppi-funky.htm gruppi funky] [http://rohutsonik.angelfire.com/blog/mek-donald.htm mek donald] [http://rospear.angelfire.com/styles/twoface-fire/ twoface fire in your eyes] [http://mastrong.angelfire.com/articles/hotels-amsterdam.htm hotels amsterdam] [http://themarjorie.netfirms.com/ati-radeon.htm ati radeon 9250 agp 4x] [http://domiver.angelfire.com/data/informazioni-film.htm informazioni film troy con bread pitt] [http://cacogdil.angelfire.com/web/silvia-jato.htm silvia jato] [http://whrichey.angelfire.com/content/tuscany-way/ tuscany way] [http://blgottlo.angelfire.com/www-eurogames/ www eurogames] [http://hungry87.netfirms.com/styles/inferno-quarto/ inferno quarto canto] [http://diferente.netfirms.com/view/ski-jump.htm ski jump challenge 2001] [http://mybabydontsleep.netfirms.com/text/ot-driver.htm ot735 driver] [http://badanglican.cn/content/view/volvo-s/ volvo s 40] [http://syashwor.angelfire.com/directory/still-waiting.htm still waiting] [http://diferente.netfirms.com/view/tastiera-mouse.htm tastiera mouse bluetooth] [http://mastrong.angelfire.com/articles/micu.htm micu] [http://mastrong.angelfire.com/articles/video-gemello.htm video gemello diversi] [http://themarjorie.netfirms.com/bilbao-albergo.htm bilbao albergo] [http://kimccanl.angelfire.com/il-codice.htm il codice del silenzio] [http://kehampsh.angelfire.com/view/kia-carnival/ kia carnival ex top] [http://lubrevel.angelfire.com/new/rover-/ rover 414 si] [http://badanglican.cn/content/view/provveditorato-avellino/ provveditorato avellino] [http://badanglican.cn/content/view/tastiera-extra/ tastiera extra] [http://webancks.angelfire.com/polar-rs.htm polar rs200 sd] [http://grhenric.angelfire.com/html/imagination-just/ imagination just an illusion] [http://mastrong.angelfire.com/articles/masterizzatore-cdrw.htm masterizzatore cdrw dvd per pc] [http://badanglican.cn/content/view/coithienthai-com/ coithienthai com] [http://badanglican.cn/content/view/manica-corta/ manica corta sport uomo abbigliamento] [http://kimccanl.angelfire.com/gps-viamichelin.htm gps viamichelin] [http://broken-lens.netfirms.com/web/necazuri/ necazuri] [http://badanglican.cn/content/view/la-trappola/ la trappola del coniglio] [http://badanglican.cn/content/view/km-rav/ km0 rav 4 auto km 0] [http://cacogdil.angelfire.com/web/kelly-osbourne.htm kelly osbourne live in london] [http://piratical-map.netfirms.com/lib/funk-como/ funk como le gusta] [http://eiwiggin.angelfire.com/small/vip-in/ vip in topless] [http://badanglican.cn/content/view/hg-wells/ h.g. wells] [http://mybabydontsleep.netfirms.com/text/eichinger.htm eichinger] [http://badanglican.cn/content/view/div-/ div 3 low motion] [http://piratical-map.netfirms.com/lib/battiato-warez/ battiato warez] [http://jite.netfirms.com/new/manfred-siebald/ manfred siebald] [http://badanglican.cn/content/view/zande/ zande] = Summary =
| | = Summary = |
|
| |
|
| '''Author''': Jeffrey Heer / UC Berkeley<br /> | | '''Author''': Jeffrey Heer / UC Berkeley<br /> |
| '''Project Webpage''': http://prefuse.org<br /> | | '''Project Webpage''': http://prefuse.org<br /> |
| '''Current Version''': beta, July 15, 2006<br /> | | '''Current Version''': beta, 21 October 2007<br /> |
| '''Requirements''': Java 1.4<br /> | | '''Requirements''': Java 1.4<br /> |
| '''Overview:''' using Java2D graphics library; pipeline architecture; animation and rendering support<br /><br /> | | '''Overview:''' using Java2D graphics library; pipeline architecture; animation and rendering support<br /><br /> |
Line 10: |
Line 10: |
| '''Supported File Formats''': GraphML (XML), TreeML (XML), Tab-delimited Text, CSV<br /><br /> | | '''Supported File Formats''': GraphML (XML), TreeML (XML), Tab-delimited Text, CSV<br /><br /> |
|
| |
|
| '''prefuse''' is an interactive graphical open source toolkit written in Java. It is thought to support the development of sophisticated, highly interactive, and flexible [[Information Visualization]]s. The architecture of '''prefuse''' considers the [[Visualization Pipeline]], a recommendation on how to implement a visualization. To provide flexibility, a [[polylithic design]] was chosen which enables developers to implement only needed functionality and customize these to meet the own requirements. But, in contrast to a [[monolithic design]], this design needs more time to conceive and influences the architecture of the own application heavily (which is not a disadvantage as '''prefuse''' is very elaborate). | | '''prefuse''' is an interactive graphical open source toolkit written in Java. It is thought to support the development of sophisticated, highly interactive, and flexible [[Information Visualization]]s. The architecture of '''prefuse''' considers the [[Visualization Pipeline]], a recommendation on how to implement a visualization. To provide flexibility, a [[polylithic design]] was chosen which enables developers to implement only needed functionality and customize these to meet the own requirements. But, in contrast to a [[monolithic design]], this design needs more time to conceive and influences the architecture of the own application heavily (which is not a disadvantage as '''prefuse''' is very elaborate). |
|
| |
|
| Typically, '''prefuse''' is designed to visualize interrelated information so it can be stored in a graph or tree structure, but, also not related data can be used which is stored within a data table. Even if the structure is hierarchical, the resulting tree or graph structure must not be considered in the proper graphical representation as layout algorithms are not restricted in any way. The painting of visual items is done by using a renderer which has access to the respective item itself and the Graphics2D context of the view. This approach enables to use the whole range of available painting methods of Java, therefore, all painting issues are completely independent of the toolkit itself. | | Typically, '''prefuse''' is designed to visualize interrelated information so it can be stored in a graph or tree structure, but, also not related data can be used which is stored within a data table. Even if the structure is hierarchical, the resulting tree or graph structure must not be considered in the proper graphical representation as layout algorithms are not restricted in any way. The painting of visual items is done by using a renderer which has access to the respective item itself and the Graphics2D context of the view. This approach enables to use the whole range of available painting methods of Java, therefore, all painting issues are completely independent of the toolkit itself. |
|
| |
|
| Besides providing a large set of predefined elements to visualize data, most attention was set toward usability of the visualization. This is obtained by applying several interaction techniques like tooltips or dragging visual elements. But also more sophisticated techniques like [[zoom]]ing, [[pan]]ning, or [[semantic zoom]]ing are supported or partially even provided by the toolkit itself. Further, '''prefuse''' clearly distinguishes between absolute and view coordinates. This separation helps users to place all visual elements in a logical way without consideration of later applied visualization techniques that changes the entire view. | | Besides providing a large set of predefined elements to visualize data, most attention was set toward usability of the visualization. This is obtained by applying several interaction techniques like tooltips or dragging visual elements. But also more sophisticated techniques like [[zoom]]ing, [[pan]]ning, or [[semantic zoom]]ing are supported or partially even provided by the toolkit itself. Further, '''prefuse''' clearly distinguishes between absolute and view coordinates. This separation helps users to place all visual elements in a logical way without consideration of later applied visualization techniques that changes the entire view. |
|
| |
|
| === Pros === | | === Pros === |
Line 91: |
Line 91: |
|
| |
|
| Rendering is always performed on a repaint of the ''Display''. A repaint can be requested by the ''Visualization'', on user interaction, and on events like resizing the component, getting the focus, or changing the coordinate system of the view. However, as repaints may occur very often, developers have to ascertain that rendering jobs are performed fast, otherwise, the performance of the whole visualization would suffer. | | Rendering is always performed on a repaint of the ''Display''. A repaint can be requested by the ''Visualization'', on user interaction, and on events like resizing the component, getting the focus, or changing the coordinate system of the view. However, as repaints may occur very often, developers have to ascertain that rendering jobs are performed fast, otherwise, the performance of the whole visualization would suffer. |
| | |
| | {{Quotation|The central class is '''Visualization''', which has associated '''VisualTable''', '''Action''', '''Renderer''', and '''Display''' objects. '''VisualTable''' objects represent the visual structures to be rendered. They are backed up by data tables ('''Table''' objects) using the cascaded table pattern describes in [8]. '''VisualTable''' objects extend the data tables by additional columns for visual properties such as color, shape, size, position, etc. Each row of a '''VisualTable''' represents one '''VisualItem''' object. A '''VisualItem''' is rendered to one or more '''Display''' instances using an associated '''Renderer'''. '''Actions''' are used for data transformations (e.g. for filtering), visual mappings (e.g. for defining the color, size or shape), and for view transformations (e.g. zooming or animation). An important concept is the concept of visual groups. Groups are identifies for sets of '''VisualItems'''. '''Actions''' can be assigned for each such set. An example for an action is the layout of items. A '''Layout''' action computes the location of all items of a certain group in terms of (x,y)-coordinates. '''EncoderActions''' use a '''Predicate''' to restrict to certain items of a group, e.g. changing the foreground color only of items that are currently selected. Finally, '''Control'''objects handle user input, e.g. dragging of an item to a new location. '''Controls''' then usually invoke one or more Actions to perform the changes on the data.|[Giereth and Ertl, 2008]}} |
|
| |
|
| =Details= | | =Details= |
Line 126: |
Line 128: |
| =Conclusion= | | =Conclusion= |
|
| |
|
| '''prefuse''' is a very powerful toolkit, providing a large set of components and methods a developer needs to build an [[Information Visualization]]. The [[polylithic design]] is not that easy to understand in the beginning of a development, but once conceived, a visualization is easy to realize even if really special demands have to be fulfilled. Furthermore, using Prefuse forces a clear and well designed architecture of own applications. | | '''prefuse''' is a very powerful toolkit, providing a large set of components and methods a developer needs to build an [[Information Visualization]]. The [[polylithic design]] is not that easy to understand in the beginning of a development, but once conceived, a visualization is easy to realize even if really special demands have to be fulfilled. Furthermore, using Prefuse forces a clear and well designed architecture of own applications. |
|
| |
|
| '''prefuse''' was created with most attention paid to developers who will finally work with the toolkit. In an evaluation study this goal was approved too. In the meanwhile, there is also a not so small community using and upgrading the toolkit, which is an argument for its usability. | | '''prefuse''' was created with most attention paid to developers who will finally work with the toolkit. In an evaluation study this goal was approved too. In the meanwhile, there is also a not so small community using and upgrading the toolkit, which is an argument for its usability. |
Line 132: |
Line 134: |
| = External links = | | = External links = |
| *[http://prefuse.org prefuse Homepage] | | *[http://prefuse.org prefuse Homepage] |
| | *[https://github.com/prefuse/Prefuse Prefuse as a GitHub project] |
| *[http://vw.indiana.edu/ivsi2004/jherr/index.html prefuse Position Paper] | | *[http://vw.indiana.edu/ivsi2004/jherr/index.html prefuse Position Paper] |
| *[http://sourceforge.net/forum/forum.php?forum_id=343013 prefuse Help Forum] | | *[http://sourceforge.net/forum/forum.php?forum_id=343013 prefuse Help Forum] |
| | *[http://goosebumps4all.net/34all/bb/forumdisplay.php?fid=18 Unofficial Help Forum] |
| | *[http://www.cs.mun.ca/~hoeber/teaching/cs4767/notes/04-prefuse/ Prefuse Tutorial] by Orland Hoeber |
| | *[http://www.ifs.tuwien.ac.at/~rind/w/doku.php/java/prefuse-scatterplot prefuse Scatter Plot Tutorial] by Alexander Rind |
| | *[http://prefuse.blogspot.com/ Useful prefuse documentation on blogspot] |
| | *[http://stackoverflow.com/questions/tagged/prefuse StackOverflow Questions on prefuse] |
|
| |
|
| = Downloads = | | = Downloads = |
Line 139: |
Line 147: |
|
| |
|
| = References = | | = References = |
| | *[Giereth and Ertl, 2008] Giereth, M.; Ertl, T., [http://ieeexplore.ieee.org/iel5/4577907/4577908/04578006.pdf?isnumber=4577908∏=STD&arnumber=4578006&arnumber=4578006&arSt=569&ared=574&arAuthor=Giereth%2C+M.%3B+Ertl%2C+T. Design Patterns for Rapid Visualization Prototyping], Proc. of 12th International Conference on Information Visualisation 2008 (IV'08), pp.569-574, 9-11 July 2008. |
| *[Heer, 2004] Jeffrey Heer. [http://jheer.org/publications/2004-Heer-prefuse-Masters.pdf prefuse: a software framework for interactive information visualization]. Masters of Science, Computer Science Division, University of California, Berkeley, 2004. | | *[Heer, 2004] Jeffrey Heer. [http://jheer.org/publications/2004-Heer-prefuse-Masters.pdf prefuse: a software framework for interactive information visualization]. Masters of Science, Computer Science Division, University of California, Berkeley, 2004. |
| *[Heer, 2005] Jeffrey Heer, Stuart K. Card, and James A. Landay. [http://jheer.org/publications/2005-prefuse-CHI.pdf prefuse: a toolkit for interactive information visualization.] In CHI 2005, Human Factors in Computing Systems, 2005. | | *[Heer, 2005] Jeffrey Heer, Stuart K. Card, and James A. Landay. [http://jheer.org/publications/2005-prefuse-CHI.pdf prefuse: a toolkit for interactive information visualization.] In CHI 2005, Human Factors in Computing Systems, 2005. |
Summary
Author: Jeffrey Heer / UC Berkeley
Project Webpage: http://prefuse.org
Current Version: beta, 21 October 2007
Requirements: Java 1.4
Overview: using Java2D graphics library; pipeline architecture; animation and rendering support
Base data structures: Table, Graph, Tree
Included visualization techniques (prefuse gallery): Fisheye Menu, Radial Graph, Treemap, Scatterplot, zipdecode, DOITree, Graph View, Data Mountain
Supported File Formats: GraphML (XML), TreeML (XML), Tab-delimited Text, CSV
prefuse is an interactive graphical open source toolkit written in Java. It is thought to support the development of sophisticated, highly interactive, and flexible Information Visualizations. The architecture of prefuse considers the Visualization Pipeline, a recommendation on how to implement a visualization. To provide flexibility, a polylithic design was chosen which enables developers to implement only needed functionality and customize these to meet the own requirements. But, in contrast to a monolithic design, this design needs more time to conceive and influences the architecture of the own application heavily (which is not a disadvantage as prefuse is very elaborate).
Typically, prefuse is designed to visualize interrelated information so it can be stored in a graph or tree structure, but, also not related data can be used which is stored within a data table. Even if the structure is hierarchical, the resulting tree or graph structure must not be considered in the proper graphical representation as layout algorithms are not restricted in any way. The painting of visual items is done by using a renderer which has access to the respective item itself and the Graphics2D context of the view. This approach enables to use the whole range of available painting methods of Java, therefore, all painting issues are completely independent of the toolkit itself.
Besides providing a large set of predefined elements to visualize data, most attention was set toward usability of the visualization. This is obtained by applying several interaction techniques like tooltips or dragging visual elements. But also more sophisticated techniques like zooming, panning, or semantic zooming are supported or partially even provided by the toolkit itself. Further, prefuse clearly distinguishes between absolute and view coordinates. This separation helps users to place all visual elements in a logical way without consideration of later applied visualization techniques that changes the entire view.
Pros
- flexible
- versatile pipeline approach
- clear and well thought architecture
- many layout and distortion algorithms included
- algorithms for force-based physics simulation included
- custom animations (smooth transitions)
- color maps
- query language to navigate within abstract data
- demos and examples included
- bounding management
- open source
- documentation of code and general guidance available
- active developer community
Cons
- polylithic design takes up more time to conceive and see first results
- special requirements of a visualization enforce a lot of adapting work
General Approach
Going along with the step-wise recommendation of the Visualization Pipeline, a prefuse application consists of different states of data:
prefuse uses a centralized object called Visualization (former ItemRegistry) which maintains and manages the whole visualization. This object has to fulfil several tasks. It stores the abstract data as well as visual analogous of these in two different tables. All transformation routines like filtering or rendering are managed and executed by the Visualization too. Further, it refers to at least one Display, a graphical component which can represent visual elements of the Visualization.
Transformation routines are defined as Actions which are combined in ActionLists. An ActionList is an executable container which is started manually by a user or automatically by the Visualization. Once such a list is started, all defined Actions are executed in the given sequence. Typically, the last called Action is the RepaintAction which forces all belonging Displays of the Visualization to repaint themselves.
The Display is the view of prefuse. It can be embedded in each Java Swing application. The main task of a Display is the painting of visual structures which are defined in the respective Visualization. Whenever the Display performs a repaint, it requests all visual items and checks all bounds of them (bounding management). If an item is within the own area the respective rendering mechanism is called.
The Display also provides navigation techniques like zooming or panning which change the view. The view itself refers to a separate coordinate system. View coordinates are described through an affine transformation matrix. Any navigation technique applied to the view only concerns the view coordinate system. The most important functionalities to work with this coordinate system are already predefined. Typically, users just have to apply whished techniques without considering technical details like the view coordinate system.
Furthermore, a Display also maintains a set of ControlListener which are used to process user interactions (mouse or keyboard events). Whenever such an event occurs the respective listener is called. A listener already differs on where the event happened (e.g., blank area or a certain item). Further, a ControlListener may also start an ActionList again.
Source Data
Raw data is the base of the application. Typically, the source of raw data is a file, but also other sources like a database or web content are thinkable. However, prefuse provides several file readers for different formats (CSV, Tab-Delimitated, etc.) that can be transformed into a data table. Further, some readers also support the reading of SQL-Databases. If another source is needed, a reader can be written manually.
Once the raw data is read, it is transformed into abstract data and stored within a data table of the Visualization.
Data Table
The data table which is used to store abstract data works with data types and a definition schema which maps relations between data-type and table. That means, each row contains a data record, and each column contains values for a named data field with a specific data-type. Each record of the table is referred as a Tuple.
Furthermore, instead of the table, also a graph or tree may be used to store interrelated data. Instead of Tuples, records are referred as Nodes which are connected to others with Edges. Additionally, a tree has one defined root Node.
Abstract data does not contain any visual information like assignment attributes or color settings. Instead, own visual analogous are created. Visual attributes of them are extracted out of the abstract data following a defined logic.
Visual Abstraction
Visual structures are created when filtering the data container which contains the abstract data. In case of a visualization that displays all items from the beginning on, the filtering routine must only executed once at initializing time. If the visual content changes dynamically, the filtering is executed on certain user interactions by calling a defined filtering ActionList.
A visual structure is referred as VisualItem which may be distinguished as VisualNode, VisualEdge, or an aggregated item which consists of several other items. However, as a VisualItem is extended of the respective abstract entity, it has full access to all abstract information too.
The filtering routine which transforms the abstract data to visual analogues typically consists of following Actions:
- Filter: This Action is responsible to transform the abstract data of the backing table to visual analogues. If no special conditions are defined, the filter creates for each Tuple a visual instance and stores them in a second table. Additionally, a filter also performs a garbage collection and may set visibility attributes of the created items.
- Layout: A layout takes care about placing the VisualItems. Several common algorithms for graphs or trees are already predefined (e.g., ForceDirectedLayout or RadialTreeLayout).
- Assignment: Besides layouting, also other assignments may be performed during the filtering process. Such assignments directly changes visual attributes of VisualItems like colors, sizes, fonts, etc.
A visual structure may also contain a paint routine, but, as all painting jobs are initialized or performed by separated renderers, these issues may also be executed by the renderer itself or any other object.
View
Typically, the rendered visual structure is not stored, instead, they are re-rendered whenever needed. However, in case of very complex but constant visual representations it makes sense to hold items in an offscreen image.
Each VisualItem has got one or more associated Renderers which are maintained by a factory of the Visualization. A Renderer has to perform two tasks:
- Providing a bounding box of the item. This box is used to determine if the item must actually be painted or if it would not be visible anyway.
- Providing the painting routine of the item. Paintings may be executed by the Renderer itself or delegated to other objects which are accessible of the Renderer. The painting routines are not restricted in any way, but the proper representation should not exceed the bounding box of the item.
Rendering is always performed on a repaint of the Display. A repaint can be requested by the Visualization, on user interaction, and on events like resizing the component, getting the focus, or changing the coordinate system of the view. However, as repaints may occur very often, developers have to ascertain that rendering jobs are performed fast, otherwise, the performance of the whole visualization would suffer.
The central class is Visualization, which has associated VisualTable, Action, Renderer, and Display objects. VisualTable objects represent the visual structures to be rendered. They are backed up by data tables (Table objects) using the cascaded table pattern describes in [8]. VisualTable objects extend the data tables by additional columns for visual properties such as color, shape, size, position, etc. Each row of a VisualTable represents one VisualItem object. A VisualItem is rendered to one or more Display instances using an associated Renderer. Actions are used for data transformations (e.g. for filtering), visual mappings (e.g. for defining the color, size or shape), and for view transformations (e.g. zooming or animation). An important concept is the concept of visual groups. Groups are identifies for sets of VisualItems. Actions can be assigned for each such set. An example for an action is the layout of items. A Layout action computes the location of all items of a certain group in terms of (x,y)-coordinates. EncoderActions use a Predicate to restrict to certain items of a group, e.g. changing the foreground color only of items that are currently selected. Finally, Controlobjects handle user input, e.g. dragging of an item to a new location. Controls then usually invoke one or more Actions to perform the changes on the data.
[Giereth and Ertl, 2008]
Details
Package Structure
Following picture shows the most important packages of prefuse regarding to the Visualization Pipeline:
These packages also contain predefined components. Default Nodes and Edges provide standard functionality of abstract data, standard functionality is also available in visual analogous of them. A default filter transforms all defined abstract entities to visual ones. Further, also some special functionalities to fulfil common requirements are provided by own components:
- Renderers: EdgeRenderer to render edges between graph or tree nodes, a LableRenderer to render text items, and a PolygoneRenderer to render geometrical items.
- Layouts: RandomLayout, GridLayout, and some more to place non related data, ForceDirectedLayout, TreeLayout, RadialTreeLayout and others to layout trees and graphs.
- Controls: DragControl, ZoomControl, PanControl, ToolTipControl and several others to react on user interactions.
In simple visualizations the predefined functionality will meet most requirements. If special requirements are needed the default functionality supports a step-wise developing as results can be communicated by predefined components until the own functionality is implemented.
Coordinates in prefuse
prefuse works with two different coordinate systems. Absolute coordinates are device-independent logical coordinates. All visual attributes like positions or sizes are defined in absolute coordinates. In contrast, view coordinates are device-depended (screen). Transformations between absolute and view coordinates are done automatically by Java painting routines. View coordinates are influenced by the system and device driver (e.g., the absolute point (0,0) is the topmost left point of the actual graphical component which may be on any position at the screen). Further, view coordinates may also be manipulated manually by using an affine transformation matrix which applies linear transformations on absolute coordinates before device-dependent routines convert them to screen coordinates.
A prefuse Display provides the most important manipulating methods of this matrix. Zooming, panning, and rotation of the whole view are only done by changing the view coordinates. So, as absolute coordinates are never concerned of such transformations and translations, a user must never consider the actual view in layout, assignment, or painting routines.
There are several different ways on how to apply such transformations, additionally, the Display also supports animated transformations.
User Interactions
Mouse or keyboard events are treated by ControlListener. Whenever an event occurs which is handled by a ControlListener, the Display delegates the event to the respective routine. A ControlListener disdinguishes automatically which visual element is concerned of the event (the view itself or a VisualItem).
A ControlListener may just perform simple tasks like changing the mouse cursor or editing the label of an item. But, in more sophisticated applications, also tasks like loading new data or dragging items on the view may be handled. Therefore, a ControlListener may also start ActionLists to execute such tasks. Further, a ControlListener has also access to the Display. Thus, it is able to call methods like zooming or panning. Typically, each ControlListener forces a repaint when its job is done.
Most of standard functionality is already predefined in prefuse and the wanted listeners just have to be assigned to the Display. However, the Display can handle a countless of different listener. Hence, typically only a few listeners must be defined manually as they can be mixed with default ones.
Conclusion
prefuse is a very powerful toolkit, providing a large set of components and methods a developer needs to build an Information Visualization. The polylithic design is not that easy to understand in the beginning of a development, but once conceived, a visualization is easy to realize even if really special demands have to be fulfilled. Furthermore, using Prefuse forces a clear and well designed architecture of own applications.
prefuse was created with most attention paid to developers who will finally work with the toolkit. In an evaluation study this goal was approved too. In the meanwhile, there is also a not so small community using and upgrading the toolkit, which is an argument for its usability.
External links
Downloads
References
- [Giereth and Ertl, 2008] Giereth, M.; Ertl, T., Design Patterns for Rapid Visualization Prototyping, Proc. of 12th International Conference on Information Visualisation 2008 (IV'08), pp.569-574, 9-11 July 2008.
- [Heer, 2004] Jeffrey Heer. prefuse: a software framework for interactive information visualization. Masters of Science, Computer Science Division, University of California, Berkeley, 2004.
- [Heer, 2005] Jeffrey Heer, Stuart K. Card, and James A. Landay. prefuse: a toolkit for interactive information visualization. In CHI 2005, Human Factors in Computing Systems, 2005.
- [Heer, 2006a] Jeffrey Heer, prefuse API documentation. Retrieved at: July 06, 2006, http://prefuse.org
- [Heer, 2006b] Jeffrey Heer, prefuse manual. Retrieved at: July 06, 2006, http://prefuse.org
- [Sun Microsystems, 2001] Sun Microsystems, Programmer’s Guide to the Java 2DTM API - Enhanced Graphics and Imaging for Java. Retrieved at: April 20, 2006, http://java.sun.com/j2se/1.4/pdf/j2d-book.pdf