SlideShare une entreprise Scribd logo
1  sur  24
R E - ARCHITECTING V ISUALIZATIONS
TO J AVA S WING
H ISTORY

   Napier has been developing visualisations for
    15 years




     Perspective Tunnel       OO Database Vis (1994)
     (1997)
                              Rapley & Kennedy
     Mitchell & Kennedy
H ISTORY




Multiple Tree Graph      Matrix Vis (2004)
(2000)




  Parallel Coordinates   Multiple Tree DAG
         (2003)                (2007)
S PECIFIC               TOOLS

   But each visualisation in turn has been built
    specifically for a given context
    (databases, taxonomy, microarray data)
       Reusability hasn’t been one of the criteria our
        projects have been concerned with – build a demo
        to show the principles for the problem at hand and
        leave it at that

       Which makes it hard when other data comes
        along…

                       Those are variable depth
                   phylogenetic trees mate, you ain’t
                              getting in.
DRIVER

   We wanted to reuse our work to compete for small
    projects that last perhaps weeks or months

   That sort of timescale doesn’t leave much scope
    for development from scratch

   A set of general components could be specialised
    more easily than trying to fit some specialised
    visualisation into a differently-shaped hole
U SE        A VIS TOOLKIT ?

   Plenty of visualisation toolkits to use out there
       User level suites allow given types of data sets to
        be visualised

       Programmer level toolkits allow visualisations to
        form part of larger applications

   The user level toolkits tend to be stand-
    alone, more difficult to integrate with other
    programs

   The programmer level toolkits tend to have their
    own new models and syntaxes to learn
S WING

   Most of our visualisations were built in Java Swing
    but with custom models, components and UIs

   Swing itself is a concrete architecture; a fully-
    coded implementation of an MVC-patterned GUI

   Re-architect our visualisations for Swing – not just
    built in Swing but composed on top of Swing’s
    existing classes for modelling/viewing Table and
    Tree data

   Our visualisations can be re-built in a reusable and
    general form by extending the existing Swing UI
    and Model classes and building necessary new
    classes in the Swing style
C ASE S TUDY:
       PARALLEL C OORDINATES
   A Parallel Coordinate display is essentially a table
    where data in each column is ordered
    independently, so ‘rows’ zig-zag across rather than
    read horizontally

   By coupling a new UI class with an extended
    JTable class (plus a couple of additional sorting
    classes) we have a Parallel Coordinates
    Model Interface  Controller    View (+Controller)
    implementation.
     TableMod
                      JTable         TableUI
         el
                 Extended
                 by
                     JParCoor       ParCoord
                        d              UI
C ASE S TUDY:
      PARALLEL C OORDINATES
   LOC: 3,645  2,664

   Reusability: Custom App Model  Generic Model
C ASE S TUDY:
       PARALLEL C OORDINATES
   By extending the Parallel Coordinate classes, we
    can also build a Scatter-plot Matrix
C ASE S TUDY:
        PARALLEL C OORDINATES
   Easy to adapt Swing-based GUIs to use our
    components: replace instantiations of JTable(…)with
    JParCoord(…)

       Re: Bederson’s FishEye drop-in replacement for JList
        (2000)

   We now have access to default JTable functionality
    such as Row filtering, Column drag’n’drop
    interaction, direct value editing etc, which we haven’t
    had to implement ourselves
   Two or more JTables or JParCoords can share the
    same TableModel
       A standard JTable in synch with a parallel coordinate
        plot provides a convenient way to edit data

       ! Selection models had to be processed differently as
C ASE S TUDY:
        PARALLEL C OORDINATES
   …extends JParCoord and uses a JScatterPlot as
    a cell renderer in it’s associated UI class


    Model Interface      Controller   View (+Controller)

     TableMode
          l
                           JTable       TableUI



                         JParCoor      ParCoord
                            d             UI
                      Extended                         JScatte
                      by                                rPlot
                         JScatterPl    ScatterPlot
                          otMatrix      Matrix UI
C ASE S TUDY:
               G RAPHS /N ETWORKS
   Re-architecture of previous visualisations of social
    network and taxonomy data
