SlideShare une entreprise Scribd logo
1  sur  63
Télécharger pour lire hors ligne
Luc Bors, june 2013, ODTUG KScope 2013 New Orleans
Tips and Tricks for Creating Complex
Layouts with Oracle ADF Faces
Goodbye Nightmare
Who Am I
• Luc Bors
• Principal Consultant
• AMIS Nieuwegein Netherlands
• Friends of Oracle & Java
• 5 Oracle ACE(D)
• Oracle Partner
Just a Quote…
Let's face it: With ADF Faces rich client, layout ……..
once you are a layout master, all bow before you, but it's more of an art than a
science, and it is often, in fact, way too difficult to achieve what should
(apparently) be a pretty simple.
Back to the drawingboard
Visio Stencils
• http://www.oracle.com/technetwork/indexes/samplecode/jdeveloper-adf-
sample-522118.html
ADF Layout Containers
The PanelFormLayout
• Organize (input) components in a form layout
– Aligning labels and fields in
rows and columns
– attribute labelAlignment to
display labels above the fields
The PanelFormLayout
• Use the ‘Rows’ attribute
• Use the ‘MaxColumns’ attribute
The PanelStretchLayout
• Stretches its components to fill available space
– Top and bottom facet can be set to fixed height (or auto)
– Start and end facet can be set to fixed width
– Facets with no content
do not render
Demo
The PanelSplitter
• To create resizable panes
– That stretch their content
• panelSplitter has two
facets: first and second
– Content for the panes is
provided in the facets
• Orientation horizontal or vertical
• Can be collapsible
• Position can be fixed
• Can be nested
• Collapse and resize events can be listened to
panelAccordion
• The panelAccordion displays one or more collapsible/expandable panes
in a vertically layout
– Multiple panes can be expanded at once if discloseMany=true
• discloseNone=true means
that all panes can be
collapsed
– Overflow icon is shown
to scroll to panes that
do not fit in the area
– Expanding & Collapsing
panes is a client side
operation
– Accordions can be nested
PanelTabbedLayout
• The panelTabbed displays one or more tabbed panes
– panelTabbed has position attribute
(tab can be shown at the top,
at the bottom or both)
• The content of a tab pane is
in a showDetailItem
– A tab has attributes for title, icon, disabled,
• panelTabbed can be nested
• Overflow icon and popup are
shown when the tabs do not
fit next to each other
Flowing and Stretching
• Setting Background color can help you
understand what is actually happening.
• Makes you recognize the components at
runtime
Demo
Be Aware !!
Stretchable ? Stretches ?
PanelStretchLayout YES YES
PanelSplitter YES YES
PanelCollection YES YES
PanelGroupLayout
(scroll, vertital)
YES NO
PanelGroupLayout
(default, horizontal)
NO NO
PanelFromLayout NO NO
PanelBorderLayout NO NO
PanelDashBoard YES YES
(Inside a grid)
PanelTabbed YES YES
(StretchChildren = first)
JDeveloper Can Help You
Quick Start Layouts
Predefined Layouts
Even better…
Colors rule !
The ADF Table
• Layout and the ADF Table
– How
– What
– When
A Common ADF Layout issue
• PanelGroupLayout does not Stretch it’s
children
Solution
• Remove PGL
– This does the trick
• Surround with
PanelCollection
– Very convenient
The (almost) stretched table
Using the column
• Consider Column Stretching
– none (default): Gives optimal performance
– blank: Inserts an empty blank column that is stretched; use this so that the row’s
background colors will span the entire width of the table
– last: Stretches the last column to fill up any unused space inside the viewport
– column:<id>: Stretches a specified column; use the ID of the column that you want
to stretch (requires that you explicitly set the column’s ID property—the drop-down
list for the property displays all columns whose ID has been set)
– multiple When the "multiple" option is used you can set the widths in the columns
(non-group) to be percentages.
The stretched table
Demo
Ready ?
ScrollBar ScrollBar Everywhere
• Never place a scrolling
panelGroupLayout inside of another
scrolling panelGroupLayout since
users do not like nested scroll bars
And now they are gone ….
• I Know what to do:
Lets use layout vertical
on the outer PGL………
…… and they are all gone….
This works best
• You learned earlier that:
– PanelGroupLayout does not Stretch it’s children
• Remove PGL
• Stretch via Styleclass
– AfStretchWidth
Now What …..
The PanelformLayout
• Can we create a properly aligned form ?
• Having alignment of fields on the left ?
• Having alignment of fields on the right ?
• Having First Name and Last Name in one line ?
• Look at the default layout for such a form…….
Step 1
• Bring First Name and Last Name into an aggregate Container
– use a panelLabelAndMessage component which is designed specifically for this
purpose of allowing several logical components, or components without their own
label property to be correctly laid out in a panelFormLayout.
Step 2
• Alignment Components For First Name and Last Name
– By default, the panelLabelAndMessage will lay out its children vertically. In this case
we want the components side-by-side. So simply use a horizontal panelGroupLayout
to align the two fields
Step 3 ?
• Remove Labels
Step 3 !
• Remove Labels
– The label is defined by the panelLabelAndMessage.
– set the simple property to “true” on each of the child components.
– also set the for property on the parent panelLabelAndMessage to the relevant child
component id. This will endure that error messages are correctly displayed.
Step 4
• Ensure Right Alignment
– Components such as the selectOneChoice do not stretch and are controlled by the
size of their data
– You will have to control the size manually using styles.
– The contentStyle property is used to control just the width of the drop down box itself
and therefore is the property to use. Unfortunately getting the exact width, is a matter
of trial and error.
– For precise alignment that can survive zooming by the user, you may have to set
explicit sizes in em’s for all the components in the form, or use the fieldWidth and
LabelWidth properties of the panelFormLayout.
And Finally……The Result
Separators and Spacers
• Default behavior • Spacers and Separators
Now What …..
Forget (almost) all Of the
Above….
The PanelGridLayout
• The panelGridLayout component is a layout container component that
– uses one or more gridRow components to describe the rows of a grid layout
structure.
– Each row defines a height and margins.
– Each gridRow uses one or more gridCell components to describe the cells for
columns in that row of the grid layout structure.
– Each cell defines width, margins, column span, row span, horizontal alignment, and
vertical alignment
How does it work ?
Bye Bye Spacers & Separators
How to make this layout ?
How we Used to do it
This is What we do Now
Creating OTN with ADF
Demo
What about Outlook ?
Demo
Outlook in ADF
Summary tips
• Work with colors
– Makes it clear what is going on
• Use as little layout containers as possible.
– The pages is smaller and faster
• Reduce the number of components that need to stretch
– The pages are faster
• Use the quick start layouts
– Saves you time
Summary tips
• Start with strechtable outer frame
– Such as…PSL, PSP,
• In there, have the flowing islands.
• Never try to stretch something vertically in a flowing island
– Inconsistent results accross browsers
– Also need to consider the case where you build pagefragments that can be reused in
other pages.
– Styling only via Styleclass.
• Use the Developerguide or create your own Cheat Sheet !
• Benefit from PanelGridLayout !!!
– 11.1.1.7 or 11.1.2.2+
And do not ….
• Do Not use RAW HTML in the pages
• Do Not use inlinestyle use skinning
• Do Not specify height with %
– Might result in multiple vertical scrollbars
• Do not try to stretch a none stretchable component by setting width =
100%
– Surround with stretchable componenent that also stretches its children
– Or use AFStretchWidth styleClass
Resources
• http://www.oracle.com/webfolder/ux/middleware/richclient/index.html
Resources
• http://jdevadf.oracle.com/faces11117/faces/index.jspx
Questions ….. Answers….
Luc Bors, AMIS, The Netherlands
Luc.Bors@amis.nl
LucBors@gmail.com
Follow me on : @lucb_

