SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
Flamingo: Bringing the
Ribbon Component to
Swing
Kirill Grouchnikov
Amdocs
Agenda
>   What is a ribbon?
>   Swing ribbon implementation
>   Swing ribbon structure
       Basic terminology
       Command buttons
       Ribbon bands
       Ribbon tasks
       Miscellaneous
>   Where to next?

                                  2
What is a ribbon?




                    3
Ribbon demo

              4
http://blogs.msdn.com/jensenh




                                5
Ribbon availability
>   Available for WinForms, Win32, WPF, Silverlight
>   Third-party vendors




>   Microsoft – WPF 3.5, Windows 7 (scenic ribbon)




                                                      6
Ribbon for Swing applications
              Metal             Looks Plastic XP




              Nimbus                     A03




                                                   7
Ribbon for Swing applications
         Office Blue 2007       Office Silver 2007




                 Creme                   Nebula




         Raven Graphite                  Autumn




                                                     8
Ribbon for Swing applications
           Black Moon           Orange Metallic




            Blue Moon           Mauve Metallic




             Blue Ice             Sky Metallic




                                                  9
Ribbon for Swing applications




   http://flamingo.dev.java.net




                                  10
Basic ribbon terminology

Application menu button                          Contextual ribbon task group
                                   Ribbon task
              Taskbar panel                                                                Help button
                                                                  Contextual ribbon task




                          Ribbon gallery
         Ribbon band                                          Ribbon band expand button




                                                                                                         11
Basic hierarchy
>   Ribbon
                                               Ribbon task
       Contains tasks
           Containing bands

>   JRibbon
       RibbonTask
           AbstractRibbonBand   Ribbon band




                                                             12
Basic building block




             Command buttons




                               13
Command buttons
>   AbstractCommandButton
       JCommandButton
       JCommandToggleButton




                               14
Command
buttons demo

               15
Display state

AbstractCommandButton.setDisplayState(
  CommandButtonDisplayState)



                  BIG     TILE      MEDIUM


                                    SMALL




                                             16
Action and popup areas
JCommandButton.setCommandButtonKind(CommandButtonKind)



   ACTION_ONLY   ACTION_AND_POPUP   ACTION_AND_POPUP   POPUP_ONLY
                   _MAIN_ACTION        _MAIN_POPUP




 ActionButtonModel AbstractCommandButton.getActionModel()
 PopupButtonModel JCommandButton.getPopupModel()




                                                                    17
Simple popups
JCommandButton.setPopupCallback(PopupPanelCallback)
             JCommandButton button = ...;
             button.setPopupCallback(new PopupPanelCallback() {
               public JPopupPanel getPopupPanel(
                            JCommandButton commandButton) {
                    JCommandPopupMenu menu =
                            new JCommandPopupMenu();
                    menu.addMenuButton(...);
                    menu.addMenuSeparator();
                    ...
                    return menu;
               }
             });




                                                                  18
Command button strips
JCommandButtonStrip

         HORIZONTAL     VERTICAL




                                   19
Command button panels
JCommandButtonPanel

        ROW_FILL        COLUMN_FILL




                                      20
Rich popups
              JCommandButton button = ...;
              button.setPopupCallback(new PopupPanelCallback() {
                public JPopupPanel getPopupPanel(
                             JCommandButton commandButton) {
                     JCommandButtonPanel panel =
                             new JCommandButtonPanel(...);
                     panel.addButtonGroup(...);
                     panel.addButtonToGroup(...);
                     ...
                     JCommandPopupMenu menu =
                             new JCommandPopupMenu(panel,
                                    maxColumns, maxRows);
                     ...
                     return menu;
                }
              });

                                                           21
Bands / tasks
   demo

                22
Ribbon bands



         Ribbon band   Ribbon band   Flow ribbon band   Ribbon band




>   AbstractRibbonBand
       JRibbonBand
       JFlowRibbonBand



                                                                      23
Flow ribbon bands
JFlowRibbonBand

Adding content:
  addFlowComponent(JComponent)




      Two row flowing       Three row flowing   Collapsed
         content                content




                                                            24
Regular ribbon bands
JRibbonBand

Can host:
> command buttons
> wrapped core / 3rd party components
> ribbon galleries




                                        25