C ASE S TUDY:
                G RAPHS /N ETWORKS
   Swing doesn’t have classes that handle general
    graph data…

   So here we have to build our own graph model
       But Swing provides conventions, an architecture, of
        Models, Views & Listeners etc that can be followed

   For the views, we have two existing views that
    show graph data
       A node-link graph

       A matrix
C ASE S TUDY:
               G RAPHS /N ETWORKS
   For the node-link view we built a JGraph
    class, some associated classes, and a GraphUI
    class
       Fair amount of work
C ASE S TUDY:
                G RAPHS /N ETWORKS
   For the matrix though… what’s a graph matrix?
       It’s a table, with nodes along axes, edges in the
        middle
       We build a TableModel instance that sits as a
        wrapper around a GraphModel instance
       Plug this into a JTable and we have a JMatrix
        (extended with extras we’ve put in such as row
        headers & sorting)
C ASE S TUDY:
               G RAPHS /N ETWORKS
   The graph and table models for the matrix are
    context-free, they just hold objects and associated
    renderers decide how to display them
C ASE S TUDY:
                            G RAPHS /N ETWORKS
                Graph and matrix views can thus share models

                + Shared selection models for highlighting /
                 filtering etc
View (+C)   Controller      Model           Controller    View (+C)

  GraphUI       JGraph      GraphModel

                         Wrapped by
                         instance of
                             TableMod
                                             JTable         TableUI
                                 el



                                             JMatrix        MatrixUI
I N PROGRESS :
                     M ULTIPLE T REES
   Re-architecting Multiple Trees to work on top of
    multiple JTree components
A DVANTAGES OF R E - ARCH

   Java Swing’s model framework is very flexible
       Table, Tree and ListModels as interfaces with any
        implementation you like underneath that fits

       Pluggable Selection models

       Pluggable sets of Renderers that display whatever
        objects you choose

   Access to functionality built in to standard Swing
    tree and table widgets
       The default Swing widgets include editing
        functionality, visualisation components are usually
        poor at editing data
! A DVANTAGES OF R E -
                                               ARCH

   Swing’s UI classes are pretty monolithic and
    inextensible
       Mix of private / protected methods that would have
        been useful to extend, copy/pasting done at some
        point.

       They often reference helper classes with restricted
        access

   Default selection models are limited, mostly yes/no

   Have to understand the Swing classes clearly to
    incorporate new visualisation effects
       i.e. programmatically expanding a column header
C URRENTLY

   Talks with a couple of firms/existing projects about
    visualising their data with the Parallel Coordinate
    component

   Integrated Parallel Coordinates into an existing
    Java-based estate agency prototype

   Developed the Scatterplot matrix component with
    a health informatics firm in prep for a project bid
C ONCLUSION

   From our viewpoint, developing this suite of
    visualisations components that are pluggable
    directly into Java Swing eases a lot of
    development headaches
   We can adapt existing Java Swing GUIs with our
    components, for the most part it’s one or two lines
    of code substitution or an init() method
   We can quickly adapt the components themselves
    for given contexts/data domains
   This kind of piggybacking on a commonly-used
    GUI technology makes it more likely people will
    incorporate visualisations – and then more people
    will use them
E ND

   Thanks

   Questions / Insults?

Contenu connexe

Similaire à Re-architecting visualisations in Java Swing

The Unusual Suspect: Layouts for sleeker KDE applications
The Unusual Suspect: Layouts for sleeker KDE applicationsThe Unusual Suspect: Layouts for sleeker KDE applications
The Unusual Suspect: Layouts for sleeker KDE applicationsOpenBossa
 
jQquerysummit - Large-scale JavaScript Application Architecture
jQquerysummit - Large-scale JavaScript Application Architecture jQquerysummit - Large-scale JavaScript Application Architecture
jQquerysummit - Large-scale JavaScript Application Architecture Jiby John
 
Solution de génération de rapport OpenDocument à partir de plusieurs sources ...
Solution de génération de rapport OpenDocument à partir de plusieurs sources ...Solution de génération de rapport OpenDocument à partir de plusieurs sources ...
Solution de génération de rapport OpenDocument à partir de plusieurs sources ...EclipseDayParis
 