Contenu connexe

Tendances

Introduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsIntroduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsStefano Celentano
 
Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAshokkumar T A
 
Grails Simple Login
Grails Simple LoginGrails Simple Login
Grails Simple Loginmoniguna
 
Cascading style sheet
Cascading style sheetCascading style sheet
Cascading style sheetMichael Jhon
 
AEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser CachingAEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser CachingAndrew Khoury
 
Intro to Flexbox - A Magical CSS Property
Intro to Flexbox - A Magical CSS PropertyIntro to Flexbox - A Magical CSS Property
Intro to Flexbox - A Magical CSS PropertyAdam Soucie
 
JavaScript - Chapter 13 - Browser Object Model(BOM)
JavaScript - Chapter 13 - Browser Object Model(BOM)JavaScript - Chapter 13 - Browser Object Model(BOM)
JavaScript - Chapter 13 - Browser Object Model(BOM)WebStackAcademy
 
HTML Attributes.pptx
HTML Attributes.pptxHTML Attributes.pptx
HTML Attributes.pptxSteins18
 
HTML Block and Inline Elements
HTML Block and Inline ElementsHTML Block and Inline Elements
HTML Block and Inline ElementsWebtech Learning
 
AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101Adobe
 
Oracle ADF 11g Skinning Tutorial
Oracle ADF 11g Skinning TutorialOracle ADF 11g Skinning Tutorial
Oracle ADF 11g Skinning TutorialRakesh Gujjarlapudi
 
