SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
J   G R   I   D
Table of contents


 • About me
 • My projects
 • The JGrid
 • Demo
About me

           • Java, UI and Apple nerd
           • Java Development Lead at
             SIC GmbH in Dortmund,
             Germany
           • I just started open source
             development
About GuiGarage                        www.guigarage.com




 • Just another Java blog
 • My daily experience with Java & Swing
 • Home of my opensource projects



GestureWrapper        jRating              jGrid
GestureWrapper

 • Use Mac OS Multitouch gestures in every Java
    programm
 • Forget about java.lang.NoClassDefFoundError
  GestureUtilities.registerListener(panel, new GestureRotationListener() {...});
JRating


  • Simple JComponent
    for rating
  • Renderer support for
    different skins
JGrid

 • Grid based visualization of Data
 • Underlying data is administrated in a list
 • Raw Data visualized by renderer


                                                Grid
Examples of grid based views
Examples of grid based views
Examples of grid based views
When to use grids?

 three options for visualizing non-     Grid
  hirarchical collections of data


List
                      Table



   best overview        best overview    best overview
   for „simple“         for „complex“   for „illustrated“
       data                  data              data
Integration



   same data, different views
Integration

• Fall back on swing
  classes
• Shares interfaces with
  JList
• Makes use of the swing
  renderer concept
Develop a new example
     I copied „iBooks“




                         I copied „iPhoto“




                             Let´s continue this series ...
Let´s copy iTunes...
... and implement GarageTunes

                  cross-platform
                    (pure Java)




                    modern UI
Collect some UI ideas

                        cool ListView




                        Controls


        dribbble.com
Collect some UI ideas

                      Grid of covers




       dribbble.com
Collect some UI ideas

  switch between
    Grid & List




                   dribbble.com
User Interface Sketching
Implementing the model
 • Create a datamodel
 • MP3 to data (MP3-Tags)
 • Drag & Drop MP3 files
                               all albums
                              are stored in
                              a ListModel


          data is generated
          from MP3-Tags
Intermediate result

  Controls


                      drop MP3´s here




                      switch between
                           views
Custom renderer
• Create a ListCellRenderer
• Activate antialiasing
• Use gradients
Retrieve album covers

• Use amazon webservices
• Search by album name & interpreter
  AWSECommerceService service = new AWSECommerceService();
  service.setHandlerResolver(new AwsHandlerResolver(awsSecretKey));
  AWSECommerceServicePortType port = service.getAWSECommerceServicePort();

  ItemSearchRequest itemSearchRequest = new ItemSearchRequest();
  itemSearchRequest.setSearchIndex("Music");
  itemSearchRequest.setArtist(interpreter);
  itemSearchRequest.setTitle(albumName);
  itemSearchRequest.getResponseGroup().add("Images");

  ItemSearch itemSearch = new ItemSearch();
  itemSearch.setAWSAccessKeyId(awsAccessKeyId);
  itemSearch.getRequest().add(itemSearchRequest);
  ItemSearchResponse response = port.itemSearch(itemSearch);


    register @ aws.amazon.com
Intermediate result


  covers from         JRating as part of
    amazon               the renderer
  webservices
Adding a gridview

 • Add GridView
 • Grid and list share selection & data model
 • Add GridCellRenderer


                       model
Intermediate result



 pinch to
   zoom
Finishing coding

   • Play the MP3s
   • mp3spi.jar
     • Service provider interface
     • Use javax.sound.*
   •
GarageTunes ToDos
   better user feedback:
    rollover effects on
          controls


       showing loading
       state for covers
         (animation?)


   GarageTunes Icon
JGrid Roadmap

 • Full support for ListSelectionModel (interval
   selection, etc.)
 • Sorting & filtering
 • Label renderer
 • Cell & label editor
 • OS specific UIs
Summery
• Use JGrid alternative to JList
• Best practice:
 • Let the user change the view
 • share the models between the views
• Integrate gestures as a alternative to your user
  guidance
• Subscribe to my Blog feed     stay tuned for more
                                     UI stuff!
Q&A

Contenu connexe

En vedette

Vagrant Binding JayDay 2013
Vagrant Binding JayDay 2013Vagrant Binding JayDay 2013
Vagrant Binding JayDay 2013
Hendrik Ebbers
 
Lightweight and reproducible environments with vagrant and Puppet
Lightweight and reproducible environments with vagrant and PuppetLightweight and reproducible environments with vagrant and Puppet
Lightweight and reproducible environments with vagrant and Puppet
Hendrik Ebbers
 
Vagrant-Binding JUG Dortmund
Vagrant-Binding JUG DortmundVagrant-Binding JUG Dortmund
Vagrant-Binding JUG Dortmund
Hendrik Ebbers
 

En vedette (14)

