SlideShare une entreprise Scribd logo
1  sur  33
PR0031 - 2010-11-01
Redistribution and other use of this material requires written permission from The RCP Company.
Eclipse RCP Under the Hood
Denne event er en kombination af en tutorial day og en live demonstration af en "full featured"
Eclipse RCP applikation hvor udviklingen kommenteres on-the-fly.
Medbring din laptop og prøv selv hvordan man forholdsvis let kan starte en Eclipse RCP applikation.
Det er meget vigtigt at du allerede har Eclipse 3.6 installeret på maskinen.
Følgende emner vil blive demonstreret / omtalt
Eclipse RCP Arkitektur
Konfiguration (OSGi console, plugin.xml, manifest.mf...)
Packaging
Extension Points
UI / SWT / JFace
Editors / Views
Building and Testing
PR0029 - 2010-05-31
2
About Me
 Tonny Madsen, Founder and Owner of The RCP Company
 20 years of experience in system development in major companies
 9 years experience as the Systems Architect of an 20+ MLoC project
 8 years of experience with Eclipse and Eclipse RCP
 Solutions Member of the Eclipse Foundation
 Chairman of Eclipse.dk
 Extern Lecturer at IT-University on Model Driven Development and
Domain Specific Languages
 Regular speaker at EclipseCon, Eclipse Summit, etc
L0001 - 2008-11-27
3
Eclipse Architecture
 Goals for the Eclipse architecture
 Be able to host any number of 3rd
party applications
 Scalability in terms of size and complexity of hosted applications
 Alignment with native UI look-n-feel
 Flexible architecture, structured around
 Plug-ins – the basic unit of functionality
 Extension points – the defined interfaces between plug-ins
 This architecture allows for
 Implementation of 3rd
party applications on top of the basic platform (Eclipse RCP)
 Additional tools to be integrated in the platform
 Integrated tools to be further extended
L0001 - 2008-11-27
4
Eclipse
Platform
Resources
Workspace
Help
Update
Team
WebServer
Filesystems
Apache
Search
Navigator
Intro
TextEditors
Eclipse Architectural Components
JDT
CVS
WTP
Datatools
VE
BIRT
Mylyn
PDE
Eclipse RCP
Run-time/OSGi
SWT
JFace
Workbench
Preferences
Jobs
ICU
Commands
Registry
CDT
L0001 - 2008-11-27
5
The Basic RCP Components
 In the Eclipse, everything is a plug-in including the run-time platform itself
 It is a small kernel that represents the base of the platform
 Built on top of OSGi
 All subsystems built on the run-time platform follows the rules of plug-ins:
 They are plug-ins themselves
 RCP includes:
 Component Management
 Resources Management
 Preferences
 Workbench (include SWT and JFace)
 RCP does not include the following:
 Update
 Help
 This can be included from the Eclipse platform
Eclipse RCP
Run-time/OSGi
SWT
JFace
Workbench
Preferences
Jobs
ICU
Commands
Registry
L0001 - 2008-11-27
6
Application
Platform
Comm.
Logging
Help
Update
Auth.
Auditing
Apache
Intro
Your Typical RCP Application
Base
Add-on
Add-on
Add-on
Add-on
DebugTools
DataModel
Eclipse RCP
Run-time/OSGi
SWT
JFace
Workbench
Preferences
Jobs
ICU
Commands
Registry
Add-on
L0001 - 2008-11-27
7
Organizing the Platform
 The software of an Eclipse system is based on the following terms:
 Plug-ins – a plug-in is the basic unit of software
 Fragments – a fragment is an add-on to an existing plug-in with additional
functionality
 Features – a feature is a number of plug-ins that is distributed and updated as a
whole
 Applications – an application is a Java class that implements a specific interface
and is declared as such in the plug-in
 Products – a product is a set of features or plug-ins along with the appropriate
branding
L0001 - 2008-11-27
8
Extension Points
 Describe additional functionality that could be integrated with the platform
 External tools extend the platform to bring specific functionality
 Java Development Tooling (JDT) and Plug-in Development Environment (PDE) are external
tools integrated with the platform
 Extension points are used to
 Add an implementation for a generic feature
 Extend the workbench
 Extend common object factory
 Advantages:
 Allows for late load and startup of plug-ins
 Provides a common “registry” for most extensions like views, perspectives, commands, etc
 Disadvantages:
 Makes it harder to understand flow of control
 ID Hell!
 Extension points may have corresponding API interface
 Describes what should be provided in the extension
L0001 - 2008-11-27
9
Eclipse RCP
Run-time/OSGi
SWT
JFace
Workbench
Preferences
Jobs
ICU
Commands
Registry
The Role of Run-Time/OSGi
 Dynamic module system for Java
 Solves many of the problems of big applications
 Late activation of code
 Multiple versions of the same library
 Eclipse is the reference implementation!
L0001 - 2008-11-27
10
Eclipse RCP
Run-time/OSGi
SWT
JFace
Workbench
Preferences
Jobs
ICU
Commands
Registry
Workbench
 Represents the desktop development
environment
 It contains set of tools for resource
management
 It provides common way of navigating
through the resources
 Multiple workbenches can be opened at
the same time in individual windows
L0018 - 2008-11-10
11
Eclipse User Interface Layers
 4 Layers:
 The Eclipse Workbench

Overall look-n-feel
 JFace

Architecture-independent models
 SWT

Platform independent API yet rather close to the metal
 Native widgets

Platform dependent: Windows, Linux, Mac, Unix
 The “Eclipse User Interface Guidelines” governs the look-n-feel of the workbench and
JFace
 Consequently (nearly) all Eclipse RCP based applications look the same!
 Use the SWT Bible “The Definitive Guide to SWT and JFace” by Robert Harris and Rob
Warner
Eclipse RCP
Run-time/OSGi
SWT
JFace
Workbench
Preferences
Jobs
ICU
Commands
Registry
L0018 - 2008-11-10
12
SWT and the Native Widgets
 SWT is short for ”The Standard Widget Toolkit”
 SWT is a sub-project of the Eclipse project
 SWT has a common API on all target platforms – the implementation is different
 Base plug-in org.eclipse.swt contains only MANIFEST.MF plus some configuration
files
 A set of platform specific fragments implements all of SWT

org.eclipse.swt.win32.win32.x86 for 32-bit Windows on x86 (not Vista look-n-
feel)

org.eclipse.swt.wpf.win32.x86 for Wista look-n-feel for 32-bit Windows on x86
 SWT is a thin layer on top of the native widgets
 Windows
 Mac
 Motif
 GTK
 SWT can easily be used stand-alone
L0018 - 2008-11-10
13
SWT on Different Platforms
L0018 - 2008-11-10
14
Working with SWT
 SWT API is not as regular as Swing
 The SWT site contains a large repository of “SWT Snippets” that demonstrates most of
the abilities of SWT
 To find leaks with graphical resources use sleak
 It is possible to integrate SWT and Swing to a very large degree
 Though expect problems with shortcuts and focus management
L0018 - 2008-11-10
15
SWT Widgets
 Basic
 Button, Combo, Composite, Group, Label, Link, List, Menu, ProgressBar, Shell,
Slider, Scale, Spinner, TabFolder, Table, Text, ToolBar, and Tree
 Advanced
 Browser, Canvas, CBanner, CCombo, CLabel, CoolBar, CTabFolder, DateTime,
ExpandBar, GLCanvas, Sash, SashForm, ScrolledComposite, StyledText, SWT_AWT,
TableCursor, and Tray
 Other Sources – e.g. Nebula, Sourceforge.net
 FormattedText, Gallery, Grid, and many more
 The C... versions of Label, Combo and TabFolder are emulated and should normally
