SlideShare a Scribd company logo
1 of 15
Magnolia 5.0 - Concept


                            UI Architecture




1
                 Magnolia is a registered trademark used by permission
Version 1.0
MVP vs. MVC




              http://blog.vuscode.com/malovicn/archive/2007/12/18/model-view-presenter-mvp-vs-model-view-controller-mvc.aspx




2
                                       Magnolia is a registered trademark used by permission
Version 1.0
GWT 2.1 - MVP
• based on the experience at google
• good fundament for browser application
  • history
  • asynchronously
  • decoupling browser dependent code




3
                    Magnolia is a registered trademark used by permission
Version 1.0
GWT 2.1 - the participants
•     Places
•     Display Regions
•     Activities (Presenter)
•     Views
•     EventBus




4
                         Magnolia is a registered trademark used by permission
Version 1.0
Places
• Place
  • represents a state
  • each place is a subclass
  • provides the values to re-produce the place
• PlaceController
  • PlaceController.gotTo(place)
  • fires PlaceChangeEvent/PlaceChangeRequestEvent
• PlaceHistoryHandler
  • triggered by history navigation
• PlaceHistoryMapper
  • browser history support

5
                   Magnolia is a registered trademark used by permission
Version 1.0
Display Regions
• where the produced view is attached to
• navigation menu, search bar, main region, ..
• implements AcceptsOneWidget interface




6
                    Magnolia is a registered trademark used by permission
Version 1.0
Activities (Presenter)
• Activity
  • the presenter of the MVP pattern
  • start(region, eventbus)
  • mayStop()
  • onCacel()
• ActivityMapper
  • maps places to activities
• ActivityManager
  • reacts on PlaceChangeEvents
  • starts the activity


7
                    Magnolia is a registered trademark used by permission
Version 1.0
View
• interface
  • contract with the presenter
• a subclass will contain the UI specific code
  • GWT, Vaadin, ...
• different device -> different views (mobile, iPad)
• LTR/RTL
• ViewFactory




8
                     Magnolia is a registered trademark used by permission
Version 1.0
PlaceController                           PlaceHistory
       Place   goTo(place)                                    Handler
               getWhere():Place



      Home

               fires PlaceChangeEvent


                                    dispatches
                    EventBus                           ActivityManager                             ActivityMapper
                                                   onPlaceChange(event)                      getActivity(place):Activity




                                                                                                      Activity
                                                                                             start(region, eventBus)
                                                                                             mayStop()
                                                                                    starts
                                                                                             onCancel()
                                                                                             onStop()




9
                            Magnolia is a registered trademark used by permission
Version 1.0
EventBus
• EventBus
  • application level events
  • ItemSelectedEvent, ItemDeletedEvent, ...
• UI events
  • are handled by the presenter
  • OnClickEvent, ...




10
                    Magnolia is a registered trademark used by permission
Version 1.0
http://www.nieleyde.org/SkywayBlog/post.htm?postid=37782056-c4e1-4dfb-9caa-40ab9552ca3b




11
                                       Magnolia is a registered trademark used by permission
Version 1.0
Commands
• atom operation
  • delete item
  • save changes
  • activate content
• undo/redo
• triggered by the presenter or application controller
• also exposed by the web services




12
                     Magnolia is a registered trademark used by permission
Version 1.0
Why should we use this
•     separation of concerns
•     less Vaadin dependent code
•     history support
•     different types of views
•     aligned with GWT client side coding




13
                         Magnolia is a registered trademark used by permission
Version 1.0
What will we do
• use the blackboard Vaadin add-on (event bus)
  • wiki page
• write the sever side classes (Place, Activity, ...)
  • analog to GWT code




14
                      Magnolia is a registered trademark used by permission
Version 1.0
Resources
•     MVP
     •        Model View Presenter (MVP) VS Model View Controller (.Net)
     •        GUI Architectures (Martin Fowler)
•     GWT Architecture
     •        GWT 2.1 Activities - tbroyer's posterous
     •        GWT 2.1 Places - tbroyer's posterous
     •        GWT 2.1 Places – Part II - tbroyer's posterous
     •        GWT MVP Development with Activities and Places (GWT Documentation)
     •        SolamenteNiel - GWT: Model-View-Presenter Architecture Diagram
•     Commands
     •        Command pattern (Wikipedia)
     •        Undo (Wikipedia)
     •        Memento pattern (Wikipedia)




15
                                   Magnolia is a registered trademark used by permission