Styled Components & React.js
Styled Components & React.jsStyled Components & React.js
Styled Components & React.jsGrayson Hicks
 
Introduction to CSS
Introduction to CSSIntroduction to CSS
Introduction to CSSAmit Tyagi
 
ASP.NET 10 - Data Controls
ASP.NET 10 - Data ControlsASP.NET 10 - Data Controls
ASP.NET 10 - Data ControlsRandy Connolly
 
CSS3, Media Queries, and Responsive Design
CSS3, Media Queries, and Responsive DesignCSS3, Media Queries, and Responsive Design
CSS3, Media Queries, and Responsive DesignZoe Gillenwater
 

Tendances (20)

Introduction to Sightly and Sling Models
Introduction to Sightly and Sling ModelsIntroduction to Sightly and Sling Models
Introduction to Sightly and Sling Models
 
Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAem dispatcher – tips & tricks
Aem dispatcher – tips & tricks
 
Grails Simple Login
Grails Simple LoginGrails Simple Login
Grails Simple Login
 
Cascading style sheet
Cascading style sheetCascading style sheet
Cascading style sheet
 
AEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser CachingAEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser Caching
 
CSS Best practice
CSS Best practiceCSS Best practice
CSS Best practice
 
Intro to Flexbox - A Magical CSS Property
Intro to Flexbox - A Magical CSS PropertyIntro to Flexbox - A Magical CSS Property
Intro to Flexbox - A Magical CSS Property
 
Flexbox
FlexboxFlexbox
Flexbox
 
JavaScript - Chapter 13 - Browser Object Model(BOM)
JavaScript - Chapter 13 - Browser Object Model(BOM)JavaScript - Chapter 13 - Browser Object Model(BOM)
JavaScript - Chapter 13 - Browser Object Model(BOM)
 
HTML Attributes.pptx
HTML Attributes.pptxHTML Attributes.pptx
HTML Attributes.pptx
 
CSS
CSSCSS
CSS
 
Advanced Cascading Style Sheets
Advanced Cascading Style SheetsAdvanced Cascading Style Sheets
Advanced Cascading Style Sheets
 
HTML Block and Inline Elements
HTML Block and Inline ElementsHTML Block and Inline Elements
HTML Block and Inline Elements
 
AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101
 
Oracle ADF 11g Skinning Tutorial
Oracle ADF 11g Skinning TutorialOracle ADF 11g Skinning Tutorial
Oracle ADF 11g Skinning Tutorial
 
Html basics
Html basicsHtml basics
Html basics
 
Styled Components & React.js
Styled Components & React.jsStyled Components & React.js
Styled Components & React.js
 
