SlideShare a Scribd company logo
<Insert Picture Here>




 Empowering Multi-tasking with an ADF UI Powerhouse

Steven Davelaar twitter:@stevendavelaar
Technical Director blog: blogs.oracle.com/jheadstart
Oracle Consulting
Agenda


• Multi-tasking
   • Options with ADF applications
   • Using UIShell with dynamic tabs
   • Additional usability requirements
• UIShell with dynamic tabs implementation
• Implementing additional requirements




                                             2
Multi-tasking options with ADF applications


• Start new browser instance
  • End user easily looses overview
• Open new browser tab within same browser instance
  • ADF tabs mixes with non-ADF tabs
  • ADF session shared accross tabs
• Open new tab within ADF application
  • Options to meet additional requirements




                                                      3
Multi-tasking and related usability requirements (1)


• Open new tab in various ways
  •   Using the menu
  •   Using global quick search
  •   From within other tabs
  •   Conditionally: check whether tab is already open
• Close tab in various ways
  • Use close tab icon on tab label
  • Use close tab button inside tab region
  • Auto-close when task is completed




                                                         4
Multi-tasking and related usability requirements (2)


• Transaction handling
  • Tabs are independent tasks -> independent transactions
  • Visual indicator that tab contains pending changes
  • Warning when closing tab with pending changes
• Miscelleaneous
  •   Update browser title based on selected tab
  •   Initially displayed tabs
  •   Prevent tabs from being closed manually
  •   Set maximum number of open tabs
  •   Update tab label based on current data inside tab




                                                             5
Dynamic Tabs UI Shell Functional UI Pattern




                                              6
UIShell – Dynamic Tabs with Tree Menu




                                        7
Dynamic Tabs with Tree Menu - Implementation

 UI Shell – Page Template
                            Dynamic Tabs




XMLMenuModel Tree            ADF Region



                                               8
UIShell Page




               9
Tree Menu – XMLMenuModel




                           10
Tree Menu – MenuModel Managed Bean




                                     11
Dynamic Tabs Page Template – Tree Menu




                                         12
Adding and Selecting Dynamic Tabs


• Create DynTab class and managed beans
• Create DynTabManager class and managed bean
• Create custom TabsNavigationHandler
     • Hides complexity of adding/selecting tabs




                                                   13
Create DynTab class and managed beans


• DynTab class holds all info about a dynamic tab
      • Tab title
      • Tab unique identifier
      • Task flow ID
      • Task flow parameters (optional)
• For each menu item, a managed bean using DynTab
  class is defined




                                                    14
Maintain Jobs DynTab managed bean


• DynTab class holds all info about a dynamic tab
      • Tab title, Tab unique identifier, Task flow ID and
        parameters
• For each menu item, a managed bean using DynTab
  class is defined




                                                             15
DynTabManager class and managed bean


• DynTabManager class controls tab behavior
     • Housekeeping of open tabs and current tab
     • Launch tab: add new or select existing tab
     • Remove tab
     • Mark current tab dirty




                                                    16
Navigating Using Dynamic Tabs


• Create custom TabNavigationHandler
  – configure in faces-config.xml
  – Provides standard JSF navigation through superclass
  – Allows setting adding/selecting dynamic tab: tab name
    specified after navigation outcome, separated by colon




                                                             17
TabNavigationHandler




                       18
Navigating Using Dynamic Tabs


• Action ”uishell:Jobs”
  – navigates to UIShell.jsf page (if needed)
  – Call launchTab with tabName “Jobs” on DynTabManager
  – TaskFlowId and params picked up from JobsDynTab bean




                                                           19
DynTabManager – Launch tab




                             20
DynTabManager – Add tab




                          21
Dynamic Tabs with Tree Menu - Implementation

 UI Shell – Page Template
                            Dynamic Tabs




XMLMenuModel Tree            ADF Region



                                               22
Dynamic Tabs Page Template – Dynamic Tabs




                                            23
Dynamic Tabs Declarative Component




                                     24
UIShell Page Definition – MultiTaskFlow binding
new in Jdev 11.1.2




                                                  25
JDev 11.1.1.x Implementation

