21
© 2002 IBM Corporation Confidential | Date | Other Information, if necessary © 2004 IBM Corporation | February 3, 2004 Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

Embed Size (px)

Citation preview

Page 1: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

© 2002 IBM CorporationConfidential | Date | Other Information, if necessary© 2004 IBM Corporation | February 3, 2004

Overview of the Generic Workbench (Eclipse RCP UI)

Presented by Nick Edgar, IBM Ottawa

Eclipse Rich Client Applications

Page 2: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

2 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

Just what does “RCP” mean?!?

! The Eclipse OSGi runtime (dynamic plug-ins)?! The Eclipse Generic Workbench?! The foundation for Lotus Workplace?! “Really Cool Platform”?! A Platform we want to sell to really Rich Clients ?

! Answer: All the above?

Page 3: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

3 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

Just what does “RCP” mean?!?

! The Eclipse OSGi runtime (dynamic plug-ins)?! The Eclipse Generic Workbench?! The foundation for Lotus Workplace?! “Really Cool Platform”?! A Platform we want to sell to really Rich Clients ?

! Answer: All the above (except the last one -- Eclipse is still open source).

! “Rich Client Platform”A Platform for building Client applications with Rich functionality

Page 4: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

4 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

What is the Eclipse RCP?

That was then: “Eclipse is a kind of universal tool platform - an open extensible IDE for anything and nothing in particular.”

This is now: Eclipse is an open, extensible platform for any application.

Page 5: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

5 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

Why are we doing this?Just look around at EclipseCon for non-IDE uses of Eclipse:

! “Building Large-Scale Enterprise Applications with Eclipse”(Michael Bechauf, SAP AG)

! “UrbanSim” – urban growth simulation platform(Bjorn Freeman-Benson, U. of Washington)

! Panel: “Eclipse in the Enterprise – not just for Dev Tools anymore”(Mike Taylor, Instantiations)

! “Eclipse-based Apps – Java on the Desktop Revisited(Todd Williams, Genuitec)

! “Lotus Workplace: Rich Client Platform”(Richard Wilson, IBM Lotus)

! “Experiences with Rich Client Application Development”(Frank Gerhardt, SENS; Chris Wege, DaimlerChrysler)

Page 6: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

6 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

Logiball GDF Suite, an industrial-strength Geographic Data Management System (courtesy of Frank Gerhardt)

Page 7: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

7 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

Life Sciences / BioTech Workbench (mockup)(courtesy of Elias Torres, WebAhead group, IBM)

Page 8: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

8 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

Lotus Workplace Personal Productivity (mockup)(courtesy of Matthew Hatem, Lotus RCP group)

Page 9: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

9 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

Goals for Eclipse RCP UI (Generic Workbench)

! Without losing focus on Eclipse as a tools platform, open it up to allow it to be used for arbitrary applications.

! Remove IDE personality from the Workbench proper.

! Remove assumptions that the Workspace is the data model.

! Make the Workbench configurable (and get out of the driver’s seat).

! Make most other components optional (rich function, low footprint).

! Minimize API breakage.

Page 10: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

10 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

Eclipse Platform 2.1 (pre-RCP)

Runtime

SWT

JFace

UI

Workbench(with IDE personality)

Text IDE Views

Resources

Help Update Compare Debug Search Team/CVS

PrimaryApplication

Page 11: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

11 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

Eclipse Platform 3.0 (post-RCP)

PrimaryApplication

Runtime (OSGi)

SWT

JFace

UI (Generic Workbench)

TextIDE

Resources

Help UpdateCompare Debug Search

Team/CVS

Eclipse RCP

(optional) (optional) (optional)

(optional)

IDEText

Page 12: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

12 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

API Changes: Extension Points

Workbench (unchanged):! Action Sets! Commands! Contexts! Decorators! Editors! New/Import/Export Wizards! Perspectives! Popup Menus! Preference Pages! Property Pages! Views! Working Sets

New to Workbench in 3.0:! Activities! Contexts! Themes

Moved to IDE layer:! Marker Help and Resolutions! Marker and Project Nature Images! Resource Filters

Moved to Text component:! Document Providers! Marker Updaters

A few IDE- or Text-specific extension points have moved.Workbench retains most extension points for rich function.

Page 13: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

13 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

API Changes: Java API

IWorkbenchPage! openEditor(IFile, …)! openEditor(IMarker, …)! openSystemEditor(IFile)