Introduction to CSS
Introduction to CSSIntroduction to CSS
Introduction to CSS
 
ASP.NET 10 - Data Controls
ASP.NET 10 - Data ControlsASP.NET 10 - Data Controls
ASP.NET 10 - Data Controls
 
CSS3, Media Queries, and Responsive Design
CSS3, Media Queries, and Responsive DesignCSS3, Media Queries, and Responsive Design
CSS3, Media Queries, and Responsive Design
 

En vedette

Designing well known websites with ADF Rich Faces
Designing well known websites with ADF Rich FacesDesigning well known websites with ADF Rich Faces
Designing well known websites with ADF Rich Facesmaikorocha
 
ADF User Interface Design Best Pratices
ADF User Interface Design Best PraticesADF User Interface Design Best Pratices
ADF User Interface Design Best PraticesAndreas Koop
 
All the Java ADF beginners need to know - part1
All the Java ADF beginners need to know - part1All the Java ADF beginners need to know - part1
All the Java ADF beginners need to know - part1Markus Eisele
 
Oracle ADF Task Flows for Beginners
Oracle ADF Task Flows for BeginnersOracle ADF Task Flows for Beginners
Oracle ADF Task Flows for BeginnersDataNext Solutions
 
7 Tips For Better JDeveloper Experience
7 Tips For Better JDeveloper Experience7 Tips For Better JDeveloper Experience
7 Tips For Better JDeveloper Experienceshay.shmeltzer
 
Guidelines for moving from Oracle Forms to Oracle ADF and SOA
Guidelines for moving from Oracle Forms to Oracle ADF and SOAGuidelines for moving from Oracle Forms to Oracle ADF and SOA
Guidelines for moving from Oracle Forms to Oracle ADF and SOASteven Davelaar
 
Programming-best practices( beginner) ADF_fusionapps
Programming-best practices( beginner) ADF_fusionappsProgramming-best practices( beginner) ADF_fusionapps
Programming-best practices( beginner) ADF_fusionappsBerry Clemens
 

En vedette (8)

Designing well known websites with ADF Rich Faces
Designing well known websites with ADF Rich FacesDesigning well known websites with ADF Rich Faces
Designing well known websites with ADF Rich Faces
 
ADF User Interface Design Best Pratices
ADF User Interface Design Best PraticesADF User Interface Design Best Pratices
ADF User Interface Design Best Pratices
 
Oracle ADF 11g Tutorial
Oracle ADF 11g TutorialOracle ADF 11g Tutorial
Oracle ADF 11g Tutorial
 
All the Java ADF beginners need to know - part1
All the Java ADF beginners need to know - part1All the Java ADF beginners need to know - part1
All the Java ADF beginners need to know - part1
 
Oracle ADF Task Flows for Beginners
Oracle ADF Task Flows for BeginnersOracle ADF Task Flows for Beginners
Oracle ADF Task Flows for Beginners
 
7 Tips For Better JDeveloper Experience
7 Tips For Better JDeveloper Experience7 Tips For Better JDeveloper Experience
7 Tips For Better JDeveloper Experience
 
Guidelines for moving from Oracle Forms to Oracle ADF and SOA
Guidelines for moving from Oracle Forms to Oracle ADF and SOAGuidelines for moving from Oracle Forms to Oracle ADF and SOA
Guidelines for moving from Oracle Forms to Oracle ADF and SOA
 
Programming-best practices( beginner) ADF_fusionapps
Programming-best practices( beginner) ADF_fusionappsProgramming-best practices( beginner) ADF_fusionapps
Programming-best practices( beginner) ADF_fusionapps
 

Similaire à Goodbye Nightmare: Tips and Tricks for Creating Complex Layouts with Oracle ADF Faces - Luc Bors

Altium productivity
Altium productivityAltium productivity
Altium productivityAlex Borisov
 
Productivity Tips For Altium Designer
Productivity Tips For Altium DesignerProductivity Tips For Altium Designer
Productivity Tips For Altium DesignerSchattke
 