Vagrant Binding JayDay 2013
Vagrant Binding JayDay 2013Vagrant Binding JayDay 2013
Vagrant Binding JayDay 2013
 
Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)
 
Extreme Gui Makeover
Extreme Gui MakeoverExtreme Gui Makeover
Extreme Gui Makeover
 
webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)
 
Lightweight and reproducible environments with vagrant and Puppet
Lightweight and reproducible environments with vagrant and PuppetLightweight and reproducible environments with vagrant and Puppet
Lightweight and reproducible environments with vagrant and Puppet
 
JavaFX Enterprise
JavaFX EnterpriseJavaFX Enterprise
JavaFX Enterprise
 
DataFX - JavaOne 2013
DataFX - JavaOne 2013DataFX - JavaOne 2013
DataFX - JavaOne 2013
 
Bonjour for Java
Bonjour for JavaBonjour for Java
Bonjour for Java
 
Vagrant-Binding JUG Dortmund
Vagrant-Binding JUG DortmundVagrant-Binding JUG Dortmund
Vagrant-Binding JUG Dortmund
 
DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)
 
BUILDING MODERN WEB UIS WITH WEB COMPONENTS @ Devoxx
BUILDING MODERN WEB UIS WITH WEB COMPONENTS @ DevoxxBUILDING MODERN WEB UIS WITH WEB COMPONENTS @ Devoxx
BUILDING MODERN WEB UIS WITH WEB COMPONENTS @ Devoxx
 
JavaFX Enterprise (JavaOne 2014)
JavaFX Enterprise (JavaOne 2014)JavaFX Enterprise (JavaOne 2014)
JavaFX Enterprise (JavaOne 2014)
 
Feature driven development
Feature driven developmentFeature driven development
Feature driven development
 
Test Driven Development with JavaFX
Test Driven Development with JavaFXTest Driven Development with JavaFX
Test Driven Development with JavaFX
 

Similaire à Jgrid

Django introduction @ UGent
Django introduction @ UGentDjango introduction @ UGent
Django introduction @ UGent
kevinvw
 
Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on Rails
Avi Kedar
 

Similaire à Jgrid (20)

Umbraco OktoberFest 2014
Umbraco OktoberFest 2014Umbraco OktoberFest 2014
Umbraco OktoberFest 2014
 
Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)
 
Software variability management - 2017
Software variability management - 2017Software variability management - 2017
Software variability management - 2017
 
[2015/2016] Backbone JS
[2015/2016] Backbone JS[2015/2016] Backbone JS
[2015/2016] Backbone JS
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
How to generate customized java 8 code from your database
How to generate customized java 8 code from your databaseHow to generate customized java 8 code from your database
How to generate customized java 8 code from your database
 
Silicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your databaseSilicon Valley JUG - How to generate customized java 8 code from your database
Silicon Valley JUG - How to generate customized java 8 code from your database
 
1.6 米嘉 gobuildweb
1.6 米嘉 gobuildweb1.6 米嘉 gobuildweb
1.6 米嘉 gobuildweb
 
David Bilík: Anko – modern way to build your layouts?
David Bilík: Anko – modern way to build your layouts?David Bilík: Anko – modern way to build your layouts?
David Bilík: Anko – modern way to build your layouts?
 
Backbone JS for mobile apps
Backbone JS for mobile appsBackbone JS for mobile apps
Backbone JS for mobile apps
 
Web development basics (Part-3)
Web development basics (Part-3)Web development basics (Part-3)
Web development basics (Part-3)
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
 
Django introduction @ UGent
Django introduction @ UGentDjango introduction @ UGent
Django introduction @ UGent
 
On-boarding with JanusGraph Performance
On-boarding with JanusGraph PerformanceOn-boarding with JanusGraph Performance
On-boarding with JanusGraph Performance
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
 
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
 
Eclipse e4
Eclipse e4Eclipse e4
Eclipse e4
 
Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on Rails
 