• No MultiRegion executable
• Cannot use af:region inside af:forEach tag
• Page Template Page Definition with 15 pre-defined
  taskflow bindings
• DynamicTabs declarative component defines 15
  regions, only one rendered at a time




                                                      26
Implementing some Additional Requirements

•   Tabs should have independent transactions
•   Pending changes warning when closing tab
•   Opening new tab from within other tab
•   Opening new tab from global search
•   Auto-closing a tab
•   Initially displayed tabs
•   Update browser window title




                                                27
Data Control Scope and Transactions

• Data Control Scope
  – Shared: all TF’s share same app module instance
  – Isolated: Each TF instance has own app module instance
• Transaction Scope
  – With isolated data control scope each TF has own transaction
  – With shared data control scope, transaction is shared by
    default, but can be changed using Transaction setting




                                                                   28
Marking a Tab Dirty – Pending Changes Alert

• Pass DynTabManager as task flow parameter
• Create custom page controller class and implement
  refreshRegion method
• get the data control through binding container, check
  for changes and mark current tab dirty using
  DynTabManager
• Configure custom page controller class in page
  definition
• Show dialog when closing dirty tab
• Show dirty tab label in italics



                                                          29
Pass DynTabManager as Task Flow Parameter




                                            30
Custom Page Controller Class




                               31
Custom Page Controller Class – setTabDirtyState




                                                  32
Alert for Pending Changes




                            33
DynTabManager Remove Tab




                           34
Showing dirty tab label in italics

• Currently not possible to change styling of an
  individual tab within panelTabbed component (ER
  logged)
• Work around
  • Use navigation pane to render tabs
  • Use separate af:forEach loop to render the regions




                                                         35
Showing dirty tab label in italics




                                     36
Opening a Tab From Within Other Tab




• Set up EditEmployee task flow for deeplinking
• Pass TabManager instance as task flow parameter
• Define Edit EmployeeDynTab managed bean inside
  “Search Employees” task flow
• Set commandLink action to “uishell:EditEmployee”
• Use setActionListener on commandLink to pass
  parameters

                                                     37
Opening a Tab From Within Other Tab




                                      38
Opening a Tab From Global Search




• Set up EditEmployee task flow for quick search query
• Set commandLink action to “uishell:EditEmployee”
• Use setActionListener on commandLink to pass
  parameters
• Use subform and default command to auto submit
  when tabbing out search field

                                                         39
Opening a Tab From Global Search




                                   40
Auto-closing a tab




                     41
Initially Displayed Tabs




                           42
Update browser window/tab title

• Add method to DynTabManager, called when
  selecting another tab.




                                             43
Summary

• Use dynamic tabs with UIShell to support multi-
  tasking
• Set up infrastructure classes and beans to use ADF
  regions as dynamic tabs in UIShell
• Create custom tabs navigation handler to hide
  complexity for developers
• Think carefully about data control scope and
  transaction settings
• Create custom page controller for marking tab dirty
• Pass TabManager instance as task flow parameter for
  “inside-out” tab handling



                                                        44
Next steps




• Download sample applications for JDev 11.1.2 and
  11.1.1.4 from JHeadstart blog
• Follow-on session
  • Building Highly Reuseable ADF Task Flows
    Wednesday 10.15-11.15
    Mariott Marquis Golden Gate A




                                                     45
46

More Related Content

Similar to Steven Davelaar - Dynamic tabs

Client side modularization for modern web applications
Client side modularization for modern web applicationsClient side modularization for modern web applications
Client side modularization for modern web applications
Remus Langu
 
Ms 302(Harman S. Gahir)
Ms 302(Harman S. Gahir)Ms 302(Harman S. Gahir)
Ms 302(Harman S. Gahir)Harman Gahir
 
Drupal case study: Behind the scenes of website of University of Tartu
Drupal case study: Behind the scenes of website of University of TartuDrupal case study: Behind the scenes of website of University of Tartu
Drupal case study: Behind the scenes of website of University of Tartu
René Lasseron
 
Solving the DB2 LUW Administration Dilemma
Solving the DB2 LUW Administration DilemmaSolving the DB2 LUW Administration Dilemma
Solving the DB2 LUW Administration Dilemma
Randy Goering
 