Analysis and Visualization of Network Data Using JUNG
Analysis and Visualization of Network Data Using JUNGAnalysis and Visualization of Network Data Using JUNG
Analysis and Visualization of Network Data Using JUNGIJERA Editor
 
Ontology based semantics and graphical notation as directed graphs
Ontology based semantics and graphical notation as directed graphsOntology based semantics and graphical notation as directed graphs
Ontology based semantics and graphical notation as directed graphsJohann Höchtl
 
Ujjwalreverseengineeringppptfinal
UjjwalreverseengineeringppptfinalUjjwalreverseengineeringppptfinal
Ujjwalreverseengineeringppptfinalujjwalchauhan87
 
Batch 21(14,64,66)
Batch 21(14,64,66)Batch 21(14,64,66)
Batch 21(14,64,66)swethadln
 
Architecture and design
Architecture and designArchitecture and design
Architecture and designhimanshu_airon
 
Adding geospatial features to a java web app
Adding geospatial features to a java web appAdding geospatial features to a java web app
Adding geospatial features to a java web appMatti Tahvonen
 
D3.JS Tips & Tricks (export to svg, crossfilter, maps etc.)
D3.JS Tips & Tricks (export to svg, crossfilter, maps etc.)D3.JS Tips & Tricks (export to svg, crossfilter, maps etc.)
D3.JS Tips & Tricks (export to svg, crossfilter, maps etc.)Oleksii Prohonnyi
 
Ingles proyecto traducido
Ingles proyecto traducidoIngles proyecto traducido
Ingles proyecto traducidoJoseph Manuelth
 
Modular programming Using Object in Scala
Modular programming Using Object in ScalaModular programming Using Object in Scala
Modular programming Using Object in ScalaKnoldus Inc.
 
doc - University of Idaho
doc - University of Idahodoc - University of Idaho
doc - University of Idahobutest
 
PATTERNS04 - Structural Design Patterns
PATTERNS04 - Structural Design PatternsPATTERNS04 - Structural Design Patterns
PATTERNS04 - Structural Design PatternsMichael Heron
 
Cocoa encyclopedia
Cocoa encyclopediaCocoa encyclopedia
Cocoa encyclopediaAlex Ali
 
School of Computing, Science & EngineeringAssessment Briefin.docx
School of Computing, Science & EngineeringAssessment Briefin.docxSchool of Computing, Science & EngineeringAssessment Briefin.docx
School of Computing, Science & EngineeringAssessment Briefin.docxanhlodge
 

Similaire à Re-architecting visualisations in Java Swing (20)

The Unusual Suspect: Layouts for sleeker KDE applications
The Unusual Suspect: Layouts for sleeker KDE applicationsThe Unusual Suspect: Layouts for sleeker KDE applications
The Unusual Suspect: Layouts for sleeker KDE applications
 
jQquerysummit - Large-scale JavaScript Application Architecture
jQquerysummit - Large-scale JavaScript Application Architecture jQquerysummit - Large-scale JavaScript Application Architecture
jQquerysummit - Large-scale JavaScript Application Architecture
 
Solution de génération de rapport OpenDocument à partir de plusieurs sources ...
Solution de génération de rapport OpenDocument à partir de plusieurs sources ...Solution de génération de rapport OpenDocument à partir de plusieurs sources ...
Solution de génération de rapport OpenDocument à partir de plusieurs sources ...
 
Analysis and Visualization of Network Data Using JUNG
Analysis and Visualization of Network Data Using JUNGAnalysis and Visualization of Network Data Using JUNG
Analysis and Visualization of Network Data Using JUNG
 
Core java(2)
Core java(2)Core java(2)
Core java(2)
 
Ontology based semantics and graphical notation as directed graphs
Ontology based semantics and graphical notation as directed graphsOntology based semantics and graphical notation as directed graphs
Ontology based semantics and graphical notation as directed graphs
 
Ujjwalreverseengineeringppptfinal
UjjwalreverseengineeringppptfinalUjjwalreverseengineeringppptfinal
Ujjwalreverseengineeringppptfinal
 