Hosting command buttons
        JRibbonBand clipboardBand = new JRibbonBand(
          “Clipboard”, ...);

        JCommandButton pasteButton = new JCommandButton(
          “Paste”, pasteIcon);
        pasteButton.setCommandButtonKind(
          CommandButtonKind.ACTION_AND_POPUP_MAIN_ACTION);
        pasteButton.setPopupCallback(...);
        clipboardBand.addCommandButton(pasteButton,
          RibbonElementPriority.TOP);

        ...

        clipboardBand.addCommandButton(cutButton,
          RibbonElementPriority.MEDIUM);



                                                             26
Hosting core and 3rd party controls



        Simple wrapping                      Wrapping with icon
                                                and caption




                          Wrapped components
                          spanning multiple rows


                                                                  27
Ribbon galleries
  Hosted gallery   Expanded gallery   Expanded gallery
                   shown in a popup    scrolled down




  Hosted gallery
  scrolled down




                                                         28
Groups in ribbon bands

         Two unnamed
           groups with
      command buttons


         Three unnamed
             groups with
       command buttons


      Two named groups
       with wrapped core
             components




                           29
Ribbon tasks
       Ribbon task           Ribbon task          Ribbon task
                  Ribbon task          Ribbon task




new RibbonTask(title,
  AbstractRibbonBand... bands)

JRibbon.addTask(RibbonTask)

                                                                30
Contextual task groups
               Contextual ribbon task group               Contextual ribbon task group

                                       Contextual ribbon task




                                   Selected contextual ribbon task




                                                                                     31
Menu button /
taskbar demo

                32
Application menu button
Application menu button




                           33
Application menu


     Primary                                Secondary
  menu group                                menu group




                               Footer
 JRibbon.setApplicationMenu(RibbonApplicationMenu)

                                                         34
Taskbar panel

     Taskbar panel




JRibbon.addTaskbarComponent(Component)




                                         35
Tooltips / key
 tips demo

                 36
Rich tooltips


        Tooltip for the
          action area




                          Displayed below
                          the ribbon


        Tooltip for the
          popup area




                                            37
Rich tooltips


    Tooltip for wrapped
      core component
                           Multiple
                           paragraphs



     Tooltip for taskbar
                           Displayed below
            component
                           the taskbar




                                             38
Rich tooltips


       Tooltip for
application menu
           button


                     Footer section
                     and images




                                      39
Key tips

  Press Alt or         Showing key           Showing key tips
  F10 for the           tips of the           of the selected
   top chain           selected task               button

                 P                     V

                 Esc                   Esc




                                                                40
Resizing /
minimized
  demo
             41
Ribbon resizing




                  42
Ribbon resizing, collapsing and scrolling
                   Scrolling tasks   Scrolling bands




  Expanding the
collapsed ribbon
            band


                                                       43
Minimized mode



                 JRibbon.setMinimized(true)
                 User double-clicking a task button
                 User pressing Ctrl+F1



                 User clicking a task button




                                                      44
Big features recap
>   Ribbon regular and flow bands
>   Ribbon galleries
>   Ribbon tasks and contextual task groups
>   Application menu button and taskbar panel
>   Resizing, collapsing and scrolling
>   Rich tooltips and key tips
>   Minimized mode



                                                45
Under the hood
>   Visual consistency across LAFs
    >   org.jvnet.flamingo.common.ui.BasicCommandButtonUI.paintB
        uttonBackground
>   Key tips
    >   org.jvnet.flamingo.ribbon.JRibbonFrame.KeyTipLayer
>   Placing content in the title pane
    >   org.jvnet.substance.flamingo.ribbon.ui.SubstanceRibbonFr
        ameTitlePane
>   More in the code…



                                                               46
What is missing - small
>   Hosting small buttons in galleries
>   Resizing popup panels
>   Navigating with keyboard (arrows, tabs)
>   Dragging controls to the taskbar panel
>   Hosting taskbar panel below the ribbon




                                              47
What is missing - medium
>   Right-to-left support
>   High DPI support




                            48
Potentially useful
>   XML-driven ribbon content
>   SWT version
>   World domination




                                49
Try it now!




    http://flamingo.dev.java.net


                                   50
Kirill Grouchnikov
kirillcool@yahoo.com
http://flamingo.dev.java.net
http://www.pushing-pixels.org




                                51