Solving the DB2 LUW Administration Dilemma
Solving the DB2 LUW Administration DilemmaSolving the DB2 LUW Administration Dilemma
Solving the DB2 LUW Administration Dilemma
Randy Goering
 
Ad107 - Enhance Your Existing Applications with XPages
Ad107 - Enhance Your Existing Applications with XPagesAd107 - Enhance Your Existing Applications with XPages
Ad107 - Enhance Your Existing Applications with XPages
ddrschiw
 
Drupal theming - a practical approach (European Drupal Days 2015)
Drupal theming - a practical approach (European Drupal Days 2015)Drupal theming - a practical approach (European Drupal Days 2015)
Drupal theming - a practical approach (European Drupal Days 2015)
Eugenio Minardi
 
Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2
Anil Sagar
 
XPages Application Layout Control - TLCC March, 2014 Webinar
XPages Application Layout Control - TLCC March, 2014 WebinarXPages Application Layout Control - TLCC March, 2014 Webinar
XPages Application Layout Control - TLCC March, 2014 Webinar
Howard Greenberg
 
Application Layout Control
Application Layout ControlApplication Layout Control
Application Layout Control
Teamstudio
 
Oracle 12c Launch Event 01 JDeveloper Jonathan Damen and Marcel Oldenkamp
Oracle 12c Launch Event 01 JDeveloper Jonathan Damen and Marcel OldenkampOracle 12c Launch Event 01 JDeveloper Jonathan Damen and Marcel Oldenkamp
Oracle 12c Launch Event 01 JDeveloper Jonathan Damen and Marcel Oldenkamp
Getting value from IoT, Integration and Data Analytics
 
BlackBerry Basic
BlackBerry BasicBlackBerry Basic
BlackBerry BasicDuy Do Phan
 
SAP WEBDYNPRO ABAP ONLINE TRAINING
SAP WEBDYNPRO ABAP ONLINE TRAININGSAP WEBDYNPRO ABAP ONLINE TRAINING
SAP WEBDYNPRO ABAP ONLINE TRAINING
softnsol anusha
 
td_mxc_rubyrails_shin
td_mxc_rubyrails_shintd_mxc_rubyrails_shin
td_mxc_rubyrails_shintutorialsruby
 
td_mxc_rubyrails_shin
td_mxc_rubyrails_shintd_mxc_rubyrails_shin
td_mxc_rubyrails_shintutorialsruby
 
Weblogic Console Customization
Weblogic Console CustomizationWeblogic Console Customization
Weblogic Console Customization
Peter van Nes
 
Oracle Apps - Forms
Oracle Apps - FormsOracle Apps - Forms
Oracle Apps - Forms
Bhaskara Reddy Sannapureddy
 

Similar to Steven Davelaar - Dynamic tabs (20)

Unit4wt
Unit4wtUnit4wt
Unit4wt
 
Client side modularization for modern web applications
Client side modularization for modern web applicationsClient side modularization for modern web applications
Client side modularization for modern web applications
 
Ms 302(Harman S. Gahir)
Ms 302(Harman S. Gahir)Ms 302(Harman S. Gahir)
Ms 302(Harman S. Gahir)
 
Unit4wt
Unit4wtUnit4wt
Unit4wt
 
Web dynpro
Web dynproWeb dynpro
Web dynpro
 
Drupal case study: Behind the scenes of website of University of Tartu
Drupal case study: Behind the scenes of website of University of TartuDrupal case study: Behind the scenes of website of University of Tartu
Drupal case study: Behind the scenes of website of University of Tartu
 
Solving the DB2 LUW Administration Dilemma
Solving the DB2 LUW Administration DilemmaSolving the DB2 LUW Administration Dilemma
Solving the DB2 LUW Administration Dilemma
 
Solving the DB2 LUW Administration Dilemma
Solving the DB2 LUW Administration DilemmaSolving the DB2 LUW Administration Dilemma
Solving the DB2 LUW Administration Dilemma
 
Ad107 - Enhance Your Existing Applications with XPages
Ad107 - Enhance Your Existing Applications with XPagesAd107 - Enhance Your Existing Applications with XPages
Ad107 - Enhance Your Existing Applications with XPages
 