Современная архитектура Android-приложений - Archetype / Степан Гончаров (90 ...
Современная архитектура Android-приложений - Archetype / Степан Гончаров (90 ...Современная архитектура Android-приложений - Archetype / Степан Гончаров (90 ...
Современная архитектура Android-приложений - Archetype / Степан Гончаров (90 ...
 

Plus de Hendrik Ebbers

Plus de Hendrik Ebbers (9)

Java Desktop 2019
Java Desktop 2019Java Desktop 2019
Java Desktop 2019
 
Java APIs- The missing manual (concurrency)
Java APIs- The missing manual (concurrency)Java APIs- The missing manual (concurrency)
Java APIs- The missing manual (concurrency)
 
Beauty & the Beast - Java VS TypeScript
Beauty & the Beast - Java VS TypeScriptBeauty & the Beast - Java VS TypeScript
Beauty & the Beast - Java VS TypeScript
 
Java 11 OMG
Java 11 OMGJava 11 OMG
Java 11 OMG
 
Java APIs - the missing manual
Java APIs - the missing manualJava APIs - the missing manual
Java APIs - the missing manual
 
Multidevice Controls: A Different Approach to UX
Multidevice Controls: A Different Approach to UXMultidevice Controls: A Different Approach to UX
Multidevice Controls: A Different Approach to UX
 
Java WebStart Is Dead: What Should We Do Now?
Java WebStart Is Dead: What Should We Do Now?Java WebStart Is Dead: What Should We Do Now?
Java WebStart Is Dead: What Should We Do Now?
 
Java ap is you should know
Java ap is you should knowJava ap is you should know
Java ap is you should know
 
JavaFX JumpStart @JavaOne 2016
JavaFX JumpStart @JavaOne 2016JavaFX JumpStart @JavaOne 2016
JavaFX JumpStart @JavaOne 2016
 

Dernier

Dernier (20)

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 

Jgrid

  • 1. J G R I D
  • 2. Table of contents • About me • My projects • The JGrid • Demo
  • 3. About me • Java, UI and Apple nerd • Java Development Lead at SIC GmbH in Dortmund, Germany • I just started open source development
  • 4. About GuiGarage www.guigarage.com • Just another Java blog • My daily experience with Java & Swing • Home of my opensource projects GestureWrapper jRating jGrid
  • 5. GestureWrapper • Use Mac OS Multitouch gestures in every Java programm • Forget about java.lang.NoClassDefFoundError GestureUtilities.registerListener(panel, new GestureRotationListener() {...});
  • 6. JRating • Simple JComponent for rating • Renderer support for different skins
  • 7. JGrid • Grid based visualization of Data • Underlying data is administrated in a list • Raw Data visualized by renderer Grid
  • 8. Examples of grid based views
  • 9. Examples of grid based views
  • 10. Examples of grid based views
  • 11. When to use grids? three options for visualizing non- Grid hirarchical collections of data List Table best overview best overview best overview for „simple“ for „complex“ for „illustrated“ data data data
  • 12. Integration same data, different views
  • 13. Integration • Fall back on swing classes • Shares interfaces with JList • Makes use of the swing renderer concept
  • 14. Develop a new example I copied „iBooks“ I copied „iPhoto“ Let´s continue this series ...
  • 16. ... and implement GarageTunes cross-platform (pure Java) modern UI
  • 17. Collect some UI ideas cool ListView Controls dribbble.com
  • 18. Collect some UI ideas Grid of covers dribbble.com
  • 19. Collect some UI ideas switch between Grid & List dribbble.com
  • 21. Implementing the model • Create a datamodel • MP3 to data (MP3-Tags) • Drag & Drop MP3 files all albums are stored in a ListModel data is generated from MP3-Tags
  • 22. Intermediate result Controls drop MP3´s here switch between views
  • 23. Custom renderer • Create a ListCellRenderer • Activate antialiasing • Use gradients
  • 24. Retrieve album covers • Use amazon webservices • Search by album name & interpreter AWSECommerceService service = new AWSECommerceService(); service.setHandlerResolver(new AwsHandlerResolver(awsSecretKey)); AWSECommerceServicePortType port = service.getAWSECommerceServicePort(); ItemSearchRequest itemSearchRequest = new ItemSearchRequest(); itemSearchRequest.setSearchIndex("Music"); itemSearchRequest.setArtist(interpreter); itemSearchRequest.setTitle(albumName); itemSearchRequest.getResponseGroup().add("Images"); ItemSearch itemSearch = new ItemSearch(); itemSearch.setAWSAccessKeyId(awsAccessKeyId); itemSearch.getRequest().add(itemSearchRequest); ItemSearchResponse response = port.itemSearch(itemSearch); register @ aws.amazon.com
  • 25. Intermediate result covers from JRating as part of amazon the renderer webservices
  • 26. Adding a gridview • Add GridView • Grid and list share selection & data model • Add GridCellRenderer model
  • 28. Finishing coding • Play the MP3s • mp3spi.jar • Service provider interface • Use javax.sound.* •
  • 29. GarageTunes ToDos better user feedback: rollover effects on controls showing loading state for covers (animation?) GarageTunes Icon
  • 30. JGrid Roadmap • Full support for ListSelectionModel (interval selection, etc.) • Sorting & filtering • Label renderer • Cell & label editor • OS specific UIs
  • 31. Summery • Use JGrid alternative to JList • Best practice: • Let the user change the view • share the models between the views • Integrate gestures as a alternative to your user guidance • Subscribe to my Blog feed stay tuned for more UI stuff!
  • 32. Q&A