Batch 21(14,64,66)
Batch 21(14,64,66)Batch 21(14,64,66)
Batch 21(14,64,66)
 
Architecture and design
Architecture and designArchitecture and design
Architecture and design
 
Adding geospatial features to a java web app
Adding geospatial features to a java web appAdding geospatial features to a java web app
Adding geospatial features to a java web app
 
Chapter 1-Note.docx
Chapter 1-Note.docxChapter 1-Note.docx
Chapter 1-Note.docx
 
Advanced swing
Advanced swingAdvanced swing
Advanced swing
 
D3.JS Tips & Tricks (export to svg, crossfilter, maps etc.)
D3.JS Tips & Tricks (export to svg, crossfilter, maps etc.)D3.JS Tips & Tricks (export to svg, crossfilter, maps etc.)
D3.JS Tips & Tricks (export to svg, crossfilter, maps etc.)
 
Ingles proyecto traducido
Ingles proyecto traducidoIngles proyecto traducido
Ingles proyecto traducido
 
Modular programming Using Object in Scala
Modular programming Using Object in ScalaModular programming Using Object in Scala
Modular programming Using Object in Scala
 
doc - University of Idaho
doc - University of Idahodoc - University of Idaho
doc - University of Idaho
 
PATTERNS04 - Structural Design Patterns
PATTERNS04 - Structural Design PatternsPATTERNS04 - Structural Design Patterns
PATTERNS04 - Structural Design Patterns
 
Adapter pattern
Adapter patternAdapter pattern
Adapter pattern
 
Cocoa encyclopedia
Cocoa encyclopediaCocoa encyclopedia
Cocoa encyclopedia
 
School of Computing, Science & EngineeringAssessment Briefin.docx
School of Computing, Science & EngineeringAssessment Briefin.docxSchool of Computing, Science & EngineeringAssessment Briefin.docx
School of Computing, Science & EngineeringAssessment Briefin.docx
 

Dernier

Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...EduSkills OECD
 
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...Sapna Thakur
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...fonyou31
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Disha Kariya
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104misteraugie
 
Disha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdfDisha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdfchloefrazer622
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactPECB
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfJayanti Pande
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...christianmathematics
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introductionMaksud Ahmed
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdfQucHHunhnh
 
General AI for Medical Educators April 2024
General AI for Medical Educators April 2024General AI for Medical Educators April 2024
General AI for Medical Educators April 2024Janet Corral
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeThiyagu K
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)eniolaolutunde
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxVishalSingh1417
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactdawncurless
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxheathfieldcps1
 

Dernier (20)

INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptxINDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
 
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
Disha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdfDisha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdf
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdf
 
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
General AI for Medical Educators April 2024
General AI for Medical Educators April 2024General AI for Medical Educators April 2024
General AI for Medical Educators April 2024
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and Mode
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptx
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 

