MAGNOLIA CMS
UX/UI DESIGN
WITH VAADIN
JANUARY 26, 2015
Photo Credit:
AMPLIFY, MUNICH
ALEKSANDR PCHELINTCEV
SR. JAVA DEVELOPER @ MAGNOLIA INTERNATIONAL
!
ALEKSANDR.PCHELINTCEV@MAGNOLIA-CMS.COM
VIlle
VILLE INGMAN
VAADIN ADVOCATE
IN THIS TALK
Meet AdminCentral
Introduction to Vaadin
Apps
UI framework
Writing an app
UI Customisation with Vaadin
Data binding
Future
OPEN SUITE
Magnolia Bundle
CONFIGURATION
MAGNOLIA UI
TEMPLATING KIT
WORKFLOW
PERSONALISATION
…
CORE
IoC
MAGNOLIA UI:
ADMIN CENTRAL
ADMIN CENTRAL
The face of CMS
Place where time is spent
User Experience - priority #1
ADMIN CENTRAL V.4
ADMIN CENTRAL IN ACTION
MAGNOLIA UI
UX
Fresh look
Clear interactions
App Paradigm
Task-oriented
Modular & Scalable
Flexibility
Fully configurable
Server-side API
CHALLENGES
Architecture
Simple Java API
Security
Unit testing
Technical
Cross-browser
Support mobile platforms
Foundation
Rich set of re-usable components
FRAMEWORK PICK
GWT-based
Java OSS
Enterprise web-app oriented
Encapsulates browser quirks
The final choice:
Why?
INTRO TO VAADIN
Vaadin
Sections
Magnolia Amplify
Ville Ingman, Vaadin Ltd

ville@vaadin.com
intro section
Our Mission
Make building amazing
web applications easy
> 130.000 developers from
> 10.000 cities
> 500 add-ons in the

marketplace
Other
4%Asia
21%
Americas
21%
Europe
54%
Vaadin Ecosystem
Apache-licensed
Typical use-cases are 
ERPs, Financial and Intranet/Extranet services
i.e. Business Applications
40% of Fortune 100
Building blocks
What kind of devices does your app support?
98.1%
3Desktop
browsers
Browsers developers expect to support in 2013
3.5 Browsers to support in 2012
IE 6/7 Safari Opera IE 8
6/7 8
14% 18% 36% 54%
Chrome
9 10
IE 9 IE 10 Firefox
79% 80% 94% 94%
Browsers developers expect to support in 2013
3.5 Browsers to support in 2012
IE 6/7 Safari Opera IE 8
6/7 8
14% 18% 36% 54%
Chrome
9 10
IE 9 IE 10 Firefox
79% 80% 94% 94%
app support?
98.1%
25.7%
Phones
36.1%
ts
Others
2.1%
“Since gwt is used e
in the enterprise, this
explain why tablets are
popular than support for
phones”
Daniel
iPhone
Android
WP
25.7%
Phones
36.1%
Tablets
“Since gwt is used extensively
in the enterprise, this may
explain why tablets are more
popular than support for
phones”
Daniel
iPad
Android
Windows
+
+
Architecture
How does it work,
really?
• Initial HTML
• CSS (theme)
• Images
• JavaScript
!
1.2M total

307k
compress
135k
reduced
widgetset
• name=”Joonas”
• button clicked
!
261 bytes

• name=”Joonas”
• button clicked
!
261 bytes

• Add notification 
!
267 bytes