Drupal theming - a practical approach (European Drupal Days 2015)
Drupal theming - a practical approach (European Drupal Days 2015)Drupal theming - a practical approach (European Drupal Days 2015)
Drupal theming - a practical approach (European Drupal Days 2015)
 
Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2
 
XPages Application Layout Control - TLCC March, 2014 Webinar
XPages Application Layout Control - TLCC March, 2014 WebinarXPages Application Layout Control - TLCC March, 2014 Webinar
XPages Application Layout Control - TLCC March, 2014 Webinar
 
Application Layout Control
Application Layout ControlApplication Layout Control
Application Layout Control
 
Oracle 12c Launch Event 01 JDeveloper Jonathan Damen and Marcel Oldenkamp
Oracle 12c Launch Event 01 JDeveloper Jonathan Damen and Marcel OldenkampOracle 12c Launch Event 01 JDeveloper Jonathan Damen and Marcel Oldenkamp
Oracle 12c Launch Event 01 JDeveloper Jonathan Damen and Marcel Oldenkamp
 
BlackBerry Basic
BlackBerry BasicBlackBerry Basic
BlackBerry Basic
 
SAP WEBDYNPRO ABAP ONLINE TRAINING
SAP WEBDYNPRO ABAP ONLINE TRAININGSAP WEBDYNPRO ABAP ONLINE TRAINING
SAP WEBDYNPRO ABAP ONLINE TRAINING
 
td_mxc_rubyrails_shin
td_mxc_rubyrails_shintd_mxc_rubyrails_shin
td_mxc_rubyrails_shin
 
td_mxc_rubyrails_shin
td_mxc_rubyrails_shintd_mxc_rubyrails_shin
td_mxc_rubyrails_shin
 
Weblogic Console Customization
Weblogic Console CustomizationWeblogic Console Customization
Weblogic Console Customization
 
Oracle Apps - Forms
Oracle Apps - FormsOracle Apps - Forms
Oracle Apps - Forms
 

More from Getting value from IoT, Integration and Data Analytics

AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...
AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...
AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...
Getting value from IoT, Integration and Data Analytics
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...
Getting value from IoT, Integration and Data Analytics
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaSAMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
Getting value from IoT, Integration and Data Analytics
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: DataAMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
Getting value from IoT, Integration and Data Analytics
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure
Getting value from IoT, Integration and Data Analytics
 
10 tips voor verbetering in je Linkedin profiel
10 tips voor verbetering in je Linkedin profiel10 tips voor verbetering in je Linkedin profiel
10 tips voor verbetering in je Linkedin profiel
Getting value from IoT, Integration and Data Analytics
 
Iot in de zorg the next step - fit for purpose
Iot in de zorg   the next step - fit for purpose Iot in de zorg   the next step - fit for purpose
Iot in de zorg the next step - fit for purpose
Getting value from IoT, Integration and Data Analytics
 
Iot overview .. Best practices and lessons learned by Conclusion Conenct
Iot overview .. Best practices and lessons learned by Conclusion Conenct Iot overview .. Best practices and lessons learned by Conclusion Conenct
Iot overview .. Best practices and lessons learned by Conclusion Conenct
Getting value from IoT, Integration and Data Analytics
 
IoT Fit for purpose - how to be successful in IOT Conclusion Connect
IoT Fit for purpose - how to be successful in IOT Conclusion Connect IoT Fit for purpose - how to be successful in IOT Conclusion Connect
IoT Fit for purpose - how to be successful in IOT Conclusion Connect
Getting value from IoT, Integration and Data Analytics
 
Industry and IOT Overview of protocols and best practices Conclusion Connect
Industry and IOT Overview of protocols and best practices  Conclusion ConnectIndustry and IOT Overview of protocols and best practices  Conclusion Connect
Industry and IOT Overview of protocols and best practices Conclusion Connect
Getting value from IoT, Integration and Data Analytics
 
IoT practical case using the people counter sensing traffic density build usi...
IoT practical case using the people counter sensing traffic density build usi...IoT practical case using the people counter sensing traffic density build usi...
IoT practical case using the people counter sensing traffic density build usi...
Getting value from IoT, Integration and Data Analytics
 