be avoided if possible
L0018 - 2008-11-10
16
SWT Widgets
L0018 - 2008-11-10
17
The Basic Widget Hierarchy
Widget
Control Menu Item
Button Label Composite List MenuItem TableItem TabItem
Canvas Combo Form OleSiteClient Table, …
L0018 - 2008-11-10
18
The Basic Widget Hierarchy
 Widget
 Top-level abstract super class for all widgets
 Support for

arbitrary associated data

general event management

disposal management
 Control
 Top-level abstract super class for controls
 Support for

foreground, background

border

content menu

focus management

layout management – layout, location and size
 Composite
 Control that can contain other controls
 Support for layout management
 A Composite must have a layout manager, or the child widgets will not be shown!
L0018 - 2008-11-10
19
Using SWT Widgets
 Common constructor form – e.g. new Text(parent, SWT.PASSWORD)
 The parent
 The style argument specifies the basic sub-function of the widget
 Use Text controls for data values event when read-only, as this makes it possible to
select and copy the value
L0018 - 2008-11-10
20
Using SWT Styles
 Second argument of all widget constructions – e.g. new Text(parent,
SWT.PASSWORD)
 The most use styles are
 SWT.NONE – no style needed
 SWT.LEAD, SWT.CENTER, and SWT.TRAIL - the alignment of text in labels, menus
and buttons
 SWT.ARROW, SWT.CHECK, SWT.PUSH, SWT.RADIO, and SWT.TOGGLE - the sub-type of
a button
 SWT.PASSWORD - Text is used for password entry
 SWT.V_SCROLL, SWT.H_SCROLL, and SWT.NO_SCROLL – Table or Tree has vertical,
horizontal or no scroll bar (3.4 and later)
 Some special considerations regarding styles
 Some style arguments cannot be changed once specified in the constructor (e.g.
SWT.CHECK for a Button), whereas others can (e.g. SWT.LEAD for Label)
 Some style arguments have different meaning for different widgets –e.g.
SWT.MULTI for Table and Text
L0018 - 2008-11-10
21
Managing Composites (Composite)
 Children are added to a composite during the construction of the children
 new Text(composite, SWT.BORDER)
 Children are retrieved using
 comp.getChildren()
 Children are removed using
 child.dispose()
 Children can be moved in the parent using
 child.moveAbove(otherChild)
 child.moveBelow(otherChild)
 When a composite is changed, remember to re-layout
 comp.layout()
 Setting the background of children of a composite:
 comp.setBackgroundMode(SWT.INHERIT_DEFAULT)
L0018 - 2008-11-10
22
SWT Layout Managers
 The positioning and sizing of controls in a Composite (and subclasses) is performed
using layout managers
 SWT includes a rather complete set of standard layout managers
 FillLayout and RowLayout: layout is a single row or column
 GridLayout: layout in a grid with size constrains
 FormLayout: layout in canvas with size and edge-to-edge constrains
 Most GUI designer can handle these
 A new layout manager can be created fairly easily created
 computeSize: computes the “natural” size of the Composite
 layout: lays out the controls of the Composite
public abstract class Layout {
protected abstract Point computeSize(Composite composite, int wHint, int hHint, boolean flushCache);
protected abstract void layout(Composite composite, boolean flushCache);
}
L0018 - 2008-11-10
23
Using the Grid Layout (GridLayout)
 Grid Layout is the most used layout manager in Eclipse
 It works by adding the child widgets to the cells in a grid
 Widgets are added in sequence
 When using a Grid Layout, the parent uses the GridLayout and all children use
GridData
final Composite composite = new Composite(parent, SWT.NONE);
final GridLayout gridLayout = new GridLayout(3, false);
composite.setLayout(gridLayout);
label = new Label(composite, SWT.NONE);
label.setText("Label");
text = new Text(composite, SWT.BORDER);
text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
// …
L0018 - 2008-11-10
24
Using the Grid Layout (GridLayout)
 The GridLayout class has two arguments
 numColumns – the number of columns in the grid (defaults to 1)
 makeColumnsEqualWidth – whether all columns in the grid have equal width
(defaults to false)
L0018 - 2008-11-10
25
Using the Grid Data (GridData)
 GridData specifies how a child widget is laid out in the parent grid
 A GridData holds the following primary information
 Grab Excess Space (horizontal and vertical) – describes whether the grid column or row
should expand to grad any excess space (defaults to no grab)
 Span (horizontal and vertical) – describes the number of cells the widget should span
(defaults to 1,1)
 Alignment (horizontal and vertical) – placement of widget within the cells – one of
SWT.BEGINNING, SWT.CENTER, SWT.END or SWT.FILL (defaults to BEGINNING, BEGINNING)
 A GridData also contains information about indentation, minimum size and size hints
 Don’t use the two-argument constructor!
1,1 2,1
2,2
C,C F,C
E,E
Horizontal grabNo grab
L0018 - 2008-11-10
26
Layout Managers for Tables and Trees
 Tables and Trees have a layout the determine how columns are sized
 TableLayout

Will only resize the columns the first time!

Applied to the Table or Tree
 TableColumnLayout

Applied to the Composite of the Table or Tree
 Column constrains saved as layout.setColumnData(column, constraint)
 Both layout manager are based on the same column constraint objects:
 ColumnPixelData – makes a column a specific width in pixels
 ColumnWeightData – makes a column a specific percentage of the summed width
L0018 - 2008-11-10
27
SWT Events
 SWT events and listeners exist in two versions:
 A simple very light-weight version

One event format and listener interface
 A type-safe version

Multiple event formats and listener interfaces tailored to the specific use
 The difference is illustrated in the following example
filter.addListener(SWT.KeyDown, new Listener() {
public void handleEvent(Event event) {
if (event.type == SWT.KeyDown) {
//...
}
}
});
filter.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
//...
}
});
L0018 - 2008-11-10
28
SWT Events
 Key
 KeyDown, KeyUp, HardKeyDown, HardKeyUp
 Mouse
 MouseDown, MouseUp, MouseMove, MouseEnter, MouseExit, MouseDoubleClick, MouseHover,
MouseWheel
 Control
 Paint, Move, Resize, Dispose
 Selection
 Selection, DefaultSelection
 Focus
 FocusIn, FocusOut
 Tree and Table
 Expand, Collapse, EraseItem, MeasureItem, PaintItem
 Shell
 Iconify, Deiconify, Close, Activate, Deactivate
 Menu
 Show, Hide, Arm, MenuDetect
 Basic Controls
 Modify, Verify, SetData, Settings
 Drag-n-Drop
 DragDetect
 Misc
 Help
L0018 - 2008-11-10
29
Lab Exercise
 Create a view with the following look using simple SWT controls
 GridLayout, GridData
 Label, Text, Button
 …addSelectionListener(…)
 Another extra lab for the fast ones:
 add “stuff” to the lab to only allow “a” and “b” in the text field
 and to only allow more “a” than “b”!
 Use a Verify listener
public class View extends ViewPart {
public void createPartControl(Composite parent) {
Composite top = new Composite(parent, SWT.NONE);
// Add something here…
}
public void setFocus() {
}
}
GridLayout with 2 columns
Label
Text
FILL aligned + grab
Button
spans two columns, RIGHT aligned
SelectionListener that prints current text of Text control
L0018 - 2008-11-10
30
Forms UI
 A newer addition of the look-n-feel of the
Eclipse workbench is the Forms UI in
org.eclipse.ui.forms.
 Provide a Web browser like look-n-feel
to forms
 PDE is a good example of the increasing
use of this new technology
 Have some of the same problems as seen in
ordinary Web applications: extensive use of
the mouse! Normally not welcome in office
applications
L0018 - 2008-11-10
31
More Information
 “Eclipse User Interface Guidelines: Version 2.1”
 http://www.eclipse.org/resources/resource.php?id=162