Server-
Client-
side
Optim
ized
for
Productivity
Optim
ized
for
Control
MAGNOLIA UI FRAMEWORK
Main principles and components
Let’s get a bit technical
See the apps
UI FRAMEWORK
Focus on the business:
Presentation logic
Vaadin view
Framework takes of the rest:
MagnoliaShell: App environment
Base app implementations
App life-cycle management
App communication
MAGNOLIA SHELL
Launch and navigate between apps
View and manage messages and workflow tasks
Bookmark and navigate between favourite locations
Messages and tasks managed as filterable
lists, easing both communication & review
Launch and navigate between apps
View and manage messages and workflow tasks
Bookmark and navigate between favourite locations
MAGNOLIA SHELL
Launch and navigate between apps
View and manage messages and workflow tasks
Bookmark and navigate between favourite locations
MAGNOLIA SHELL
Launch and navigate between apps
View and manage messages and workflow tasks
Bookmark and navigate between favourite locations
MAGNOLIA SHELL
SERVER CLIENT
Apps
LocationController Shell Connector
LOCATION
VIEW
RPC/STATE
MagnoliaShellView
!
Viewport
Widget
Viewport
Magnolia
Shell
APPS AND SUB-APPS
FOUR SUB-APPS
OPENED IN THE TABBED APP VIEW.
CONTENT APP PACKAGE
Provides CRUD functionality
Set of sub-apps and components
- Content views
- Fields
- Actions
- …
Extensible and re-usable
Ordered list and
tree views for
data entries
Scalable thumbnail view
Entry management tools
conveniently displayed in
collapsible action bar
Data managed using forms that can be created
with a rich set of field types powered by Vaadin
APP CONFIGURATION
DEVELOPING AN APP
PATTERNS
Presenter
(sub-app)
Model
(JCR)
Vaadin View
EventBus
Definition
Action
(Command)
DEVELOPMENT PERKS
Automatic app location mapping
#app:<appName>:<subAppId>:<param1;param2>
!
Inversion of control
@Inject, @Singleton …
Scopes: <app>, <sub-app>, <admincentral>
Additional UI features
Notifications
Overlays
CUSTOM SUB-APPpublic class MySubApp extends BaseSubApp<MyView> {
private final EventBus eventBus;
@Inject
public MySubApp(
@Named(SubAppEventBus.NAME)
EventBus eventBus,SubAppContext ctx, MyView view){
super(subAppContext, view);
this.eventBus = eventBus;
}
@Override
protected void onSubAppStart() {/*Execute start-up logic*/}
@Override
protected void onSubAppStop() {/*Dispose the resources*/}
@Override
public void locationChanged(Location l){
// Update the view according to the changes
}
CUSTOM VIEW!
public class MyView implements View {
!
private Component label = new Label(“Hello Amplify!”);
!
@Override
Component asVaadinComponent() {
return this.label;
}
!
}
OUTCOME?
EDIT WEB CONTENT
MONITOR
WRITE SCRIPTS
GO LOW-LEVEL
APP SWITCHER
DIALOG EDITOR
VAADIN ADD-ONS
AND EXTENSIONS
add-ons, SASS,
Extendability:
Add-ons!
Server-side
component
compositions
Client-side
components with
GWT
Client-side JS
components
Custom themes
507 add-ons available!
SASS
Syntactically
Awesome Stylesheets
Variables & functions
Mixins
Nesting
Selector Inheritance
THE cool stuff
Built-in Server
@Push
Atmosphere: 
WebSockets, HTTPStreaming, Long polling
Grid
• Custom
headers and
footers
• Frozen
columns
• Embedded
widgets
• Large datasets
Declarative UI
• HTML based
• New Visual
Designer with
collaborative
features
Vaadin Labs
vaadin.com/labs
getting
started
Eclipse
Download plugin 
from Marketplace
IntelliJ 
IDEA
Built-in support
Netbeans
Download plugin 
Netbeans Plugin Portal
mvn
archetype:generate
-
DarchetypeGroupId=
com.vaadin
-
DarchetypeArtifactId
=
vaadin-archetype-
application
-DarchetypeVersion=
7.1.7
Maven
Download for Free
vaadin.com/book
PDF, ePub, HTML
9 789529 319701
ISBN 978-952-93-1970-1
9 789529 319701
ISBN 978-952-93-1970-1
Vol 1
288 pages
Vol 2
434 pages
Web apps, 
not web sites!
VAADIN CONTAINERS
OoB
FileSystem
SQL
JPA
Magnolia
JCR Container
PoC @ Rest
CONTENT CONNECTORS
MANAGE EXTERNAL CONTENT WITH APPS
Contributions are welcome!
http://wiki.magnolia-cms.com/display/
FORGE/Home
Questions
Thank you?

Highly Scalable User Experience Design: Vaadin and Magnolia