R introduction decision_trees
R introduction decision_treesR introduction decision_trees
Introduction overviewmachinelearning sig Door Lucas Jellema
Introduction overviewmachinelearning sig Door Lucas JellemaIntroduction overviewmachinelearning sig Door Lucas Jellema
Introduction overviewmachinelearning sig Door Lucas Jellema
Getting value from IoT, Integration and Data Analytics
 
IoT and the Future of work
IoT and the Future of work IoT and the Future of work
Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)
Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)
Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)
Getting value from IoT, Integration and Data Analytics
 
Ethereum smart contracts - door Peter Reitsma
Ethereum smart contracts - door Peter ReitsmaEthereum smart contracts - door Peter Reitsma
Ethereum smart contracts - door Peter Reitsma
Getting value from IoT, Integration and Data Analytics
 
Blockchain - Techniek en usecases door Robert van Molken - AMIS - Conclusion
Blockchain - Techniek en usecases door Robert van Molken - AMIS - ConclusionBlockchain - Techniek en usecases door Robert van Molken - AMIS - Conclusion
Blockchain - Techniek en usecases door Robert van Molken - AMIS - Conclusion
Getting value from IoT, Integration and Data Analytics
 
kennissessie blockchain - Wat is Blockchain en smart contracts @Conclusion
kennissessie blockchain -  Wat is Blockchain en smart contracts @Conclusion kennissessie blockchain -  Wat is Blockchain en smart contracts @Conclusion
kennissessie blockchain - Wat is Blockchain en smart contracts @Conclusion
Getting value from IoT, Integration and Data Analytics
 
Internet of Things propositie - Enterprise IOT - AMIS - Conclusion
Internet of Things propositie - Enterprise IOT - AMIS - Conclusion Internet of Things propositie - Enterprise IOT - AMIS - Conclusion
Internet of Things propositie - Enterprise IOT - AMIS - Conclusion
Getting value from IoT, Integration and Data Analytics
 
Omc AMIS evenement 26012017 Dennis van Soest
Omc AMIS evenement 26012017 Dennis van SoestOmc AMIS evenement 26012017 Dennis van Soest
Omc AMIS evenement 26012017 Dennis van Soest
Getting value from IoT, Integration and Data Analytics
 

More from Getting value from IoT, Integration and Data Analytics (20)

AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...
AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...
AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaSAMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: DataAMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure
 
10 tips voor verbetering in je Linkedin profiel
10 tips voor verbetering in je Linkedin profiel10 tips voor verbetering in je Linkedin profiel
10 tips voor verbetering in je Linkedin profiel
 
Iot in de zorg the next step - fit for purpose
Iot in de zorg   the next step - fit for purpose Iot in de zorg   the next step - fit for purpose
Iot in de zorg the next step - fit for purpose
 
Iot overview .. Best practices and lessons learned by Conclusion Conenct
Iot overview .. Best practices and lessons learned by Conclusion Conenct Iot overview .. Best practices and lessons learned by Conclusion Conenct
Iot overview .. Best practices and lessons learned by Conclusion Conenct
 
IoT Fit for purpose - how to be successful in IOT Conclusion Connect
IoT Fit for purpose - how to be successful in IOT Conclusion Connect IoT Fit for purpose - how to be successful in IOT Conclusion Connect
IoT Fit for purpose - how to be successful in IOT Conclusion Connect
 
Industry and IOT Overview of protocols and best practices Conclusion Connect
Industry and IOT Overview of protocols and best practices  Conclusion ConnectIndustry and IOT Overview of protocols and best practices  Conclusion Connect
Industry and IOT Overview of protocols and best practices Conclusion Connect
 
IoT practical case using the people counter sensing traffic density build usi...
IoT practical case using the people counter sensing traffic density build usi...IoT practical case using the people counter sensing traffic density build usi...
IoT practical case using the people counter sensing traffic density build usi...
 
R introduction decision_trees
R introduction decision_treesR introduction decision_trees
R introduction decision_trees
 
Introduction overviewmachinelearning sig Door Lucas Jellema
Introduction overviewmachinelearning sig Door Lucas JellemaIntroduction overviewmachinelearning sig Door Lucas Jellema
Introduction overviewmachinelearning sig Door Lucas Jellema
 