Contenu connexe

Plus de Kirill Grouchnikov

Plus de Kirill Grouchnikov (8)

Responsive mobile design in practice
Responsive mobile design in practiceResponsive mobile design in practice
Responsive mobile design in practice
 
Responsive mobile design
Responsive mobile designResponsive mobile design
Responsive mobile design
 
Designing for the mobile form factor
Designing for the mobile form factorDesigning for the mobile form factor
Designing for the mobile form factor
 
Substance Java One 2007 Community Corner
Substance Java One 2007  Community  CornerSubstance Java One 2007  Community  Corner
Substance Java One 2007 Community Corner
 
Party of One
Party of OneParty of One
Party of One
 
Advanced Effects Oscon 2007
Advanced Effects   Oscon 2007Advanced Effects   Oscon 2007
Advanced Effects Oscon 2007
 
High DPI for desktop applications
High DPI for desktop applicationsHigh DPI for desktop applications
High DPI for desktop applications
 
On The Shoulders Of Giants
On The Shoulders Of GiantsOn The Shoulders Of Giants
On The Shoulders Of Giants
 

Dernier

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.pdfsudhanshuwaghmare1
 
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 Processorsdebabhi2
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
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...Martijn de Jong
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
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 FresherRemote DBA Services
 
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 Takeoffsammart93
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
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 2024The Digital Insurer
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
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 FMESafe Software
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
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].pdfOverkill Security
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 

Dernier (20)

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
 
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
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
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...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
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
 
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
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
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
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
+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...
 
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
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
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
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 