Re-architecting visualisations in Java Swing

  • 1. R E - ARCHITECTING V ISUALIZATIONS TO J AVA S WING
  • 2. H ISTORY  Napier has been developing visualisations for 15 years Perspective Tunnel OO Database Vis (1994) (1997) Rapley & Kennedy Mitchell & Kennedy
  • 3. H ISTORY Multiple Tree Graph Matrix Vis (2004) (2000) Parallel Coordinates Multiple Tree DAG (2003) (2007)
  • 4. S PECIFIC TOOLS  But each visualisation in turn has been built specifically for a given context (databases, taxonomy, microarray data)  Reusability hasn’t been one of the criteria our projects have been concerned with – build a demo to show the principles for the problem at hand and leave it at that  Which makes it hard when other data comes along… Those are variable depth phylogenetic trees mate, you ain’t getting in.
  • 5. DRIVER  We wanted to reuse our work to compete for small projects that last perhaps weeks or months  That sort of timescale doesn’t leave much scope for development from scratch  A set of general components could be specialised more easily than trying to fit some specialised visualisation into a differently-shaped hole
  • 6. U SE A VIS TOOLKIT ?  Plenty of visualisation toolkits to use out there  User level suites allow given types of data sets to be visualised  Programmer level toolkits allow visualisations to form part of larger applications  The user level toolkits tend to be stand- alone, more difficult to integrate with other programs  The programmer level toolkits tend to have their own new models and syntaxes to learn
  • 7. S WING  Most of our visualisations were built in Java Swing but with custom models, components and UIs  Swing itself is a concrete architecture; a fully- coded implementation of an MVC-patterned GUI  Re-architect our visualisations for Swing – not just built in Swing but composed on top of Swing’s existing classes for modelling/viewing Table and Tree data  Our visualisations can be re-built in a reusable and general form by extending the existing Swing UI and Model classes and building necessary new classes in the Swing style
  • 8. C ASE S TUDY: PARALLEL C OORDINATES  A Parallel Coordinate display is essentially a table where data in each column is ordered independently, so ‘rows’ zig-zag across rather than read horizontally  By coupling a new UI class with an extended JTable class (plus a couple of additional sorting classes) we have a Parallel Coordinates Model Interface Controller View (+Controller) implementation. TableMod JTable TableUI el Extended by JParCoor ParCoord d UI
  • 9. C ASE S TUDY: PARALLEL C OORDINATES  LOC: 3,645  2,664  Reusability: Custom App Model  Generic Model
  • 10. C ASE S TUDY: PARALLEL C OORDINATES  By extending the Parallel Coordinate classes, we can also build a Scatter-plot Matrix
  • 11. C ASE S TUDY: PARALLEL C OORDINATES  Easy to adapt Swing-based GUIs to use our components: replace instantiations of JTable(…)with JParCoord(…)  Re: Bederson’s FishEye drop-in replacement for JList (2000)  We now have access to default JTable functionality such as Row filtering, Column drag’n’drop interaction, direct value editing etc, which we haven’t had to implement ourselves  Two or more JTables or JParCoords can share the same TableModel  A standard JTable in synch with a parallel coordinate plot provides a convenient way to edit data  ! Selection models had to be processed differently as
  • 12. C ASE S TUDY: PARALLEL C OORDINATES  …extends JParCoord and uses a JScatterPlot as a cell renderer in it’s associated UI class Model Interface Controller View (+Controller) TableMode l JTable TableUI JParCoor ParCoord d UI Extended JScatte by rPlot JScatterPl ScatterPlot otMatrix Matrix UI
  • 13. C ASE S TUDY: G RAPHS /N ETWORKS  Re-architecture of previous visualisations of social network and taxonomy data
  • 14. C ASE S TUDY: G RAPHS /N ETWORKS  Swing doesn’t have classes that handle general graph data…  So here we have to build our own graph model  But Swing provides conventions, an architecture, of Models, Views & Listeners etc that can be followed  For the views, we have two existing views that show graph data  A node-link graph  A matrix
  • 15. C ASE S TUDY: G RAPHS /N ETWORKS  For the node-link view we built a JGraph class, some associated classes, and a GraphUI class  Fair amount of work
  • 16. C ASE S TUDY: G RAPHS /N ETWORKS  For the matrix though… what’s a graph matrix?  It’s a table, with nodes along axes, edges in the middle  We build a TableModel instance that sits as a wrapper around a GraphModel instance  Plug this into a JTable and we have a JMatrix (extended with extras we’ve put in such as row headers & sorting)
  • 17. C ASE S TUDY: G RAPHS /N ETWORKS  The graph and table models for the matrix are context-free, they just hold objects and associated renderers decide how to display them
  • 18. C ASE S TUDY: G RAPHS /N ETWORKS  Graph and matrix views can thus share models  + Shared selection models for highlighting / filtering etc View (+C) Controller Model Controller View (+C) GraphUI JGraph GraphModel Wrapped by instance of TableMod JTable TableUI el JMatrix MatrixUI
  • 19. I N PROGRESS : M ULTIPLE T REES  Re-architecting Multiple Trees to work on top of multiple JTree components
  • 20. A DVANTAGES OF R E - ARCH  Java Swing’s model framework is very flexible  Table, Tree and ListModels as interfaces with any implementation you like underneath that fits  Pluggable Selection models  Pluggable sets of Renderers that display whatever objects you choose  Access to functionality built in to standard Swing tree and table widgets  The default Swing widgets include editing functionality, visualisation components are usually poor at editing data
  • 21. ! A DVANTAGES OF R E - ARCH  Swing’s UI classes are pretty monolithic and inextensible  Mix of private / protected methods that would have been useful to extend, copy/pasting done at some point.  They often reference helper classes with restricted access  Default selection models are limited, mostly yes/no  Have to understand the Swing classes clearly to incorporate new visualisation effects  i.e. programmatically expanding a column header
  • 22. C URRENTLY  Talks with a couple of firms/existing projects about visualising their data with the Parallel Coordinate component  Integrated Parallel Coordinates into an existing Java-based estate agency prototype  Developed the Scatterplot matrix component with a health informatics firm in prep for a project bid
  • 23. C ONCLUSION  From our viewpoint, developing this suite of visualisations components that are pluggable directly into Java Swing eases a lot of development headaches  We can adapt existing Java Swing GUIs with our components, for the most part it’s one or two lines of code substitution or an init() method  We can quickly adapt the components themselves for given contexts/data domains  This kind of piggybacking on a commonly-used GUI technology makes it more likely people will incorporate visualisations – and then more people will use them
  • 24. E ND  Thanks  Questions / Insults?