Version 1.0

More Related Content

Similar to Magnolia CMS 5.0 - UI Architecture

Javascript essential-pattern
Javascript essential-patternJavascript essential-pattern
Javascript essential-pattern偉格 高
 
Rambler.iOS #6: App delegate - разделяй и властвуй
Rambler.iOS #6: App delegate - разделяй и властвуйRambler.iOS #6: App delegate - разделяй и властвуй
Rambler.iOS #6: App delegate - разделяй и властвуйRAMBLER&Co
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitAriya Hidayat
 
Intro To webOS
Intro To webOSIntro To webOS
Intro To webOSfpatton
 
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitHybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitAriya Hidayat
 
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitHybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitAriya Hidayat
 
Codestrong 2012 breakout session android internals and best practices
Codestrong 2012 breakout session   android internals and best practicesCodestrong 2012 breakout session   android internals and best practices
Codestrong 2012 breakout session android internals and best practicesAxway Appcelerator
 
What’s new in aNdroid [Google I/O Extended Bangkok 2016]
What’s new in aNdroid [Google I/O Extended Bangkok 2016]What’s new in aNdroid [Google I/O Extended Bangkok 2016]
What’s new in aNdroid [Google I/O Extended Bangkok 2016]Sittiphol Phanvilai
 
Ionic2, les développeurs web à l'assaut du mobile, BDX I/O le 21/10/2016
Ionic2, les développeurs web à l'assaut du mobile, BDX I/O le 21/10/2016Ionic2, les développeurs web à l'assaut du mobile, BDX I/O le 21/10/2016
Ionic2, les développeurs web à l'assaut du mobile, BDX I/O le 21/10/2016Loïc Knuchel
 
OSGi and Eclipse RCP
OSGi and Eclipse RCPOSGi and Eclipse RCP
OSGi and Eclipse RCPEric Jain
 
Meiga Guadec 2009 English
Meiga Guadec 2009 EnglishMeiga Guadec 2009 English
Meiga Guadec 2009 Englisheocanha
 
Scaling Django with gevent
Scaling Django with geventScaling Django with gevent
Scaling Django with geventMahendra M
 
Jollen's Presentation: Introducing Android low-level
Jollen's Presentation: Introducing Android low-levelJollen's Presentation: Introducing Android low-level
Jollen's Presentation: Introducing Android low-levelJollen Chen
 
Reactive state management with Jetpack Components
Reactive state management with Jetpack ComponentsReactive state management with Jetpack Components
Reactive state management with Jetpack ComponentsGabor Varadi
 
MvvmQuickCross for Windows Phone
MvvmQuickCross for Windows PhoneMvvmQuickCross for Windows Phone
MvvmQuickCross for Windows PhoneVincent Hoogendoorn
 
managing georeferenced content with Plone and collective.geo
managing georeferenced content with Plone and collective.geomanaging georeferenced content with Plone and collective.geo
managing georeferenced content with Plone and collective.geogborelli
 
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?soft-shake.ch
 

Similar to Magnolia CMS 5.0 - UI Architecture (20)

Javascript essential-pattern
Javascript essential-patternJavascript essential-pattern
Javascript essential-pattern
 
Rambler.iOS #6: App delegate - разделяй и властвуй
Rambler.iOS #6: App delegate - разделяй и властвуйRambler.iOS #6: App delegate - разделяй и властвуй
Rambler.iOS #6: App delegate - разделяй и властвуй
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKit
 
Intro To webOS
Intro To webOSIntro To webOS
Intro To webOS
 
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitHybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKit
 
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitHybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKit
 
Codestrong 2012 breakout session android internals and best practices
Codestrong 2012 breakout session   android internals and best practicesCodestrong 2012 breakout session   android internals and best practices
Codestrong 2012 breakout session android internals and best practices
 
What’s new in aNdroid [Google I/O Extended Bangkok 2016]
What’s new in aNdroid [Google I/O Extended Bangkok 2016]What’s new in aNdroid [Google I/O Extended Bangkok 2016]
What’s new in aNdroid [Google I/O Extended Bangkok 2016]
 
Html5
Html5Html5
Html5
 
Ionic2, les développeurs web à l'assaut du mobile, BDX I/O le 21/10/2016
Ionic2, les développeurs web à l'assaut du mobile, BDX I/O le 21/10/2016Ionic2, les développeurs web à l'assaut du mobile, BDX I/O le 21/10/2016
Ionic2, les développeurs web à l'assaut du mobile, BDX I/O le 21/10/2016
 
