SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
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

Más contenido relacionado

Destacado

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
 

Destacado (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
 

Similar a 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
 

Similar a 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 ...
 

Más de Hendrik Ebbers

Más 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
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
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
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 

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