Java GUI Programming for beginners-graphics.pdf
Java GUI Programming for beginners-graphics.pdfJava GUI Programming for beginners-graphics.pdf
Java GUI Programming for beginners-graphics.pdfPBMaverick
 
Lavacon 2014 responsive design in your hat
Lavacon 2014   responsive design in your hatLavacon 2014   responsive design in your hat
Lavacon 2014 responsive design in your hatNeil Perlin
 
Introduction to Responsive Web Development
Introduction to Responsive Web DevelopmentIntroduction to Responsive Web Development
Introduction to Responsive Web DevelopmentNikhil Baby
 
Basics of expression blend4
Basics of expression blend4Basics of expression blend4
Basics of expression blend4Samson Tennela
 
Understanding layout managers
Understanding layout managersUnderstanding layout managers
Understanding layout managersNuha Noor
 
Angular.js Directives for Interactive Web Applications
Angular.js Directives for Interactive Web ApplicationsAngular.js Directives for Interactive Web Applications
Angular.js Directives for Interactive Web ApplicationsBrent Goldstein
 
9awt Components
9awt Components9awt Components
9awt ComponentsAdil Jafri
 
Design patterns for mobile apps
Design patterns for mobile appsDesign patterns for mobile apps
Design patterns for mobile appsIvano Malavolta
 
Android Development - ConstraintLayout
Android Development - ConstraintLayoutAndroid Development - ConstraintLayout
Android Development - ConstraintLayoutManuel Vicente Vivo
 
JAVA Programming: Topic -AWT(Abstract Window Tool )
JAVA Programming: Topic -AWT(Abstract Window Tool )JAVA Programming: Topic -AWT(Abstract Window Tool )
JAVA Programming: Topic -AWT(Abstract Window Tool )Navya Francis
 

Similaire à Goodbye Nightmare: Tips and Tricks for Creating Complex Layouts with Oracle ADF Faces - Luc Bors (20)

Altium productivity
Altium productivityAltium productivity
Altium productivity
 
Productivity Tips For Altium Designer
Productivity Tips For Altium DesignerProductivity Tips For Altium Designer
Productivity Tips For Altium Designer
 
Java GUI Programming for beginners-graphics.pdf
Java GUI Programming for beginners-graphics.pdfJava GUI Programming for beginners-graphics.pdf
Java GUI Programming for beginners-graphics.pdf
 
Lavacon 2014 responsive design in your hat
Lavacon 2014   responsive design in your hatLavacon 2014   responsive design in your hat
Lavacon 2014 responsive design in your hat
 
Revit easy from AutoCAD
Revit   easy from AutoCADRevit   easy from AutoCAD
Revit easy from AutoCAD
 
Introduction to Responsive Web Development
Introduction to Responsive Web DevelopmentIntroduction to Responsive Web Development
Introduction to Responsive Web Development
 
Basics of expression blend4
Basics of expression blend4Basics of expression blend4
Basics of expression blend4
 
Problem solving
Problem solvingProblem solving
Problem solving
 
Excel Tips 101
Excel Tips 101Excel Tips 101
Excel Tips 101
 
Excel tips
Excel tipsExcel tips
Excel tips
 
Excel Tips.pptx
Excel Tips.pptxExcel Tips.pptx
Excel Tips.pptx
 
Understanding layout managers
Understanding layout managersUnderstanding layout managers
Understanding layout managers
 
Angular.js Directives for Interactive Web Applications
Angular.js Directives for Interactive Web ApplicationsAngular.js Directives for Interactive Web Applications
Angular.js Directives for Interactive Web Applications
 
Excel tips
Excel tipsExcel tips
Excel tips
 
9awt Components
9awt Components9awt Components
9awt Components
 
Design patterns for mobile apps
Design patterns for mobile appsDesign patterns for mobile apps
Design patterns for mobile apps
 
Excel tips
Excel tipsExcel tips
Excel tips
 