OSGi and Eclipse RCP
OSGi and Eclipse RCPOSGi and Eclipse RCP
OSGi and Eclipse RCP
 
Meiga Guadec 2009 English
Meiga Guadec 2009 EnglishMeiga Guadec 2009 English
Meiga Guadec 2009 English
 
Scaling Django with gevent
Scaling Django with geventScaling Django with gevent
Scaling Django with gevent
 
Jollen's Presentation: Introducing Android low-level
Jollen's Presentation: Introducing Android low-levelJollen's Presentation: Introducing Android low-level
Jollen's Presentation: Introducing Android low-level
 
Reactive state management with Jetpack Components
Reactive state management with Jetpack ComponentsReactive state management with Jetpack Components
Reactive state management with Jetpack Components
 
MvvmQuickCross for Windows Phone
MvvmQuickCross for Windows PhoneMvvmQuickCross for Windows Phone
MvvmQuickCross for Windows Phone
 
Guides To Analyzing WebKit Performance
Guides To Analyzing WebKit PerformanceGuides To Analyzing WebKit Performance
Guides To Analyzing WebKit Performance
 
Java-Events
Java-EventsJava-Events
Java-Events
 
managing georeferenced content with Plone and collective.geo
managing georeferenced content with Plone and collective.geomanaging georeferenced content with Plone and collective.geo
managing georeferenced content with Plone and collective.geo
 
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
soft-shake.ch - Windows Phone 7 „Mango“ – what’s new for Developers?
 

More from Philipp Bärfuss

NoCMS - from monolithic CMS to dissolved CMS
NoCMS - from monolithic CMS to dissolved CMSNoCMS - from monolithic CMS to dissolved CMS
NoCMS - from monolithic CMS to dissolved CMSPhilipp Bärfuss
 
Magnolia Personalization Keynote Amplify 2014
Magnolia Personalization Keynote Amplify 2014Magnolia Personalization Keynote Amplify 2014
Magnolia Personalization Keynote Amplify 2014Philipp Bärfuss
 
Magnolia 5 - Under the Hood
Magnolia 5 - Under the HoodMagnolia 5 - Under the Hood
Magnolia 5 - Under the HoodPhilipp Bärfuss
 
Magnolia CMS 5.0 - JCR 2.0 and Content API
Magnolia CMS 5.0 - JCR 2.0 and Content APIMagnolia CMS 5.0 - JCR 2.0 and Content API
Magnolia CMS 5.0 - JCR 2.0 and Content APIPhilipp Bärfuss
 
Magnolia CMS Roadmap - Beyond 5.0
Magnolia CMS Roadmap - Beyond 5.0Magnolia CMS Roadmap - Beyond 5.0
Magnolia CMS Roadmap - Beyond 5.0Philipp Bärfuss
 
Magnolia CMS 5.0 - Three perspectives
Magnolia CMS 5.0   - Three perspectivesMagnolia CMS 5.0   - Three perspectives
Magnolia CMS 5.0 - Three perspectivesPhilipp Bärfuss
 

More from Philipp Bärfuss (7)

NoCMS - from monolithic CMS to dissolved CMS
NoCMS - from monolithic CMS to dissolved CMSNoCMS - from monolithic CMS to dissolved CMS
NoCMS - from monolithic CMS to dissolved CMS
 
Magnolia Personalization Keynote Amplify 2014
Magnolia Personalization Keynote Amplify 2014Magnolia Personalization Keynote Amplify 2014
Magnolia Personalization Keynote Amplify 2014
 
Magnolia 5 - Under the Hood
Magnolia 5 - Under the HoodMagnolia 5 - Under the Hood
Magnolia 5 - Under the Hood
 
Magnolia CMS 5.0 - JCR 2.0 and Content API
Magnolia CMS 5.0 - JCR 2.0 and Content APIMagnolia CMS 5.0 - JCR 2.0 and Content API
Magnolia CMS 5.0 - JCR 2.0 and Content API
 
Magnolia CMS Roadmap - Beyond 5.0
Magnolia CMS Roadmap - Beyond 5.0Magnolia CMS Roadmap - Beyond 5.0
Magnolia CMS Roadmap - Beyond 5.0
 
Magnolia CMS 5.0 - Three perspectives
Magnolia CMS 5.0   - Three perspectivesMagnolia CMS 5.0   - Three perspectives
Magnolia CMS 5.0 - Three perspectives
 
