55
@MAGNOLIA_CMS 1 Magnolia CMS & Vaadin Integration: A Hot Fusion Aleksandr Pchelintcev, Magnolia Espen Jervidalo, Magnolia Frankfurt am Main, December 17 2013

Magnolia CMS and Vaadin integration

Embed Size (px)

Citation preview

Page 1: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �1

Magnolia CMS & Vaadin Integration: A Hot FusionAleksandr Pchelintcev, Magnolia Espen Jervidalo, Magnolia

Frankfurt am Main, December 17 2013

Page 2: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �2

Aleksandr PchelintcevSr. Software Engineer, Magnolia

Page 3: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �3

Espen JervidaloSr. Software Engineer, Magnolia

Page 4: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �4

®

Page 5: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �5

MAGNOLIA AMERICAS

MAGNOLIA ASIA

MAGNOLIA INTERNATIONAL

MAGNOLIA SPAIN

MAGNOLIA CZECH REPUBLIC

Page 6: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS �6

Selected Customers

Page 7: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS �7

Al Arabiya

Page 8: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �8

Magnolia CMSBest of breed open stack

100% Java/J2EE compliant Apache Jackrabbit (JCR 2.0/JSR-283) GWT and Vaadin

Designed for customisation and extensibility Open Source (GPL)

Page 9: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �9

Attractive CMSOxymoron?

Page 10: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �10

Page 11: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �11

Page 12: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �12

Magnolia Shell Apps Website

Page 13: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �13

Magnolia Shell Apps

Page 14: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �14

Journey Challenges

Page 15: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �15

OLD ADMIN

UI

Page 16: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �16

DESIGN

PROPOSAL

Page 17: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �17

Why Vaadin?Java

Close to Swing Reusable components Well-documented Pure JUnit testing Fewer compiles (compared to plain GWT)

Page 18: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �18

Vaadin

Prototype

Page 19: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �19

Page 20: Magnolia CMS and Vaadin integration

3000 UX

mockups

Page 21: Magnolia CMS and Vaadin integration
Page 22: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �22

Challengesconceptual technical

Page 23: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS �23

Magnolia Shell

Foundation for Apps Navigation dispatching Transitions

Page 24: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS@MAGNOLIA_CMS@MAGNOLIA_CMS �24

Apps

SERVER

LocationController

CLIENT

Shell ConnectorLOCATION

VIEWRP

C/ST

ATE MagnoliaShellView

!Viewport WidgetViewport

Magnolia Shell

Page 25: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS �25

Navigation handling inspired by Activity/Places framework Brought to server-side Adapted to AdminCentral use-case

Magnolia Shell

Page 26: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS@MAGNOLIA_CMS@MAGNOLIA_CMS �26

Transition QuirksJS Transitions - terribly slow JQuery.animate-enhanced for hardware accelerated transitions! GwtQuery 1.4.0 for substitution?

Page 27: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS@MAGNOLIA_CMS@MAGNOLIA_CMS �27

Mobile Gotchas MGWT for touch events and gestures Fake transforms:

-webkit-transform: translateZ(0) -webkit-backface-visibility: hidden;

Closure Compiler: 25% less JS Icon fonts: crispy sharp icons.

Page 28: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �28

Conceptual Challenges

Page 29: Magnolia CMS and Vaadin integration
Page 30: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �30

Magnolia Core

Vaadin

Widgets

UI Framework

Apps

Page 31: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �31

App Framework

Page 32: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS

CONTENT APP PACKAGE

APP FRAMEWORK

MY PROJECT

�32

MyApp

BaseApp

App

MySubApp

BaseSubApp

SubApp

MySubAppView

BrowserSubApp

DetailSubApp

Page 33: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �33

What can the App framework do for you?

Page 34: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �34

LifecycleYou don’t have to care about it

You can hook into it Location objects

bean wrapping the url fragment used for navigation

Page 35: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �35

#app:<appName>:<subAppId>:<param1;param2>

URL Fragments

Page 36: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS

#app:<appName>:<subAppId>:<param1;param2

�36

Page 37: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �37

IoCstandard

@Inject based on guice

configured nearly every component can be replaced

scopes main, app, subapp

Page 38: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS �38

public class MySubApp extends BaseSubApp<MyView> { ! private final EventBus eventBus; ! @Inject public MySubApp( @Named(AppEventBus.NAME) EventBus eventBus, SubAppContext subAppContext, MyView view){ ! super(subAppContext, view); this.eventBus = eventBus; }

My App

Page 39: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �39

Conceptual Challenge not yet solved

Page 40: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �40

Content App Declarative UI

Page 41: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �41

Page 42: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �42

Page 43: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �43

Page 44: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS �44

public class MyView implements View { Component label = new Label(“Hello Gwt.create!”); ! @Override Component asVaadinComponent() { return label; } }

My View

Page 45: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �45

Page 46: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �46

Page 47: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �47

How does that help non-programmers extending the system?

Page 48: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS �48

Model-View-Presenter Pattern

Presenter

Model

View

EventBus

Page 49: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS �49

Vaadin UI

FieldFactory

FormBuilder

EditorPresenter

JCR (Config) Editor Definition

Page 50: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS@MAGNOLIA_CMS �50

Eventually you configure the UI within the UI

Page 51: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �51

Page 52: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �52

Page 53: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �53

Technical challenge solved. Conceptual challenge solved.

Page 54: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �54

We hopewe raised interest & curiosity you’ll consider Magnolia CMS you have some questions

.. that we can answer

Page 55: Magnolia CMS and Vaadin integration

@MAGNOLIA_CMS �55

www.magnolia-cms.com

Thanks for your attention!