IoT and the Future of work
IoT and the Future of work IoT and the Future of work
IoT and the Future of work
 
Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)
Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)
Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)
 
Ethereum smart contracts - door Peter Reitsma
Ethereum smart contracts - door Peter ReitsmaEthereum smart contracts - door Peter Reitsma
Ethereum smart contracts - door Peter Reitsma
 
Blockchain - Techniek en usecases door Robert van Molken - AMIS - Conclusion
Blockchain - Techniek en usecases door Robert van Molken - AMIS - ConclusionBlockchain - Techniek en usecases door Robert van Molken - AMIS - Conclusion
Blockchain - Techniek en usecases door Robert van Molken - AMIS - Conclusion
 
kennissessie blockchain - Wat is Blockchain en smart contracts @Conclusion
kennissessie blockchain -  Wat is Blockchain en smart contracts @Conclusion kennissessie blockchain -  Wat is Blockchain en smart contracts @Conclusion
kennissessie blockchain - Wat is Blockchain en smart contracts @Conclusion
 
Internet of Things propositie - Enterprise IOT - AMIS - Conclusion
Internet of Things propositie - Enterprise IOT - AMIS - Conclusion Internet of Things propositie - Enterprise IOT - AMIS - Conclusion
Internet of Things propositie - Enterprise IOT - AMIS - Conclusion
 
Omc AMIS evenement 26012017 Dennis van Soest
Omc AMIS evenement 26012017 Dennis van SoestOmc AMIS evenement 26012017 Dennis van Soest
Omc AMIS evenement 26012017 Dennis van Soest
 

Recently uploaded

zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
Jen Stirrup
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
Globus
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 

Recently uploaded (20)

zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 