The Look-n-Feel guidelines for Eclipse – heavily influenced by the
corresponding Microsoft Windows Look-n-Feel guidelines
 SWT home
 http://www.eclipse.org/swt/
 SWT versus Swing
 http://www.developer.com/java/other/article.php/2179061
 “Using SwingRCP (instead of SWT) in RCP”
 http://www.eclipsezone.com/eclipse/forums/t104467.rhtml

A discussion of different ways to integrate Eclipse RCP and Swing
 “The Definitive Guide to SWT and JFace” by Robert Harris and Rob Warner (ISBN: 978-
1590593257)
 As it says – “The Definitive Guide…” – and needed due to the pure javadoc of SWT
 “SWT Snippet” Repository
 http://www.eclipse.org/swt/snippets/

A large repository of sample code for most uses of SWT!
L0018 - 2008-11-10
32
More Information
 “Plug a Swing-based development tool into Eclipse”
 http://www-128.ibm.com/developerworks/opensource/library/osswing/
 “Eclipse Forms: Rich UI for the Rich Client”
 http://www.eclipse.org/resources/resource.php?id=140
 “Custom Drawing Table and Tree Items”
 http://www.eclipse.org/resources/resource.php?id=122
 “Using Images in the Eclipse UI”
 http://www.eclipse.org/resources/resource.php?id=236
 “Rich clients with the SWT and JFace”
 http://www.javaworld.com/javaworld/jw-04-2004/jw-0426- swtjface.html?page=2
 “SWT: The Standard Widget Toolkit”
 http://www.eclipse.org/resources/resource.php?id=241
 “Understanding Layouts in SWT”
 http://www.eclipse.org/resources/resource.php?id=242

A good overview of the different basic layouts in Eclipse.
L0018 - 2008-11-10
33
More Information
 “Drag and Drop in the Eclipse UI”
 http://www.eclipse.org/resources/resource.php?id=202
 “Adding Drag and Drop to an SWT Application”
 http://www.eclipse.org/resources/resource.php?id=200
 “Eclipse Data Binding Test Drive” (webinar)
 http://www.eclipse.org/resources/resource.php?id=299
 “Swing/SWT Integration”
 http://www.eclipse.org/resources/resource.php?id=381
 “Eclipse Forms: Rich UI for the Rich Client”
 http://www.eclipse.org/articles/Article-Forms/article.html

The Forms UI explained with some good examples

Contenu connexe

Tendances

Java programming(unit 1)
Java programming(unit 1)Java programming(unit 1)
Java programming(unit 1)SURBHI SAROHA
 
Introduction to Adobe Flex
Introduction to Adobe FlexIntroduction to Adobe Flex
Introduction to Adobe FlexAngelin R
 
Java (Part 2) unit 1
Java (Part 2) unit 1Java (Part 2) unit 1
Java (Part 2) unit 1SURBHI SAROHA
 
The Brainify App - JavaFx
The Brainify App - JavaFxThe Brainify App - JavaFx
The Brainify App - JavaFxMohd Shamweel
 
Developing Java SWT Applications - A Starter
Developing Java SWT Applications - A StarterDeveloping Java SWT Applications - A Starter
Developing Java SWT Applications - A Startervcaselli
 
Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Mikkel Flindt Heisterberg
 
Project report for final year project
Project report for final year projectProject report for final year project
Project report for final year projectsuneel singh
 
android training_material ravy ramio
android training_material ravy ramioandroid training_material ravy ramio
android training_material ravy ramioslesulvy
 
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...Anil Sharma
 

Tendances (11)

6 swt programming
6 swt programming6 swt programming
6 swt programming
 
Java programming(unit 1)
Java programming(unit 1)Java programming(unit 1)
Java programming(unit 1)
 
Introduction to Adobe Flex
Introduction to Adobe FlexIntroduction to Adobe Flex
Introduction to Adobe Flex
 
Java (Part 2) unit 1
Java (Part 2) unit 1Java (Part 2) unit 1
Java (Part 2) unit 1
 
The Brainify App - JavaFx
The Brainify App - JavaFxThe Brainify App - JavaFx
The Brainify App - JavaFx
 
Developing Java SWT Applications - A Starter
Developing Java SWT Applications - A StarterDeveloping Java SWT Applications - A Starter
Developing Java SWT Applications - A Starter
 
Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)
 
perl-java
perl-javaperl-java
perl-java
 
Project report for final year project
Project report for final year projectProject report for final year project
Project report for final year project
 
android training_material ravy ramio
android training_material ravy ramioandroid training_material ravy ramio
android training_material ravy ramio
 
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
 

Similaire à eclipse.dk - Eclipse RCP Under the Hood

ITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-insITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-insTonny Madsen
 
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejenIDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejenTonny Madsen
 
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen (In Dan...
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen (In Dan...IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen (In Dan...
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen (In Dan...Tonny Madsen
 
L0018 - SWT - The Standard Widget Toolkit
L0018 - SWT - The Standard Widget ToolkitL0018 - SWT - The Standard Widget Toolkit
L0018 - SWT - The Standard Widget ToolkitTonny Madsen
 
Introduction To The Eclipse Platform
Introduction To The Eclipse PlatformIntroduction To The Eclipse Platform
Introduction To The Eclipse Platformciukes
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview Lars Vogel
 
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application Platform
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application PlatformEclipse Banking Day in Copenhagen - Eclipse RCP as an Application Platform
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application PlatformTonny Madsen
 
Using OSGi technology in Eclipse - BJ Hargrave, IBM, for Jeff McAffer, IBM
Using OSGi technology in Eclipse - BJ Hargrave, IBM, for Jeff McAffer, IBMUsing OSGi technology in Eclipse - BJ Hargrave, IBM, for Jeff McAffer, IBM
Using OSGi technology in Eclipse - BJ Hargrave, IBM, for Jeff McAffer, IBMmfrancis
 
HCI 3e - Ch 8: Implementation support
HCI 3e - Ch 8:  Implementation supportHCI 3e - Ch 8:  Implementation support
HCI 3e - Ch 8: Implementation supportAlan Dix
 
Re-structuring of a swing-based application into an Eclipse RCP
Re-structuring of a swing-based application into an Eclipse RCPRe-structuring of a swing-based application into an Eclipse RCP
Re-structuring of a swing-based application into an Eclipse RCPgustavoeliano
 
Widgets - the Wookie project
Widgets - the Wookie projectWidgets - the Wookie project
Widgets - the Wookie projectscottw
 
Lotusphere 2011 Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...
Lotusphere 2011  Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...Lotusphere 2011  Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...
Lotusphere 2011 Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...Ryan Baxter
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Mikkel Flindt Heisterberg
 
Developing applications using Embedded Rich Client Platform (eRCP)
Developing applications using Embedded Rich Client Platform (eRCP)Developing applications using Embedded Rich Client Platform (eRCP)
Developing applications using Embedded Rich Client Platform (eRCP)Gorkem Ercan
 
D22 Portlet Development With Open Source Frameworks
D22 Portlet Development With Open Source FrameworksD22 Portlet Development With Open Source Frameworks
D22 Portlet Development With Open Source FrameworksSunil Patil
 
D22 portlet development with open source frameworks
D22 portlet development with open source frameworksD22 portlet development with open source frameworks
D22 portlet development with open source frameworksSunil Patil
 
Eclipse RCP Overview @ Rheinjug
Eclipse RCP Overview @ RheinjugEclipse RCP Overview @ Rheinjug
Eclipse RCP Overview @ RheinjugLars Vogel
 
Sprint Portlet MVC Seminar
Sprint Portlet MVC SeminarSprint Portlet MVC Seminar
Sprint Portlet MVC SeminarJohn Lewis
 
R12 d49656 gc10-apps dba 04
R12 d49656 gc10-apps dba 04R12 d49656 gc10-apps dba 04
R12 d49656 gc10-apps dba 04zeesniper
 
Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Mikkel Flindt Heisterberg
 

Similaire à eclipse.dk - Eclipse RCP Under the Hood (20)

ITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-insITU - MDD - Eclipse Plug-ins
ITU - MDD - Eclipse Plug-ins
 
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejenIDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen
 
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen (In Dan...
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen (In Dan...IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen (In Dan...
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen (In Dan...
 
L0018 - SWT - The Standard Widget Toolkit
L0018 - SWT - The Standard Widget ToolkitL0018 - SWT - The Standard Widget Toolkit
L0018 - SWT - The Standard Widget Toolkit
 
Introduction To The Eclipse Platform
Introduction To The Eclipse PlatformIntroduction To The Eclipse Platform
Introduction To The Eclipse Platform
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview
 
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application Platform
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application PlatformEclipse Banking Day in Copenhagen - Eclipse RCP as an Application Platform
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application Platform
 
Using OSGi technology in Eclipse - BJ Hargrave, IBM, for Jeff McAffer, IBM
Using OSGi technology in Eclipse - BJ Hargrave, IBM, for Jeff McAffer, IBMUsing OSGi technology in Eclipse - BJ Hargrave, IBM, for Jeff McAffer, IBM
Using OSGi technology in Eclipse - BJ Hargrave, IBM, for Jeff McAffer, IBM
 
HCI 3e - Ch 8: Implementation support
HCI 3e - Ch 8:  Implementation supportHCI 3e - Ch 8:  Implementation support
HCI 3e - Ch 8: Implementation support
 
Re-structuring of a swing-based application into an Eclipse RCP
Re-structuring of a swing-based application into an Eclipse RCPRe-structuring of a swing-based application into an Eclipse RCP
Re-structuring of a swing-based application into an Eclipse RCP
 
Widgets - the Wookie project
Widgets - the Wookie projectWidgets - the Wookie project
Widgets - the Wookie project
 
Lotusphere 2011 Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...
Lotusphere 2011  Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...Lotusphere 2011  Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...
Lotusphere 2011 Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)
 
Developing applications using Embedded Rich Client Platform (eRCP)
Developing applications using Embedded Rich Client Platform (eRCP)Developing applications using Embedded Rich Client Platform (eRCP)
Developing applications using Embedded Rich Client Platform (eRCP)
 
D22 Portlet Development With Open Source Frameworks
D22 Portlet Development With Open Source FrameworksD22 Portlet Development With Open Source Frameworks
D22 Portlet Development With Open Source Frameworks
 
D22 portlet development with open source frameworks
D22 portlet development with open source frameworksD22 portlet development with open source frameworks
D22 portlet development with open source frameworks
 
Eclipse RCP Overview @ Rheinjug
Eclipse RCP Overview @ RheinjugEclipse RCP Overview @ Rheinjug
Eclipse RCP Overview @ Rheinjug
 
Sprint Portlet MVC Seminar
Sprint Portlet MVC SeminarSprint Portlet MVC Seminar
Sprint Portlet MVC Seminar
 
R12 d49656 gc10-apps dba 04
R12 d49656 gc10-apps dba 04R12 d49656 gc10-apps dba 04
R12 d49656 gc10-apps dba 04
 
Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)
 

Plus de Tonny Madsen

L0043 - Interfacing to Eclipse Standard Views
L0043 - Interfacing to Eclipse Standard ViewsL0043 - Interfacing to Eclipse Standard Views
L0043 - Interfacing to Eclipse Standard ViewsTonny Madsen
 
L0037 - Basic Eclipse Configuration
L0037 - Basic Eclipse ConfigurationL0037 - Basic Eclipse Configuration
L0037 - Basic Eclipse ConfigurationTonny Madsen
 
L0036 - Creating Views and Editors
L0036 - Creating Views and EditorsL0036 - Creating Views and Editors
L0036 - Creating Views and EditorsTonny Madsen
 
L0020 - The Basic RCP Application
L0020 - The Basic RCP ApplicationL0020 - The Basic RCP Application
L0020 - The Basic RCP ApplicationTonny Madsen
 
L0016 - The Structure of an Eclipse Plug-in
L0016 - The Structure of an Eclipse Plug-inL0016 - The Structure of an Eclipse Plug-in
L0016 - The Structure of an Eclipse Plug-inTonny Madsen
 
L0001 - The Terminology of the Eclipse Platform
L0001 - The Terminology of the Eclipse PlatformL0001 - The Terminology of the Eclipse Platform
L0001 - The Terminology of the Eclipse PlatformTonny Madsen
 
EclipseCon '11 - Using Adapters to Handle Menus and Handlers in Large Scale A...
EclipseCon '11 - Using Adapters to Handle Menus and Handlers in Large Scale A...EclipseCon '11 - Using Adapters to Handle Menus and Handlers in Large Scale A...
EclipseCon '11 - Using Adapters to Handle Menus and Handlers in Large Scale A...Tonny Madsen
 
PROSA - Eclipse Is Just What?
PROSA - Eclipse Is Just What?PROSA - Eclipse Is Just What?
PROSA - Eclipse Is Just What?Tonny Madsen
 
Eclipse Demo Camp 2010 - Eclipse e4 – The Status and the Future
Eclipse Demo Camp 2010 - Eclipse e4 – The Status and the FutureEclipse Demo Camp 2010 - Eclipse e4 – The Status and the Future
Eclipse Demo Camp 2010 - Eclipse e4 – The Status and the FutureTonny Madsen
 
Eclipse Demo Camp 2010 - UI Bindings - An Introduction
Eclipse Demo Camp 2010 - UI Bindings - An IntroductionEclipse Demo Camp 2010 - UI Bindings - An Introduction
Eclipse Demo Camp 2010 - UI Bindings - An IntroductionTonny Madsen
 
ITU - MDD – Model-to-Model Transformations
ITU - MDD – Model-to-Model TransformationsITU - MDD – Model-to-Model Transformations
ITU - MDD – Model-to-Model TransformationsTonny Madsen
 
IDA - Eclipse Workshop II (In Danish)
IDA - Eclipse Workshop II (In Danish)IDA - Eclipse Workshop II (In Danish)
IDA - Eclipse Workshop II (In Danish)Tonny Madsen
 
IDA - Eclipse Workshop I (In Danish)
IDA - Eclipse Workshop I (In Danish)IDA - Eclipse Workshop I (In Danish)
IDA - Eclipse Workshop I (In Danish)Tonny Madsen
 
EclipseCon '08 - BoF - Building a local Eclipse user group
EclipseCon '08 - BoF - Building a local Eclipse user groupEclipseCon '08 - BoF - Building a local Eclipse user group
EclipseCon '08 - BoF - Building a local Eclipse user groupTonny Madsen
 
Eclipse Summit Europe '08 - Implementing Screen Flows in Eclipse RCP Applicat...
Eclipse Summit Europe '08 - Implementing Screen Flows in Eclipse RCP Applicat...Eclipse Summit Europe '08 - Implementing Screen Flows in Eclipse RCP Applicat...
Eclipse Summit Europe '08 - Implementing Screen Flows in Eclipse RCP Applicat...Tonny Madsen
 
EclipseCon '09 - The Happy Marriage of EMF, Data binding, UI Forms and Field ...
EclipseCon '09 - The Happy Marriage of EMF, Data binding, UI Forms and Field ...EclipseCon '09 - The Happy Marriage of EMF, Data binding, UI Forms and Field ...
EclipseCon '09 - The Happy Marriage of EMF, Data binding, UI Forms and Field ...Tonny Madsen
 
ITU - MDD – Modeling Techniques
ITU - MDD – Modeling TechniquesITU - MDD – Modeling Techniques
ITU - MDD – Modeling TechniquesTonny Madsen
 

Plus de Tonny Madsen (20)

L0043 - Interfacing to Eclipse Standard Views
L0043 - Interfacing to Eclipse Standard ViewsL0043 - Interfacing to Eclipse Standard Views
L0043 - Interfacing to Eclipse Standard Views
 
L0037 - Basic Eclipse Configuration
L0037 - Basic Eclipse ConfigurationL0037 - Basic Eclipse Configuration
L0037 - Basic Eclipse Configuration
 
L0036 - Creating Views and Editors
L0036 - Creating Views and EditorsL0036 - Creating Views and Editors
L0036 - Creating Views and Editors
 
L0033 - JFace
L0033 - JFaceL0033 - JFace
L0033 - JFace
 
L0020 - The Basic RCP Application
L0020 - The Basic RCP ApplicationL0020 - The Basic RCP Application
L0020 - The Basic RCP Application
 
L0016 - The Structure of an Eclipse Plug-in
L0016 - The Structure of an Eclipse Plug-inL0016 - The Structure of an Eclipse Plug-in
L0016 - The Structure of an Eclipse Plug-in
 
L0001 - The Terminology of the Eclipse Platform
L0001 - The Terminology of the Eclipse PlatformL0001 - The Terminology of the Eclipse Platform
L0001 - The Terminology of the Eclipse Platform
 
EclipseCon '11 - Using Adapters to Handle Menus and Handlers in Large Scale A...
EclipseCon '11 - Using Adapters to Handle Menus and Handlers in Large Scale A...EclipseCon '11 - Using Adapters to Handle Menus and Handlers in Large Scale A...
EclipseCon '11 - Using Adapters to Handle Menus and Handlers in Large Scale A...
 
PROSA - Eclipse Is Just What?
PROSA - Eclipse Is Just What?PROSA - Eclipse Is Just What?
PROSA - Eclipse Is Just What?
 
Eclipse Demo Camp 2010 - Eclipse e4 – The Status and the Future
Eclipse Demo Camp 2010 - Eclipse e4 – The Status and the FutureEclipse Demo Camp 2010 - Eclipse e4 – The Status and the Future
Eclipse Demo Camp 2010 - Eclipse e4 – The Status and the Future
 
Eclipse Demo Camp 2010 - UI Bindings - An Introduction
Eclipse Demo Camp 2010 - UI Bindings - An IntroductionEclipse Demo Camp 2010 - UI Bindings - An Introduction
Eclipse Demo Camp 2010 - UI Bindings - An Introduction
 
ITU - MDD – Model-to-Model Transformations
ITU - MDD – Model-to-Model TransformationsITU - MDD – Model-to-Model Transformations
ITU - MDD – Model-to-Model Transformations
 
IDA - Eclipse Workshop II (In Danish)
IDA - Eclipse Workshop II (In Danish)IDA - Eclipse Workshop II (In Danish)
IDA - Eclipse Workshop II (In Danish)
 
IDA - Eclipse Workshop I (In Danish)
IDA - Eclipse Workshop I (In Danish)IDA - Eclipse Workshop I (In Danish)
IDA - Eclipse Workshop I (In Danish)
 
ITU - MDD - EMF
ITU - MDD - EMFITU - MDD - EMF
ITU - MDD - EMF
 
ITU - MDD - XText
ITU - MDD - XTextITU - MDD - XText
ITU - MDD - XText
 
EclipseCon '08 - BoF - Building a local Eclipse user group
EclipseCon '08 - BoF - Building a local Eclipse user groupEclipseCon '08 - BoF - Building a local Eclipse user group
EclipseCon '08 - BoF - Building a local Eclipse user group
 
Eclipse Summit Europe '08 - Implementing Screen Flows in Eclipse RCP Applicat...
Eclipse Summit Europe '08 - Implementing Screen Flows in Eclipse RCP Applicat...Eclipse Summit Europe '08 - Implementing Screen Flows in Eclipse RCP Applicat...
Eclipse Summit Europe '08 - Implementing Screen Flows in Eclipse RCP Applicat...
 
EclipseCon '09 - The Happy Marriage of EMF, Data binding, UI Forms and Field ...
EclipseCon '09 - The Happy Marriage of EMF, Data binding, UI Forms and Field ...EclipseCon '09 - The Happy Marriage of EMF, Data binding, UI Forms and Field ...
EclipseCon '09 - The Happy Marriage of EMF, Data binding, UI Forms and Field ...
 
ITU - MDD – Modeling Techniques
ITU - MDD – Modeling TechniquesITU - MDD – Modeling Techniques
ITU - MDD – Modeling Techniques
 

Dernier

Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeThiyagu K
 
mini mental status format.docx
mini    mental       status     format.docxmini    mental       status     format.docx
mini mental status format.docxPoojaSen20
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptxVS Mahajan Coaching Centre
 
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...Sapna Thakur
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesFatimaKhan178732
 
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Sapana Sha
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactPECB
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxSayali Powar
 
Disha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdfDisha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdfchloefrazer622
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Disha Kariya
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Krashi Coaching
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...fonyou31
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajanpragatimahajan3
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDThiyagu K
 

Dernier (20)

Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and Mode
 
mini mental status format.docx
mini    mental       status     format.docxmini    mental       status     format.docx
mini mental status format.docx
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
 
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
BAG TECHNIQUE Bag technique-a tool making use of public health bag through wh...
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and Actinides
 
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
 
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
 
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptxINDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
 
Disha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdfDisha NEET Physics Guide for classes 11 and 12.pdf
Disha NEET Physics Guide for classes 11 and 12.pdf
 
Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..Sports & Fitness Value Added Course FY..
Sports & Fitness Value Added Course FY..
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajan
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SD
 

eclipse.dk - Eclipse RCP Under the Hood

  • 1. PR0031 - 2010-11-01 Redistribution and other use of this material requires written permission from The RCP Company. Eclipse RCP Under the Hood Denne event er en kombination af en tutorial day og en live demonstration af en "full featured" Eclipse RCP applikation hvor udviklingen kommenteres on-the-fly. Medbring din laptop og prøv selv hvordan man forholdsvis let kan starte en Eclipse RCP applikation. Det er meget vigtigt at du allerede har Eclipse 3.6 installeret på maskinen. Følgende emner vil blive demonstreret / omtalt Eclipse RCP Arkitektur Konfiguration (OSGi console, plugin.xml, manifest.mf...) Packaging Extension Points UI / SWT / JFace Editors / Views Building and Testing
  • 2. PR0029 - 2010-05-31 2 About Me  Tonny Madsen, Founder and Owner of The RCP Company  20 years of experience in system development in major companies  9 years experience as the Systems Architect of an 20+ MLoC project  8 years of experience with Eclipse and Eclipse RCP  Solutions Member of the Eclipse Foundation  Chairman of Eclipse.dk  Extern Lecturer at IT-University on Model Driven Development and Domain Specific Languages  Regular speaker at EclipseCon, Eclipse Summit, etc
  • 3. L0001 - 2008-11-27 3 Eclipse Architecture  Goals for the Eclipse architecture  Be able to host any number of 3rd party applications  Scalability in terms of size and complexity of hosted applications  Alignment with native UI look-n-feel  Flexible architecture, structured around  Plug-ins – the basic unit of functionality  Extension points – the defined interfaces between plug-ins  This architecture allows for  Implementation of 3rd party applications on top of the basic platform (Eclipse RCP)  Additional tools to be integrated in the platform  Integrated tools to be further extended
  • 4. L0001 - 2008-11-27 4 Eclipse Platform Resources Workspace Help Update Team WebServer Filesystems Apache Search Navigator Intro TextEditors Eclipse Architectural Components JDT CVS WTP Datatools VE BIRT Mylyn PDE Eclipse RCP Run-time/OSGi SWT JFace Workbench Preferences Jobs ICU Commands Registry CDT
  • 5. L0001 - 2008-11-27 5 The Basic RCP Components  In the Eclipse, everything is a plug-in including the run-time platform itself  It is a small kernel that represents the base of the platform  Built on top of OSGi  All subsystems built on the run-time platform follows the rules of plug-ins:  They are plug-ins themselves  RCP includes:  Component Management  Resources Management  Preferences  Workbench (include SWT and JFace)  RCP does not include the following:  Update  Help  This can be included from the Eclipse platform Eclipse RCP Run-time/OSGi SWT JFace Workbench Preferences Jobs ICU Commands Registry
  • 6. L0001 - 2008-11-27 6 Application Platform Comm. Logging Help Update Auth. Auditing Apache Intro Your Typical RCP Application Base Add-on Add-on Add-on Add-on DebugTools DataModel Eclipse RCP Run-time/OSGi SWT JFace Workbench Preferences Jobs ICU Commands Registry Add-on
  • 7. L0001 - 2008-11-27 7 Organizing the Platform  The software of an Eclipse system is based on the following terms:  Plug-ins – a plug-in is the basic unit of software  Fragments – a fragment is an add-on to an existing plug-in with additional functionality  Features – a feature is a number of plug-ins that is distributed and updated as a whole  Applications – an application is a Java class that implements a specific interface and is declared as such in the plug-in  Products – a product is a set of features or plug-ins along with the appropriate branding
  • 8. L0001 - 2008-11-27 8 Extension Points  Describe additional functionality that could be integrated with the platform  External tools extend the platform to bring specific functionality  Java Development Tooling (JDT) and Plug-in Development Environment (PDE) are external tools integrated with the platform  Extension points are used to  Add an implementation for a generic feature  Extend the workbench  Extend common object factory  Advantages:  Allows for late load and startup of plug-ins  Provides a common “registry” for most extensions like views, perspectives, commands, etc  Disadvantages:  Makes it harder to understand flow of control  ID Hell!  Extension points may have corresponding API interface  Describes what should be provided in the extension
  • 9. L0001 - 2008-11-27 9 Eclipse RCP Run-time/OSGi SWT JFace Workbench Preferences Jobs ICU Commands Registry The Role of Run-Time/OSGi  Dynamic module system for Java  Solves many of the problems of big applications  Late activation of code  Multiple versions of the same library  Eclipse is the reference implementation!
  • 10. L0001 - 2008-11-27 10 Eclipse RCP Run-time/OSGi SWT JFace Workbench Preferences Jobs ICU Commands Registry Workbench  Represents the desktop development environment  It contains set of tools for resource management  It provides common way of navigating through the resources  Multiple workbenches can be opened at the same time in individual windows
  • 11. L0018 - 2008-11-10 11 Eclipse User Interface Layers  4 Layers:  The Eclipse Workbench  Overall look-n-feel  JFace  Architecture-independent models  SWT  Platform independent API yet rather close to the metal  Native widgets  Platform dependent: Windows, Linux, Mac, Unix  The “Eclipse User Interface Guidelines” governs the look-n-feel of the workbench and JFace  Consequently (nearly) all Eclipse RCP based applications look the same!  Use the SWT Bible “The Definitive Guide to SWT and JFace” by Robert Harris and Rob Warner Eclipse RCP Run-time/OSGi SWT JFace Workbench Preferences Jobs ICU Commands Registry
  • 12. L0018 - 2008-11-10 12 SWT and the Native Widgets  SWT is short for ”The Standard Widget Toolkit”  SWT is a sub-project of the Eclipse project  SWT has a common API on all target platforms – the implementation is different  Base plug-in org.eclipse.swt contains only MANIFEST.MF plus some configuration files  A set of platform specific fragments implements all of SWT  org.eclipse.swt.win32.win32.x86 for 32-bit Windows on x86 (not Vista look-n- feel)  org.eclipse.swt.wpf.win32.x86 for Wista look-n-feel for 32-bit Windows on x86  SWT is a thin layer on top of the native widgets  Windows  Mac  Motif  GTK  SWT can easily be used stand-alone
  • 13. L0018 - 2008-11-10 13 SWT on Different Platforms
  • 14. L0018 - 2008-11-10 14 Working with SWT  SWT API is not as regular as Swing  The SWT site contains a large repository of “SWT Snippets” that demonstrates most of the abilities of SWT  To find leaks with graphical resources use sleak  It is possible to integrate SWT and Swing to a very large degree  Though expect problems with shortcuts and focus management
  • 15. L0018 - 2008-11-10 15 SWT Widgets  Basic  Button, Combo, Composite, Group, Label, Link, List, Menu, ProgressBar, Shell, Slider, Scale, Spinner, TabFolder, Table, Text, ToolBar, and Tree  Advanced  Browser, Canvas, CBanner, CCombo, CLabel, CoolBar, CTabFolder, DateTime, ExpandBar, GLCanvas, Sash, SashForm, ScrolledComposite, StyledText, SWT_AWT, TableCursor, and Tray  Other Sources – e.g. Nebula, Sourceforge.net  FormattedText, Gallery, Grid, and many more  The C... versions of Label, Combo and TabFolder are emulated and should normally be avoided if possible
  • 17. L0018 - 2008-11-10 17 The Basic Widget Hierarchy Widget Control Menu Item Button Label Composite List MenuItem TableItem TabItem Canvas Combo Form OleSiteClient Table, …
  • 18. L0018 - 2008-11-10 18 The Basic Widget Hierarchy  Widget  Top-level abstract super class for all widgets  Support for  arbitrary associated data  general event management  disposal management  Control  Top-level abstract super class for controls  Support for  foreground, background  border  content menu  focus management  layout management – layout, location and size  Composite  Control that can contain other controls  Support for layout management  A Composite must have a layout manager, or the child widgets will not be shown!
  • 19. L0018 - 2008-11-10 19 Using SWT Widgets  Common constructor form – e.g. new Text(parent, SWT.PASSWORD)  The parent  The style argument specifies the basic sub-function of the widget  Use Text controls for data values event when read-only, as this makes it possible to select and copy the value
  • 20. L0018 - 2008-11-10 20 Using SWT Styles  Second argument of all widget constructions – e.g. new Text(parent, SWT.PASSWORD)  The most use styles are  SWT.NONE – no style needed  SWT.LEAD, SWT.CENTER, and SWT.TRAIL - the alignment of text in labels, menus and buttons  SWT.ARROW, SWT.CHECK, SWT.PUSH, SWT.RADIO, and SWT.TOGGLE - the sub-type of a button  SWT.PASSWORD - Text is used for password entry  SWT.V_SCROLL, SWT.H_SCROLL, and SWT.NO_SCROLL – Table or Tree has vertical, horizontal or no scroll bar (3.4 and later)  Some special considerations regarding styles  Some style arguments cannot be changed once specified in the constructor (e.g. SWT.CHECK for a Button), whereas others can (e.g. SWT.LEAD for Label)  Some style arguments have different meaning for different widgets –e.g. SWT.MULTI for Table and Text
  • 21. L0018 - 2008-11-10 21 Managing Composites (Composite)  Children are added to a composite during the construction of the children  new Text(composite, SWT.BORDER)  Children are retrieved using  comp.getChildren()  Children are removed using  child.dispose()  Children can be moved in the parent using  child.moveAbove(otherChild)  child.moveBelow(otherChild)  When a composite is changed, remember to re-layout  comp.layout()  Setting the background of children of a composite:  comp.setBackgroundMode(SWT.INHERIT_DEFAULT)
  • 22. L0018 - 2008-11-10 22 SWT Layout Managers  The positioning and sizing of controls in a Composite (and subclasses) is performed using layout managers  SWT includes a rather complete set of standard layout managers  FillLayout and RowLayout: layout is a single row or column  GridLayout: layout in a grid with size constrains  FormLayout: layout in canvas with size and edge-to-edge constrains  Most GUI designer can handle these  A new layout manager can be created fairly easily created  computeSize: computes the “natural” size of the Composite  layout: lays out the controls of the Composite public abstract class Layout { protected abstract Point computeSize(Composite composite, int wHint, int hHint, boolean flushCache); protected abstract void layout(Composite composite, boolean flushCache); }
  • 23. L0018 - 2008-11-10 23 Using the Grid Layout (GridLayout)  Grid Layout is the most used layout manager in Eclipse  It works by adding the child widgets to the cells in a grid  Widgets are added in sequence  When using a Grid Layout, the parent uses the GridLayout and all children use GridData final Composite composite = new Composite(parent, SWT.NONE); final GridLayout gridLayout = new GridLayout(3, false); composite.setLayout(gridLayout); label = new Label(composite, SWT.NONE); label.setText("Label"); text = new Text(composite, SWT.BORDER); text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1)); // …
  • 24. L0018 - 2008-11-10 24 Using the Grid Layout (GridLayout)  The GridLayout class has two arguments  numColumns – the number of columns in the grid (defaults to 1)  makeColumnsEqualWidth – whether all columns in the grid have equal width (defaults to false)
  • 25. L0018 - 2008-11-10 25 Using the Grid Data (GridData)  GridData specifies how a child widget is laid out in the parent grid  A GridData holds the following primary information  Grab Excess Space (horizontal and vertical) – describes whether the grid column or row should expand to grad any excess space (defaults to no grab)  Span (horizontal and vertical) – describes the number of cells the widget should span (defaults to 1,1)  Alignment (horizontal and vertical) – placement of widget within the cells – one of SWT.BEGINNING, SWT.CENTER, SWT.END or SWT.FILL (defaults to BEGINNING, BEGINNING)  A GridData also contains information about indentation, minimum size and size hints  Don’t use the two-argument constructor! 1,1 2,1 2,2 C,C F,C E,E Horizontal grabNo grab
  • 26. L0018 - 2008-11-10 26 Layout Managers for Tables and Trees  Tables and Trees have a layout the determine how columns are sized  TableLayout  Will only resize the columns the first time!  Applied to the Table or Tree  TableColumnLayout  Applied to the Composite of the Table or Tree  Column constrains saved as layout.setColumnData(column, constraint)  Both layout manager are based on the same column constraint objects:  ColumnPixelData – makes a column a specific width in pixels  ColumnWeightData – makes a column a specific percentage of the summed width
  • 27. L0018 - 2008-11-10 27 SWT Events  SWT events and listeners exist in two versions:  A simple very light-weight version  One event format and listener interface  A type-safe version  Multiple event formats and listener interfaces tailored to the specific use  The difference is illustrated in the following example filter.addListener(SWT.KeyDown, new Listener() { public void handleEvent(Event event) { if (event.type == SWT.KeyDown) { //... } } }); filter.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { //... } });
  • 28. L0018 - 2008-11-10 28 SWT Events  Key  KeyDown, KeyUp, HardKeyDown, HardKeyUp  Mouse  MouseDown, MouseUp, MouseMove, MouseEnter, MouseExit, MouseDoubleClick, MouseHover, MouseWheel  Control  Paint, Move, Resize, Dispose  Selection  Selection, DefaultSelection  Focus  FocusIn, FocusOut  Tree and Table  Expand, Collapse, EraseItem, MeasureItem, PaintItem  Shell  Iconify, Deiconify, Close, Activate, Deactivate  Menu  Show, Hide, Arm, MenuDetect  Basic Controls  Modify, Verify, SetData, Settings  Drag-n-Drop  DragDetect  Misc  Help
  • 29. L0018 - 2008-11-10 29 Lab Exercise  Create a view with the following look using simple SWT controls  GridLayout, GridData  Label, Text, Button  …addSelectionListener(…)  Another extra lab for the fast ones:  add “stuff” to the lab to only allow “a” and “b” in the text field  and to only allow more “a” than “b”!  Use a Verify listener public class View extends ViewPart { public void createPartControl(Composite parent) { Composite top = new Composite(parent, SWT.NONE); // Add something here… } public void setFocus() { } } GridLayout with 2 columns Label Text FILL aligned + grab Button spans two columns, RIGHT aligned SelectionListener that prints current text of Text control
  • 30. L0018 - 2008-11-10 30 Forms UI  A newer addition of the look-n-feel of the Eclipse workbench is the Forms UI in org.eclipse.ui.forms.  Provide a Web browser like look-n-feel to forms  PDE is a good example of the increasing use of this new technology  Have some of the same problems as seen in ordinary Web applications: extensive use of the mouse! Normally not welcome in office applications
  • 31. L0018 - 2008-11-10 31 More Information  “Eclipse User Interface Guidelines: Version 2.1”  http://www.eclipse.org/resources/resource.php?id=162  The Look-n-Feel guidelines for Eclipse – heavily influenced by the corresponding Microsoft Windows Look-n-Feel guidelines  SWT home  http://www.eclipse.org/swt/  SWT versus Swing  http://www.developer.com/java/other/article.php/2179061  “Using SwingRCP (instead of SWT) in RCP”  http://www.eclipsezone.com/eclipse/forums/t104467.rhtml  A discussion of different ways to integrate Eclipse RCP and Swing  “The Definitive Guide to SWT and JFace” by Robert Harris and Rob Warner (ISBN: 978- 1590593257)  As it says – “The Definitive Guide…” – and needed due to the pure javadoc of SWT  “SWT Snippet” Repository  http://www.eclipse.org/swt/snippets/  A large repository of sample code for most uses of SWT!
  • 32. L0018 - 2008-11-10 32 More Information  “Plug a Swing-based development tool into Eclipse”  http://www-128.ibm.com/developerworks/opensource/library/osswing/  “Eclipse Forms: Rich UI for the Rich Client”  http://www.eclipse.org/resources/resource.php?id=140  “Custom Drawing Table and Tree Items”  http://www.eclipse.org/resources/resource.php?id=122  “Using Images in the Eclipse UI”  http://www.eclipse.org/resources/resource.php?id=236  “Rich clients with the SWT and JFace”  http://www.javaworld.com/javaworld/jw-04-2004/jw-0426- swtjface.html?page=2  “SWT: The Standard Widget Toolkit”  http://www.eclipse.org/resources/resource.php?id=241  “Understanding Layouts in SWT”  http://www.eclipse.org/resources/resource.php?id=242  A good overview of the different basic layouts in Eclipse.
  • 33. L0018 - 2008-11-10 33 More Information  “Drag and Drop in the Eclipse UI”  http://www.eclipse.org/resources/resource.php?id=202  “Adding Drag and Drop to an SWT Application”  http://www.eclipse.org/resources/resource.php?id=200  “Eclipse Data Binding Test Drive” (webinar)  http://www.eclipse.org/resources/resource.php?id=299  “Swing/SWT Integration”  http://www.eclipse.org/resources/resource.php?id=381  “Eclipse Forms: Rich UI for the Rich Client”  http://www.eclipse.org/articles/Article-Forms/article.html  The Forms UI explained with some good examples

Notes de l'éditeur

  1. The basic goals for the Eclipse architecture means – among other things – that the complete platform must be equally accessible for all parties. So all parts of the basic platform must be Free of charge Fully documented No licensing attached to any of the software apart from the basic EPL – Eclipse Public License The basic unit of functionality in Eclipse is the plug-in. A single plug-in can encompass a complete application, but it can also be a functional independent part of an application. The interfaces between plug-ins is defined via extension points  Extension points are well-defined places in the system where other plug-ins can contribute functionality. Each major subsystem in Eclipse IDE and Eclipse RCP is itself structured as a set of plug-ins that implement some key function and define extension points.  The Eclipse system itself is built by contributing to the same extension points that third party plug-in providers can use.  Plug-ins can define their own extension points or simply add extensions to the extension points of other plug-ins. Note that the concepts of plug-ins and extension points runs very deep in the Eclipse platform: even the very basic parts of the platform are organized as plug-ins with extension points. The only Eclipse RCP plug-in that does not provide or use extensions is SWT.
  2. Eclipse products are built in layers. At the bottom there are Eclipse RCP with the bare necessities. The RCP subsystems typically add visible features to the platform and provide APIs for extending their functionality. Some of these components supply additional class libraries that do not directly relate to an extension point, but can be used to implement extensions. For example, the workbench UI supplies the JFace UI framework and the SWT widget toolkit. The platform layer adds the generic features needed for an Integrated Development Environment (IDE). The different language support sits on top of the platform. The basic IDE features (known under the misleading name Eclipse SDK) includes two major tools that are useful for plug-in development. The Java development tooling (JDT) implements a full featured Java development environment. The Plug-in Developer Environment (PDE) adds specialized tools that streamline the development of plug-ins and extensions. Likewise for the many features of Calisto, Europa and now Ganymede. They are also layered to provide a set of basic features that are used by other features to provide better and more specialized tools. The Resources, Workspace and Update components shown above is not really part of the very basic RCP component set. They are used very often in RCP applications.
  3. The platform run-time core implements the run-time engine that starts the platform base and dynamically discovers plug-ins. A plug-in is a structured component that describes itself to the system using a manifest (plugin.xml) file. The platform maintains a registry of installed plug-ins and the functions they provide. Functionality is added to the system using a common extension model. Extension points are well-defined function points in the system that can be extended by plug-ins. When a plug-in contributes an implementation for an extension point, we say that it adds an extension to the platform. Plug-ins can define their own extension points, so that other plug-ins can integrate tightly with them. The extension mechanisms are the only means of adding function to the platform and other plug-ins. All plug-ins use the same mechanisms.  Plug-ins provided with the Eclipse SDK do not use any private mechanisms in their implementation. Extensions are typically written in Java using the platform APIs. However, some extension points accommodate extensions provided as platform executables, ActiveX components, or developed in scripting languages. In general, only a subset of the full platform function is available to non-Java extensions. A general goal of the run-time is that the end user should not pay a memory or performance penalty for plug-ins that are installed, but not used. A plug-in can be installed and added to the registry, but the plug-in will not be activated unless a function provided by the plug-in has been requested according to the user's activity.
  4. Using Eclipse RCP in an application is typically done the very same way as when used in Eclipse IDE. At the bottom there are Eclipse RCP with the bare necessities. The platform layer adds the generic features needed for any application in the specific environment. The application itself is then placed at the top.
  5. The terms listed above are central to an Eclipse system and it is rather important to understand them in order to implement a big Eclipse application.
  6. There are two parallel JSR projects which both looks at OSGi, but with totally different results! JSR 291, “Dynamic Component Support for Java SE”, aims to use OSGi directly in standard Java SE JSR 277, “Java Module System”, aims to implement a completely new module system. In this case “OSGi is not good enough”.
  7. The term Workbench refers to the desktop development environment. The Workbench aims to achieve seamless tool integration and controlled openness by providing a common paradigm for the creation, management, and navigation of Workbench resources. Each Workbench window contains one or more perspectives.  Perspectives contain views and editors and control what appears in certain menus and tool bars.  More than one Workbench window can exist on the desktop at any given time.
  8. The look-n-feel of the native widgets and SWT is governed by the native look-n-feel guide. Eclipse adds some further rules on top of these in the form of “Eclipse User Interface Guidelines”. The look-n-feel of an RCP application can be changed; this is described in the module “L0019 - Changing the Look-n-Feel”.
  9. The Standard Widget Toolkit (SWT) is a Java class library that allows you to create native user interfaces. It's designed to provide efficient, portable access to the underlying facilities of the operating system on which it's implemented. SWT uses native widgets wherever possible, giving an SWT program a native look and feel and a high level of integration with the desktop. In addition, SWT includes a rich set of controls such as tree, table, and tab folder The SWT library actually exists in a number of editions – one for each target platform. In Eclipse there are a single generic SWT plug-in with very little functionality and a SWT fragment for each of the target platforms. The version of the SWT fragment that is part of the Eclipse IDE or RCP download, is one of the major differences between the different platforms. The Eclipse platform fully supports development of SWT stand-alone applications.
  10. SWT is just a thin layer on top of the native widgets. This is illustrated on this slide, where the same tiny SWT based application has been run on a number of platforms. As can be seen, the look-n-feel of the application follows the native look-n-feel exactly.
  11. Sleak is a simple tool that monitors the creation and disposing of SWT graphics resources. See here for more information: http://www.eclipse.org/swt/tools.php Please the article “Swing/SWT Integration” for a description of how to integrate SWT and Swing.
  12. There are quite a few alternative SWT widgets on the net – especially on Sourceforge.
  13. Images taken from the SWT homepage.
  14. The style arguments that are allowed for different widgets, varies greatly. Also the meaning differs somewhat between widgets. For a complete description of the exact meaning of the different style arguments, the javadoc is not enough – instead refer to SWT Bible “The Definitive Guide to SWT and JFace” by Robert Harris and Rob Warner.
  15. The Swing layout manager GridBagLayout is very similar to SWTs GridLayout, as is Swings SpringLayout with SWTs FormLayout. Eclipse IDE includes more than 50 special case layouts – e.g. for tab folders and the perspective switcher of the workbench window. If you forget to add a layout manager to a Composite (or children) then the children will very likely not be shown at all as they will all have zero size!
  16. ColumnWeightData can also handle fixed size columns, so ColumnPixelData really is obsolete.
  17. The generic light-weight Listener interface is primary used for low-level events such as MouseMove, whereas the type-safe version is used for just about everything else.
  18. Now it’s time for the lab. The extra lab exercise with the form with multiple labels is taken from a puzzle by Eugene Kuleshov – see http://www.jroller.com/eu/entry/an_swt_puzzler.
  19. Covered in details in the module “L0002 – Using Eclipse Forms“. Also read more in “Eclipse Forms: Rich UI for the Rich Client”. UI Forms is an optional Rich Client plug-in based on SWT and JFace that provides the support for creating portable web-style user interfaces across all Eclipse UI categories. It provides a few carefully chosen custom widgets, layouts and support classes required to achieve the desired Web look. Being based on SWT, they are inherently portable across all the platforms where SWT is supported. UI Forms break the established expectations on which classes of widgets can be expected in Eclipse workbench UI categories (editors, views, wizards, dialogs). An Eclipse form can appear in any and all of them, expanding the possibilities of the UI developers to use the most appropriate concept for the task regardless where they are. Eclipse Forms add the following to make web-style user interfaces possible: A concept of a 'form' that is suitable for inclusion in the content areas such as views and editors A toolkit that manages colors, hyperlink groups and other aspects of a form, as well as serve as a factory for a number of SWT controls A new layout manager that lays out controls similar to HTML table layout algorithm A set of custom control designed to fit in the form (hyperlink, image hyperlink, scrollable composite, section) A multi-page editor where each page is a form (e.g. PDE manifest editors)