Flamingo Ribbon component

  • 1. Flamingo: Bringing the Ribbon Component to Swing Kirill Grouchnikov Amdocs
  • 2. Agenda > What is a ribbon? > Swing ribbon implementation > Swing ribbon structure  Basic terminology  Command buttons  Ribbon bands  Ribbon tasks  Miscellaneous > Where to next? 2
  • 3. What is a ribbon? 3
  • 6. Ribbon availability > Available for WinForms, Win32, WPF, Silverlight > Third-party vendors > Microsoft – WPF 3.5, Windows 7 (scenic ribbon) 6
  • 7. Ribbon for Swing applications Metal Looks Plastic XP Nimbus A03 7
  • 8. Ribbon for Swing applications Office Blue 2007 Office Silver 2007 Creme Nebula Raven Graphite Autumn 8
  • 9. Ribbon for Swing applications Black Moon Orange Metallic Blue Moon Mauve Metallic Blue Ice Sky Metallic 9
  • 10. Ribbon for Swing applications http://flamingo.dev.java.net 10
  • 11. Basic ribbon terminology Application menu button Contextual ribbon task group Ribbon task Taskbar panel Help button Contextual ribbon task Ribbon gallery Ribbon band Ribbon band expand button 11
  • 12. Basic hierarchy > Ribbon Ribbon task  Contains tasks  Containing bands > JRibbon  RibbonTask  AbstractRibbonBand Ribbon band 12
  • 13. Basic building block Command buttons 13
  • 14. Command buttons > AbstractCommandButton  JCommandButton  JCommandToggleButton 14
  • 16. Display state AbstractCommandButton.setDisplayState( CommandButtonDisplayState) BIG TILE MEDIUM SMALL 16
  • 17. Action and popup areas JCommandButton.setCommandButtonKind(CommandButtonKind) ACTION_ONLY ACTION_AND_POPUP ACTION_AND_POPUP POPUP_ONLY _MAIN_ACTION _MAIN_POPUP ActionButtonModel AbstractCommandButton.getActionModel() PopupButtonModel JCommandButton.getPopupModel() 17
  • 18. Simple popups JCommandButton.setPopupCallback(PopupPanelCallback) JCommandButton button = ...; button.setPopupCallback(new PopupPanelCallback() { public JPopupPanel getPopupPanel( JCommandButton commandButton) { JCommandPopupMenu menu = new JCommandPopupMenu(); menu.addMenuButton(...); menu.addMenuSeparator(); ... return menu; } }); 18
  • 20. Command button panels JCommandButtonPanel ROW_FILL COLUMN_FILL 20
  • 21. Rich popups JCommandButton button = ...; button.setPopupCallback(new PopupPanelCallback() { public JPopupPanel getPopupPanel( JCommandButton commandButton) { JCommandButtonPanel panel = new JCommandButtonPanel(...); panel.addButtonGroup(...); panel.addButtonToGroup(...); ... JCommandPopupMenu menu = new JCommandPopupMenu(panel, maxColumns, maxRows); ... return menu; } }); 21
  • 22. Bands / tasks demo 22
  • 23. Ribbon bands Ribbon band Ribbon band Flow ribbon band Ribbon band > AbstractRibbonBand  JRibbonBand  JFlowRibbonBand 23
  • 24. Flow ribbon bands JFlowRibbonBand Adding content: addFlowComponent(JComponent) Two row flowing Three row flowing Collapsed content content 24
  • 25. Regular ribbon bands JRibbonBand Can host: > command buttons > wrapped core / 3rd party components > ribbon galleries 25
  • 26. Hosting command buttons JRibbonBand clipboardBand = new JRibbonBand( “Clipboard”, ...); JCommandButton pasteButton = new JCommandButton( “Paste”, pasteIcon); pasteButton.setCommandButtonKind( CommandButtonKind.ACTION_AND_POPUP_MAIN_ACTION); pasteButton.setPopupCallback(...); clipboardBand.addCommandButton(pasteButton, RibbonElementPriority.TOP); ... clipboardBand.addCommandButton(cutButton, RibbonElementPriority.MEDIUM); 26
  • 27. Hosting core and 3rd party controls Simple wrapping Wrapping with icon and caption Wrapped components spanning multiple rows 27
  • 28. Ribbon galleries Hosted gallery Expanded gallery Expanded gallery shown in a popup scrolled down Hosted gallery scrolled down 28
  • 29. Groups in ribbon bands Two unnamed groups with command buttons Three unnamed groups with command buttons Two named groups with wrapped core components 29
  • 30. Ribbon tasks Ribbon task Ribbon task Ribbon task Ribbon task Ribbon task new RibbonTask(title, AbstractRibbonBand... bands) JRibbon.addTask(RibbonTask) 30
  • 31. Contextual task groups Contextual ribbon task group Contextual ribbon task group Contextual ribbon task Selected contextual ribbon task 31
  • 34. Application menu Primary Secondary menu group menu group Footer JRibbon.setApplicationMenu(RibbonApplicationMenu) 34
  • 35. Taskbar panel Taskbar panel JRibbon.addTaskbarComponent(Component) 35
  • 36. Tooltips / key tips demo 36
  • 37. Rich tooltips Tooltip for the action area Displayed below the ribbon Tooltip for the popup area 37
  • 38. Rich tooltips Tooltip for wrapped core component Multiple paragraphs Tooltip for taskbar Displayed below component the taskbar 38
  • 39. Rich tooltips Tooltip for application menu button Footer section and images 39
  • 40. Key tips Press Alt or Showing key Showing key tips F10 for the tips of the of the selected top chain selected task button P V Esc Esc 40
  • 43. Ribbon resizing, collapsing and scrolling Scrolling tasks Scrolling bands Expanding the collapsed ribbon band 43
  • 44. Minimized mode JRibbon.setMinimized(true) User double-clicking a task button User pressing Ctrl+F1 User clicking a task button 44
  • 45. Big features recap > Ribbon regular and flow bands > Ribbon galleries > Ribbon tasks and contextual task groups > Application menu button and taskbar panel > Resizing, collapsing and scrolling > Rich tooltips and key tips > Minimized mode 45
  • 46. Under the hood > Visual consistency across LAFs > org.jvnet.flamingo.common.ui.BasicCommandButtonUI.paintB uttonBackground > Key tips > org.jvnet.flamingo.ribbon.JRibbonFrame.KeyTipLayer > Placing content in the title pane > org.jvnet.substance.flamingo.ribbon.ui.SubstanceRibbonFr ameTitlePane > More in the code… 46
  • 47. What is missing - small > Hosting small buttons in galleries > Resizing popup panels > Navigating with keyboard (arrows, tabs) > Dragging controls to the taskbar panel > Hosting taskbar panel below the ribbon 47
  • 48. What is missing - medium > Right-to-left support > High DPI support 48
  • 49. Potentially useful > XML-driven ribbon content > SWT version > World domination 49
  • 50. Try it now! http://flamingo.dev.java.net 50