Steven Davelaar - Dynamic tabs

  • 1. <Insert Picture Here> Empowering Multi-tasking with an ADF UI Powerhouse Steven Davelaar twitter:@stevendavelaar Technical Director blog: blogs.oracle.com/jheadstart Oracle Consulting
  • 2. Agenda • Multi-tasking • Options with ADF applications • Using UIShell with dynamic tabs • Additional usability requirements • UIShell with dynamic tabs implementation • Implementing additional requirements 2
  • 3. Multi-tasking options with ADF applications • Start new browser instance • End user easily looses overview • Open new browser tab within same browser instance • ADF tabs mixes with non-ADF tabs • ADF session shared accross tabs • Open new tab within ADF application • Options to meet additional requirements 3
  • 4. Multi-tasking and related usability requirements (1) • Open new tab in various ways • Using the menu • Using global quick search • From within other tabs • Conditionally: check whether tab is already open • Close tab in various ways • Use close tab icon on tab label • Use close tab button inside tab region • Auto-close when task is completed 4
  • 5. Multi-tasking and related usability requirements (2) • Transaction handling • Tabs are independent tasks -> independent transactions • Visual indicator that tab contains pending changes • Warning when closing tab with pending changes • Miscelleaneous • Update browser title based on selected tab • Initially displayed tabs • Prevent tabs from being closed manually • Set maximum number of open tabs • Update tab label based on current data inside tab 5
  • 6. Dynamic Tabs UI Shell Functional UI Pattern 6
  • 7. UIShell – Dynamic Tabs with Tree Menu 7
  • 8. Dynamic Tabs with Tree Menu - Implementation UI Shell – Page Template Dynamic Tabs XMLMenuModel Tree ADF Region 8
  • 10. Tree Menu – XMLMenuModel 10
  • 11. Tree Menu – MenuModel Managed Bean 11
  • 12. Dynamic Tabs Page Template – Tree Menu 12
  • 13. Adding and Selecting Dynamic Tabs • Create DynTab class and managed beans • Create DynTabManager class and managed bean • Create custom TabsNavigationHandler • Hides complexity of adding/selecting tabs 13
  • 14. Create DynTab class and managed beans • DynTab class holds all info about a dynamic tab • Tab title • Tab unique identifier • Task flow ID • Task flow parameters (optional) • For each menu item, a managed bean using DynTab class is defined 14
  • 15. Maintain Jobs DynTab managed bean • DynTab class holds all info about a dynamic tab • Tab title, Tab unique identifier, Task flow ID and parameters • For each menu item, a managed bean using DynTab class is defined 15
  • 16. DynTabManager class and managed bean • DynTabManager class controls tab behavior • Housekeeping of open tabs and current tab • Launch tab: add new or select existing tab • Remove tab • Mark current tab dirty 16
  • 17. Navigating Using Dynamic Tabs • Create custom TabNavigationHandler – configure in faces-config.xml – Provides standard JSF navigation through superclass – Allows setting adding/selecting dynamic tab: tab name specified after navigation outcome, separated by colon 17
  • 19. Navigating Using Dynamic Tabs • Action ”uishell:Jobs” – navigates to UIShell.jsf page (if needed) – Call launchTab with tabName “Jobs” on DynTabManager – TaskFlowId and params picked up from JobsDynTab bean 19
  • 22. Dynamic Tabs with Tree Menu - Implementation UI Shell – Page Template Dynamic Tabs XMLMenuModel Tree ADF Region 22
  • 23. Dynamic Tabs Page Template – Dynamic Tabs 23
  • 24. Dynamic Tabs Declarative Component 24
  • 25. UIShell Page Definition – MultiTaskFlow binding new in Jdev 11.1.2 25
  • 26. JDev 11.1.1.x Implementation • No MultiRegion executable • Cannot use af:region inside af:forEach tag • Page Template Page Definition with 15 pre-defined taskflow bindings • DynamicTabs declarative component defines 15 regions, only one rendered at a time 26
  • 27. Implementing some Additional Requirements • Tabs should have independent transactions • Pending changes warning when closing tab • Opening new tab from within other tab • Opening new tab from global search • Auto-closing a tab • Initially displayed tabs • Update browser window title 27
  • 28. Data Control Scope and Transactions • Data Control Scope – Shared: all TF’s share same app module instance – Isolated: Each TF instance has own app module instance • Transaction Scope – With isolated data control scope each TF has own transaction – With shared data control scope, transaction is shared by default, but can be changed using Transaction setting 28
  • 29. Marking a Tab Dirty – Pending Changes Alert • Pass DynTabManager as task flow parameter • Create custom page controller class and implement refreshRegion method • get the data control through binding container, check for changes and mark current tab dirty using DynTabManager • Configure custom page controller class in page definition • Show dialog when closing dirty tab • Show dirty tab label in italics 29
  • 30. Pass DynTabManager as Task Flow Parameter 30
  • 32. Custom Page Controller Class – setTabDirtyState 32
  • 33. Alert for Pending Changes 33
  • 35. Showing dirty tab label in italics • Currently not possible to change styling of an individual tab within panelTabbed component (ER logged) • Work around • Use navigation pane to render tabs • Use separate af:forEach loop to render the regions 35
  • 36. Showing dirty tab label in italics 36
  • 37. Opening a Tab From Within Other Tab • Set up EditEmployee task flow for deeplinking • Pass TabManager instance as task flow parameter • Define Edit EmployeeDynTab managed bean inside “Search Employees” task flow • Set commandLink action to “uishell:EditEmployee” • Use setActionListener on commandLink to pass parameters 37
  • 38. Opening a Tab From Within Other Tab 38
  • 39. Opening a Tab From Global Search • Set up EditEmployee task flow for quick search query • Set commandLink action to “uishell:EditEmployee” • Use setActionListener on commandLink to pass parameters • Use subform and default command to auto submit when tabbing out search field 39
  • 40. Opening a Tab From Global Search 40
  • 43. Update browser window/tab title • Add method to DynTabManager, called when selecting another tab. 43
  • 44. Summary • Use dynamic tabs with UIShell to support multi- tasking • Set up infrastructure classes and beans to use ADF regions as dynamic tabs in UIShell • Create custom tabs navigation handler to hide complexity for developers • Think carefully about data control scope and transaction settings • Create custom page controller for marking tab dirty • Pass TabManager instance as task flow parameter for “inside-out” tab handling 44
  • 45. Next steps • Download sample applications for JDev 11.1.2 and 11.1.1.4 from JHeadstart blog • Follow-on session • Building Highly Reuseable ADF Task Flows Wednesday 10.15-11.15 Mariott Marquis Golden Gate A 45
  • 46. 46