The Eclipse Scout Book
The Scout Community
Version of 2013-05-22
Contents
Preface
Who should read this Book?
This Book is Open and Free
The Scout Community
Thanks!
I
Getting Started
1
Introduction
1.1
What is Scout?
1.2
Why should I choose Scout?
1.3
Is Scout production ready?
1.4
What should I read?
2
”Hello World” Tutorial
2.1
Installation and Setup
2.2
Create a new Project
2.3
Run the Initial Application
2.4
The User Interface Part
2.5
The Server Part
2.6
Add the Rayo Look and Feel
2.7
Exporting the Application
2.8
Deploying to Tomcat
3
”Hello World” Background
3.1
Create a new Project
3.2
Walking through the Initial Application
3.3
Run the Initial Application
3.4
The User Interface Part
3.5
The Server Part
3.6
Add the Rayo Look and Feel
3.7
Exporting the Application
3.8
Deploying to Tomcat
4
Scout Runtime
4.1
The Scout Application Architecture
4.2
Multi-Frontend Support
4.3
Enterprise Integration
5
Scout Tooling
5.1
The Scout SDK
5.2
The Scout Perspective
5.3
The Scout Explorer
5.4
Scout Object Properties
5.5
Scout Wizards
6
A Larger Example
6.1
A Document Management System
II
The Frontend
7
Overview
7.1
Component Model
7.2
Separation of UI Technologies
7.3
Test for Listing
8
Client Modeling
9
Shared Components
9.1
Texts / i18n / NLS Support
9.2
Icons
9.3
Codes and Code Types
9.4
Lookup Calls and Services
9.5
Permissions
9.6
Form Data Objects
10
Client components
10.1
Splash Screen
10.2
Login Box
10.3
Client Session
10.4
Desktop
10.5
Menus
10.6
Outlines
10.7
Tools
10.8
Trees
10.9
Pages
10.10
Tables
10.11
Forms
10.12
Search Forms
10.13
Workflows and Wizards
11
Layouting
11.1
The Desktop
11.2
The Stuff in the Middle
11.3
Form Layout
12
Form Fields
12.1
Common Aspects
12.2
Grouping Components
12.3
Group Box
12.4
Tab Box
12.5
Sequence Box
12.6
Split Box
12.7
Radio Button Group
12.8
Label Field
12.9
String Field
12.10
Integer Field
12.11
Number Field
12.12
Date Field
12.13
Button Field
12.14
Link Field
12.15
Smart Field
12.16
List Box
12.17
Tree Box
12.18
Table Field
12.19
Page Field
12.20
Image Field
12.21
HTML Field
12.22
Image Field
12.23
SVG Field
12.24
Browser Field
12.25
Calendar Field
12.26
File Chooser Field
12.27
Master Slave Fields
13
Custom Fields
14
Template Fields
15
Bookmarks
16
Client Notification
17
File Upload and Download
18
Application Branding
18.1
Rayo Look and Feel
18.2
Branding the Swing Client
18.3
Branding the SWT Client
18.4
Branding the Webclient
19
Advanced Topics
19.1
Modifying the UI at Runtime
19.2
Focus Handling
19.3
Keyboard Control
19.4
Master Detail Pages
19.5
Client Only Applications
19.6
Headless Client
19.7
Client Startup
19.8
Client Shutdown
19.9
Threading and Jobs
19.10
Caching
III
The Backend
20
Overview
20.1
Server Session
20.2
Scout Services
21
Scout Services
21.1
Link to OSGi Services
21.2
Service Initialization
21.3
Accessing Scout Services from Outside
21.4
Lookup Services
21.5
Code Services
21.6
Process Services
21.7
Workflow Services
21.8
Outline Services
21.9
Remote File Services
21.10
SQL Services
22
Client Server Communication
22.1
The Server is a Servlet
22.2
Service Tunnel Basics
22.3
Remoting
22.4
Service Tunnel Configuration
22.5
Authentication and Authorization
22.6
Servlets and Security Filters
22.7
Anonymous Auth
22.8
Simple Auth
22.9
LDAP Auth
22.10
Simple Permission Model
22.11
Access Control Service
22.12
Something more complex
22.13
Showcase: Role based Permissions
23
Transaction Management
24
Logging
24.1
Simple Approach
24.2
Configure Logging
24.3
Setting Log-Level Dynamically
24.4
Add your own Logging Framework
24.5
Showcase: Log4j
25
Database Integration
25.1
Database Support
25.2
Database Authentication
25.3
Scout SQL Class
25.4
Accessing Multiple Databases
25.5
Scout Integration for your favorite DBMS
26
Web Service Integration
26.1
Scout JAX-WS Integration
26.2
A Simple Consumer
26.3
A Simple Provider
26.4
Something Advanced
26.5
Related Stuff
27
Email Integration
27.1
SMTP and IMAP
28
Scheduling
28.1
Simple Scheduling
28.2
Showcase: Quartz
29
Advanced Topics
29.1
Server Side Equinox
29.2
Server Startup
29.3
Server Shutdown
29.4
Caching
IV
Developing Applications
30
Web and Mobile Application
30.1
Overview
30.2
Scout Web Applications
30.3
Scout Mobile/Tablet Applications
31
Modular Applications
31.1
Overview
31.2
”Out of the box” Modularization
31.3
Splitting into Many Applications
31.4
Application Extensions
32
Integrating 3rd Party
32.1
Overview
32.2
Using other Eclipse Technology
32.3
Using external Java Libraries
32.4
Showcase JasperReports
32.5
Showcase Hibernate
32.6
Showcase Spring
33
Application Security
33.1
Proxy Handling
33.2
JAAS
33.3
Login Handling
33.4
Database Authentication
33.5
Permission Handling
33.6
Client Server Communication
33.7
Input Validation
33.8
Something more
34
Testing and Profiling
34.1
Testing
34.2
JUnit Tests
34.3
Jubula Tests
34.4
Profiling
35
Continuous Integration
35.1
Overview
35.2
Building with Maven/Tycho
35.3
Deploying
35.4
A Typical Setup
V
Contributing
36
Contributing to Scout
37
Documentation
37.1
This Book
38
Testing
38.1
What to Test?
39
Fixing and Enhancing Things
39.1
Setting up the Environment
VI
Appendices
A
Licence and Copyright
A.1
Licence Summary
A.2
Contributing Individuals
A.3
Full Licence Text
B
Scout Installation
B.1
Overview
B.2
Download and Install a JDK
B.3
Download and Install Scout
B.4
Add Scout to your Eclipse Installation
B.5
Verifying the Installation
C
Further Installations
C.1
Apache Tomcat Installation
C.2
Jenkins Installation
C.3
Download and Install Maven/Tycho
C.4
Download a Git Client
D
Scout Utilities
D.1
StringUtility
D.2
DateUtility
D.3
FileUtility
E
Java Basics
E.1
Java SE Basics