Magnolia 5.0 'GenUIne'
Magnolia 5.0 'GenUIne'Magnolia 5.0 'GenUIne'
Magnolia 5.0 'GenUIne'
 

Recently uploaded

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
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
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
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
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
 
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
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
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
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
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
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 

Recently uploaded (20)

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...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
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
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
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...
 
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
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
+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...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
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...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
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
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 

Magnolia CMS 5.0 - UI Architecture

  • 1. Magnolia 5.0 - Concept UI Architecture 1 Magnolia is a registered trademark used by permission Version 1.0
  • 2. MVP vs. MVC http://blog.vuscode.com/malovicn/archive/2007/12/18/model-view-presenter-mvp-vs-model-view-controller-mvc.aspx 2 Magnolia is a registered trademark used by permission Version 1.0
  • 3. GWT 2.1 - MVP • based on the experience at google • good fundament for browser application • history • asynchronously • decoupling browser dependent code 3 Magnolia is a registered trademark used by permission Version 1.0
  • 4. GWT 2.1 - the participants • Places • Display Regions • Activities (Presenter) • Views • EventBus 4 Magnolia is a registered trademark used by permission Version 1.0
  • 5. Places • Place • represents a state • each place is a subclass • provides the values to re-produce the place • PlaceController • PlaceController.gotTo(place) • fires PlaceChangeEvent/PlaceChangeRequestEvent • PlaceHistoryHandler • triggered by history navigation • PlaceHistoryMapper • browser history support 5 Magnolia is a registered trademark used by permission Version 1.0
  • 6. Display Regions • where the produced view is attached to • navigation menu, search bar, main region, .. • implements AcceptsOneWidget interface 6 Magnolia is a registered trademark used by permission Version 1.0
  • 7. Activities (Presenter) • Activity • the presenter of the MVP pattern • start(region, eventbus) • mayStop() • onCacel() • ActivityMapper • maps places to activities • ActivityManager • reacts on PlaceChangeEvents • starts the activity 7 Magnolia is a registered trademark used by permission Version 1.0
  • 8. View • interface • contract with the presenter • a subclass will contain the UI specific code • GWT, Vaadin, ... • different device -> different views (mobile, iPad) • LTR/RTL • ViewFactory 8 Magnolia is a registered trademark used by permission Version 1.0
  • 9. PlaceController PlaceHistory Place goTo(place) Handler getWhere():Place Home fires PlaceChangeEvent dispatches EventBus ActivityManager ActivityMapper onPlaceChange(event) getActivity(place):Activity Activity start(region, eventBus) mayStop() starts onCancel() onStop() 9 Magnolia is a registered trademark used by permission Version 1.0
  • 10. EventBus • EventBus • application level events • ItemSelectedEvent, ItemDeletedEvent, ... • UI events • are handled by the presenter • OnClickEvent, ... 10 Magnolia is a registered trademark used by permission Version 1.0
  • 11. http://www.nieleyde.org/SkywayBlog/post.htm?postid=37782056-c4e1-4dfb-9caa-40ab9552ca3b 11 Magnolia is a registered trademark used by permission Version 1.0
  • 12. Commands • atom operation • delete item • save changes • activate content • undo/redo • triggered by the presenter or application controller • also exposed by the web services 12 Magnolia is a registered trademark used by permission Version 1.0
  • 13. Why should we use this • separation of concerns • less Vaadin dependent code • history support • different types of views • aligned with GWT client side coding 13 Magnolia is a registered trademark used by permission Version 1.0
  • 14. What will we do • use the blackboard Vaadin add-on (event bus) • wiki page • write the sever side classes (Place, Activity, ...) • analog to GWT code 14 Magnolia is a registered trademark used by permission Version 1.0
  • 15. Resources • MVP • Model View Presenter (MVP) VS Model View Controller (.Net) • GUI Architectures (Martin Fowler) • GWT Architecture • GWT 2.1 Activities - tbroyer's posterous • GWT 2.1 Places - tbroyer's posterous • GWT 2.1 Places – Part II - tbroyer's posterous • GWT MVP Development with Activities and Places (GWT Documentation) • SolamenteNiel - GWT: Model-View-Presenter Architecture Diagram • Commands • Command pattern (Wikipedia) • Undo (Wikipedia) • Memento pattern (Wikipedia) 15 Magnolia is a registered trademark used by permission Version 1.0

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n