Notes de l'éditeur

  1. Hello. I’m me.
  2. Built a lot of tools, all for specific needsClick to get bouncer
  3. Re-using such highly tailored work is difficult, often the semantics of the domain are entangled in the code (yeah, my bad)
  4. I differentiate on documentation.If most of the documentation is in the source code (i.e. javadocs) then I deem it to be a programmer-level toolkit.If most of the documentation is somewhere else and related to getting data on-screen then I say it’s user-level.
  5. We had arguments over what models/architectures we should base this toolkit on, in the end I picked Swing as I’m already familiar with it and it already demonstrates it can handle complex GUIs. Not saying this is new, but it seemed the quickest, most flexible, most $$$£££€€€-wise way of doing things
  6. Parallel coordinate data is table/tuple data, one tablecolumn per dimensionAdditional sorting classes – individual sort order perTableColumn
  7. Knocked down the lines of code by between a third and a quarterAnd the Parallel Coordinates now accepts anything you can stuff in a Java TableModel and has the same interactions for dragging/resizing columns etc. Even knocked in a progressive rendering ability for large data sets
  8. Not a big leap from parallel coordinates to a scatterplot matrixThe parallel coordinates has a sort order per column, which the scatterplot drawing utilisesInstead of individual row/column data points, the ‘table’ shows column-column pairwise comparison for the entire data setThis example has 3,750
  9. Easy way to adapt standard Swing GUIsFunctionality from standard swing widgets availableSwing’s MVC model makes sharing models between views easy
  10. Builds on functionality we’ve got for parallel coordinates
  11. Here’s some old versions we knocked up
  12. Here we hit a wall, swing doesn’t have concrete implementations of these kinds of data, but the examples it does have are enough to supply an architecture to build to.
  13. No getting round this, it was a fair bit of work, but at least Swing supplied conventions and concrete examples from other objects for us to use
  14. A matrix is a table view of graph data, easy enough to build a tablemodel instance that wraps a graphmodel instance, and we can view table-style
  15. Demo of graph matrix built on top of Jtable, showing a) image renderer and b) multi-edge renderer
  16. Graph Model works with Jgraph and GraphUI for the node-linkWe instantiate a class of TableModel that wraps round graphModel
  17. Multiple trees each with it’s own tree model that can hold similar objectsRequires a new selection model that works on objects rather than view-based selection indexing
  18. Our components are a lot more reusable now, if you can fit the data in one of the models we can view itUsed in combo with the default Swing widgets, we can edit with the standard view and observe with the more abstract views
  19. We’ve done a few minor projects, month timescales etc
  20. If we can do it quickly, it costs less, people are more likely to pay us – specially if its to integrate with existing projects / technologyVisualisation still hasn’t penetrated mainstream – mostly because it requires developers to use new UI frameworks / models – piggybacking on a popular GUI implementation / architecture like Swing makes take-up more likely in our opinion
  21. Q’s?