Android Development - ConstraintLayout
Android Development - ConstraintLayoutAndroid Development - ConstraintLayout
Android Development - ConstraintLayout
 
Excel tips
Excel tipsExcel tips
Excel tips
 
JAVA Programming: Topic -AWT(Abstract Window Tool )
JAVA Programming: Topic -AWT(Abstract Window Tool )JAVA Programming: Topic -AWT(Abstract Window Tool )
JAVA Programming: Topic -AWT(Abstract Window Tool )
 

Plus de Getting value from IoT, Integration and Data Analytics

Plus de 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
 

Dernier

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
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
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 

Dernier (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

Goodbye Nightmare: Tips and Tricks for Creating Complex Layouts with Oracle ADF Faces - Luc Bors

  • 1. Luc Bors, june 2013, ODTUG KScope 2013 New Orleans Tips and Tricks for Creating Complex Layouts with Oracle ADF Faces Goodbye Nightmare
  • 2. Who Am I • Luc Bors • Principal Consultant • AMIS Nieuwegein Netherlands • Friends of Oracle & Java • 5 Oracle ACE(D) • Oracle Partner
  • 3. Just a Quote… Let's face it: With ADF Faces rich client, layout …….. once you are a layout master, all bow before you, but it's more of an art than a science, and it is often, in fact, way too difficult to achieve what should (apparently) be a pretty simple.
  • 4. Back to the drawingboard
  • 7. The PanelFormLayout • Organize (input) components in a form layout – Aligning labels and fields in rows and columns – attribute labelAlignment to display labels above the fields
  • 8. The PanelFormLayout • Use the ‘Rows’ attribute • Use the ‘MaxColumns’ attribute
  • 9. The PanelStretchLayout • Stretches its components to fill available space – Top and bottom facet can be set to fixed height (or auto) – Start and end facet can be set to fixed width – Facets with no content do not render
  • 10. Demo
  • 11. The PanelSplitter • To create resizable panes – That stretch their content • panelSplitter has two facets: first and second – Content for the panes is provided in the facets • Orientation horizontal or vertical • Can be collapsible • Position can be fixed • Can be nested • Collapse and resize events can be listened to
  • 12. panelAccordion • The panelAccordion displays one or more collapsible/expandable panes in a vertically layout – Multiple panes can be expanded at once if discloseMany=true • discloseNone=true means that all panes can be collapsed – Overflow icon is shown to scroll to panes that do not fit in the area – Expanding & Collapsing panes is a client side operation – Accordions can be nested
  • 13. PanelTabbedLayout • The panelTabbed displays one or more tabbed panes – panelTabbed has position attribute (tab can be shown at the top, at the bottom or both) • The content of a tab pane is in a showDetailItem – A tab has attributes for title, icon, disabled, • panelTabbed can be nested • Overflow icon and popup are shown when the tabs do not fit next to each other
  • 14. Flowing and Stretching • Setting Background color can help you understand what is actually happening. • Makes you recognize the components at runtime
  • 15. Demo
  • 16. Be Aware !! Stretchable ? Stretches ? PanelStretchLayout YES YES PanelSplitter YES YES PanelCollection YES YES PanelGroupLayout (scroll, vertital) YES NO PanelGroupLayout (default, horizontal) NO NO PanelFromLayout NO NO PanelBorderLayout NO NO PanelDashBoard YES YES (Inside a grid) PanelTabbed YES YES (StretchChildren = first)
  • 20.
  • 23. The ADF Table • Layout and the ADF Table – How – What – When
  • 24. A Common ADF Layout issue • PanelGroupLayout does not Stretch it’s children
  • 25. Solution • Remove PGL – This does the trick • Surround with PanelCollection – Very convenient
  • 27. Using the column • Consider Column Stretching – none (default): Gives optimal performance – blank: Inserts an empty blank column that is stretched; use this so that the row’s background colors will span the entire width of the table – last: Stretches the last column to fill up any unused space inside the viewport – column:<id>: Stretches a specified column; use the ID of the column that you want to stretch (requires that you explicitly set the column’s ID property—the drop-down list for the property displays all columns whose ID has been set) – multiple When the "multiple" option is used you can set the widths in the columns (non-group) to be percentages.
  • 29. Demo
  • 31. ScrollBar ScrollBar Everywhere • Never place a scrolling panelGroupLayout inside of another scrolling panelGroupLayout since users do not like nested scroll bars
  • 32. And now they are gone …. • I Know what to do: Lets use layout vertical on the outer PGL……… …… and they are all gone….
  • 33. This works best • You learned earlier that: – PanelGroupLayout does not Stretch it’s children • Remove PGL • Stretch via Styleclass – AfStretchWidth
  • 35. The PanelformLayout • Can we create a properly aligned form ? • Having alignment of fields on the left ? • Having alignment of fields on the right ? • Having First Name and Last Name in one line ? • Look at the default layout for such a form…….
  • 36. Step 1 • Bring First Name and Last Name into an aggregate Container – use a panelLabelAndMessage component which is designed specifically for this purpose of allowing several logical components, or components without their own label property to be correctly laid out in a panelFormLayout.
  • 37. Step 2 • Alignment Components For First Name and Last Name – By default, the panelLabelAndMessage will lay out its children vertically. In this case we want the components side-by-side. So simply use a horizontal panelGroupLayout to align the two fields
  • 38. Step 3 ? • Remove Labels
  • 39. Step 3 ! • Remove Labels – The label is defined by the panelLabelAndMessage. – set the simple property to “true” on each of the child components. – also set the for property on the parent panelLabelAndMessage to the relevant child component id. This will endure that error messages are correctly displayed.
  • 40. Step 4 • Ensure Right Alignment – Components such as the selectOneChoice do not stretch and are controlled by the size of their data – You will have to control the size manually using styles. – The contentStyle property is used to control just the width of the drop down box itself and therefore is the property to use. Unfortunately getting the exact width, is a matter of trial and error. – For precise alignment that can survive zooming by the user, you may have to set explicit sizes in em’s for all the components in the form, or use the fieldWidth and LabelWidth properties of the panelFormLayout.
  • 42. Separators and Spacers • Default behavior • Spacers and Separators
  • 44. Forget (almost) all Of the Above….
  • 45. The PanelGridLayout • The panelGridLayout component is a layout container component that – uses one or more gridRow components to describe the rows of a grid layout structure. – Each row defines a height and margins. – Each gridRow uses one or more gridCell components to describe the cells for columns in that row of the grid layout structure. – Each cell defines width, margins, column span, row span, horizontal alignment, and vertical alignment
  • 46. How does it work ?
  • 47. Bye Bye Spacers & Separators
  • 48.
  • 49. How to make this layout ?
  • 50. How we Used to do it
  • 51. This is What we do Now
  • 53. Demo
  • 55. Demo
  • 57. Summary tips • Work with colors – Makes it clear what is going on • Use as little layout containers as possible. – The pages is smaller and faster • Reduce the number of components that need to stretch – The pages are faster • Use the quick start layouts – Saves you time
  • 58. Summary tips • Start with strechtable outer frame – Such as…PSL, PSP, • In there, have the flowing islands. • Never try to stretch something vertically in a flowing island – Inconsistent results accross browsers – Also need to consider the case where you build pagefragments that can be reused in other pages. – Styling only via Styleclass. • Use the Developerguide or create your own Cheat Sheet ! • Benefit from PanelGridLayout !!! – 11.1.1.7 or 11.1.2.2+
  • 59. And do not …. • Do Not use RAW HTML in the pages • Do Not use inlinestyle use skinning • Do Not specify height with % – Might result in multiple vertical scrollbars • Do not try to stretch a none stretchable component by setting width = 100% – Surround with stretchable componenent that also stretches its children – Or use AFStretchWidth styleClass
  • 63. Luc Bors, AMIS, The Netherlands Luc.Bors@amis.nl LucBors@gmail.com Follow me on : @lucb_