IEditorPart! gotoMarker(IMarker)

IEditorLauncher! open(IFile)

IEditorRegistry! get/setDefaultEditor(IFile, …)! getImageDescriptor(IFile)

IWorkbench! getMarkerHelpRegistry()

IDE! openEditor(IWorkbenchPage, IFile, …)! openEditor(IWorkbenchPage, IMarker, …)! openSystemEditor(IWorkbenchPage, IFile)

IDE.gotoMarker(IEditorPart, IMarker, …) // callerIGotoMarker.gotoMarker(IMarker) // implementor

IEditorLauncher! open(IPath)

IDE! get/setDefaultEditor(IFile, …)! getImageDescriptor(IFile)

IDE! getMarkerHelpRegistry

A handful of breaking API changes were needed to remove the biason the Workspace as the underlying data model.

Equivalents for most of these are provided at the IDE level.

Page 14: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

14 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

Compatibility Story

! Porting guide! Describes all breaking API changes and how to adapt to them.

! For manifest files:! plugin.xml files are tagged with version (no tag means <= 2.1).

! Runtime automatically converts pre-3.0 plug-ins to 3.0 structure:! Converts plug-in dependencies and extension point ids

! PDE wizards for development-time conversion

! For API changes:! Binary compatibility fragment (runtime only)

Page 15: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

15 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

Binary compatibility for removed methods ?!?

2.1 (before):

interface IWorkbenchPage {IViewPart showView(String viewId);IEditorPart openEditor(IFile file); // to remove…

}

3.0 (after):

interface IWorkbenchPageextends ICompatibleWorkbenchPage {

IViewPart showView(String viewId);…

}

Development time:

interface ICompatibleWorkbenchPage {// empty

}

Runtime:(in org.eclipse.ui.workbench.compatibility fragment)

interface ICompatibleWorkbenchPage {IEditorPart openEditor(IFile file); // to remove

}

Page 16: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

16 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

Configuring the Workbench

IWorkbenchConfigurer! setSaveAndRestore(boolean)! getWindowConfigurer(window)! …

IWorkbenchWindowConfigurer! setTitle(String)! setShowMenuBar(boolean)! setShowCoolBar(boolean)! setShowStatusLine(boolean)! setShowShortcutBar(boolean)! …

WorkbenchAdvisor! initialize(workbenchConfigurer)! getInitialWindowPerspectiveId()! fillActionBars(window, actionBarConfigurer, flags)! pre/postStartup()! pre/postShutdown()! pre/postWindowOpen(windowConfigurer)! pre/postWindowClose(windowConfigurer)! eventLoopIdle(Display)! …

! New APIs to allow the application to configure the Workbench for its needs, in package org.eclipse.ui.application.

! These privileged APIs are not available to regular plug-ins.

Workbench implements Application implements

Page 17: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

17 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

Configuring the Workbench: Control flow

Diagram courtesy of Ed Burnette.

Page 18: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

18 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

Relationship to OSGi Runtime (Equinox)

! Workbench runs on top of the Runtime (obviously)

! Workbench is now “dynamic aware”:! Reacts to plug-ins getting installed and uninstalled dynamically.

! Adds/removes perspectives, views, action sets, etc., updating UIaccordingly.

! Provides event listeners for downstream plug-ins to react to Workbench changes in turn.

Page 19: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

19 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

Footprint

! What is the minimal footprint?! 4.8M (as of 3.0 M6):

! Runtime/OSGi: 0.9M! SWT: 1.4M! JFace: 0.5M! Workbench: 2.0M

Page 20: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

20 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

Demo

Page 21: Overview of the Generic Workbench (Eclipse RCP UI) Presented … · Overview of the Generic Workbench (Eclipse RCP UI) Presented by Nick Edgar, IBM Ottawa Eclipse Rich Client Applications

21 Eclipse Rich Client Platform UI | Presented by Nick Edgar | © 2004 IBM Corporation

Where can I find out more?

RCP UI Proposal page: eclipse.org/platform > UI > Proposals > Rich Client Platform

More at EclipseCon:! “Implementing Rich Client Applications” Technology Exchange

(tomorrow at 17:00)! RCP BOF, other talks

! Ed Burnette’s RCP tutorials (on proposal page)

! Browser example (on proposal page)

! Platform newsgroup:news://news.eclipse.org/eclipse.platform