Top Banner
20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers Jeff Myers [email protected] [email protected] Languages for Lunch Languages for Lunch 10/13/2004 10/13/2004
47

20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers [email protected] Languages for Lunch 10/13/2004.

Jan 13, 2016

Download

Documents

Lewis Hall
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 1

Extending the Eclipse Frameworkand Rich Client Platform

Jeff MyersJeff Myers

[email protected]@gmail.com

Languages for LunchLanguages for Lunch

10/13/200410/13/2004

Page 2: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 2

Follow-up on Last Week

Eclipse 3.0.1 is now installed on the CS machinesEclipse 3.0.1 is now installed on the CS machines

From your home directory, run:From your home directory, run:

/usr/local/eclipse-3.0.1/eclipse/eclipse/usr/local/eclipse-3.0.1/eclipse/eclipse

Installed Plug-ins: Installed Plug-ins:

C/C++ Development Tools, Visual Editor for Java, C/C++ Development Tools, Visual Editor for Java, Graphical Editor Framework, Eclipse Modeling Graphical Editor Framework, Eclipse Modeling

FrameworkFramework

Page 3: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 3

Presentation Notes

Based on the Eclipse Project PresentationBased on the Eclipse Project Presentation

http://www.eclipse.org/eclipse/index.htmlhttp://www.eclipse.org/eclipse/index.html

And RCP articles in Dr. Dobb's, the RCP FAQ, and the And RCP articles in Dr. Dobb's, the RCP FAQ, and the RCP TutorialsRCP Tutorials

Page 4: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 4

Eclipse ProjectEclipse Project

Page 5: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 5

Eclipse Project Aims

■ Provide open platform for application development Provide open platform for application development toolstools– Run on a wide range of operating systemsRun on a wide range of operating systems– GUI and non-GUIGUI and non-GUI

■ Language-neutralLanguage-neutral– Permit unrestricted content typesPermit unrestricted content types– HTML, Java, C, JSP, EJB, XML, GIF, …HTML, Java, C, JSP, EJB, XML, GIF, …

■ Facilitate seamless tool integrationFacilitate seamless tool integration– At UI and deeperAt UI and deeper– Add new tools to existing installed productsAdd new tools to existing installed products

■ Attract community of tool developersAttract community of tool developers– Including independent software vendors (ISVs)Including independent software vendors (ISVs)– Capitalize on popularity of Java for writing toolsCapitalize on popularity of Java for writing tools

Page 6: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 6

Platform Runtime

Workspace

Help

Team

Workbench

JFace

SWT

Eclipse Project

JavaDevelopment

Tools(JDT)

Their Tool

Your Tool

AnotherTool

Eclipse Overview

Plug-inDevelopmen

tEnvironment

(PDE)

Eclipse Platform

Debug

Page 7: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 7

Eclipse Plug-in Architecture

■ Plug-in - Plug-in - smallest unit of Eclipse functionsmallest unit of Eclipse function– Big example: HTML editorBig example: HTML editor– Small example: Action to create zip filesSmall example: Action to create zip files

■ Extension point Extension point - named entity for collecting - named entity for collecting “contributions”“contributions”– Example: extension point for workbench preference UIExample: extension point for workbench preference UI

■ Extension - Extension - a contributiona contribution– Example: specific HTML editor preferencesExample: specific HTML editor preferences

Page 8: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 8

Eclipse Plug-in Architecture

■ Each plug-inEach plug-in– Contributes to 1 or more extension pointsContributes to 1 or more extension points– Optionally declares new extension pointsOptionally declares new extension points– Depends on a set of other plug-insDepends on a set of other plug-ins– Contains Java code libraries and other filesContains Java code libraries and other files– May export Java-based APIs for downstream plug-insMay export Java-based APIs for downstream plug-ins– Lives in its own plug-in subdirectoryLives in its own plug-in subdirectory

■ Details spelled out in the Details spelled out in the plug-in manifestplug-in manifest– Manifest declares contributionsManifest declares contributions– Code implements contributions and provides APICode implements contributions and provides API– plugin.xml file in root of plug-in subdirectoryplugin.xml file in root of plug-in subdirectory

Page 9: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 9

Plug-in Manifest

<plugin id = “com.example.tool" name = “Example Plug-in Tool" class = "com.example.tool.ToolPlugin"> <requires> <import plugin = "org.eclipse.core.resources"/> <import plugin = "org.eclipse.ui"/> </requires> <runtime> <library name = “tool.jar"/> </runtime> <extension point = "org.eclipse.ui.preferencepages"> <page id = "com.example.tool.preferences" icon = "icons/knob.gif" title = “Tool Knobs" class = "com.example.tool.ToolPreferenceWizard“/> </extension> <extension-point name = “Frob Providers“ id = "com.example.tool.frobProvider"/></plugin>

Declare contribution this plug-in makes

Declare new extension point open to contributions from other plug-ins

Location of plug-in’s code

Other plug-ins needed

Plug-in identification

plugin.xml

Page 10: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 10

Eclipse Plug-in Architecture

■ Plug-in APlug-in A– Declares extension point PDeclares extension point P– Declares interface I to go with PDeclares interface I to go with P

■ Plug-in BPlug-in B– Implements interface I with its own class CImplements interface I with its own class C– Contributes class C to extension point PContributes class C to extension point P

■ Plug-in A instantiates C and calls its I methodsPlug-in A instantiates C and calls its I methods

plug-in A plug-in B

class Cinterface I

extensionpoint P

extension

■ Typical arrangementTypical arrangement

contributes

creates, calls

implements

Page 11: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 11

Eclipse Platform Architecture

■ Eclipse Platform Runtime is micro-kernelEclipse Platform Runtime is micro-kernel– All functionality supplied by plug-insAll functionality supplied by plug-ins

■ Eclipse Platform Runtime handles start upEclipse Platform Runtime handles start up– Discovers plug-ins installed on diskDiscovers plug-ins installed on disk– Matches up extensions with extension pointsMatches up extensions with extension points– Builds global plug-in registryBuilds global plug-in registry– Caches registry on disk for next timeCaches registry on disk for next time

Page 12: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 12

Plug-in Activation

■ Each plug-in gets its own Java class loaderEach plug-in gets its own Java class loader– Delegates to required plug-insDelegates to required plug-ins– Restricts class visibility to exported APIsRestricts class visibility to exported APIs

■ Contributions processed without plug-in activationContributions processed without plug-in activation– Example: Menu constructed from manifest info for Example: Menu constructed from manifest info for

contributed itemscontributed items

■ Plug-ins are activated only as neededPlug-ins are activated only as needed– Example: Plug-in activated only when user selects its Example: Plug-in activated only when user selects its

menu itemmenu item– Scalable for large base of installed plug-insScalable for large base of installed plug-ins– Helps avoid long start up timesHelps avoid long start up times

Page 13: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 13

Plug-in Fragments

■ Plug-in fragmentsPlug-in fragments holds some of plug-in’s files holds some of plug-in’s files– Separately installableSeparately installable

■ Each fragment has separate subdirectoryEach fragment has separate subdirectory– Separate manifest fileSeparate manifest file

■ Logical plug-in = Base plug-in + fragmentsLogical plug-in = Base plug-in + fragments

■ Plug-in fragments used forPlug-in fragments used for– Isolation of OS dependenciesIsolation of OS dependencies– Internalization – fragments hold translationsInternalization – fragments hold translations

Page 14: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 14

Plug-in Install

■ FeaturesFeatures group plug-ins into installable chunks group plug-ins into installable chunks– Feature manifest fileFeature manifest file

■ Plug-ins and features bear version identifiersPlug-ins and features bear version identifiers– major . minor . servicemajor . minor . service– Multiple versions may co-exist on diskMultiple versions may co-exist on disk

■ Features downloadable from web siteFeatures downloadable from web site– Using Eclipse Platform update managerUsing Eclipse Platform update manager– Obtain and install new plug-insObtain and install new plug-ins– Obtain and install updates to existing plug-insObtain and install updates to existing plug-ins

Page 15: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 15

Plug-in Architecture - Summary

■ All functionality provided by plug-insAll functionality provided by plug-ins– Includes all aspects of Eclipse Platform itselfIncludes all aspects of Eclipse Platform itself

■ Communication via extension pointsCommunication via extension points– Contributing does not require plug-in activationContributing does not require plug-in activation

■ Packaged into separately installable featuresPackaged into separately installable features– DownloadableDownloadable

Eclipse has open, Eclipse has open, extensibleextensible architecture based on plug-insarchitecture based on plug-ins

Page 16: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 16

Eclipse Platform

■ Eclipse Platform is the common baseEclipse Platform is the common base■ Consists of several key componentsConsists of several key components

Platform Runtime

Eclipse Platform

Workspace

Workbench

SWTJFace

Team HelpDebu

g

Ant“Core”

“UI”

Page 17: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 17

Workbench Component

■ SWT – generic low-level graphics and widget setSWT – generic low-level graphics and widget set■ JFace – UI frameworks for common UI tasksJFace – UI frameworks for common UI tasks■ Workbench – UI personality of Eclipse PlatformWorkbench – UI personality of Eclipse Platform

Workbench

SWTJFace

Page 18: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 18

SWT

■ SWT = Standard Widget ToolkitSWT = Standard Widget Toolkit■ Generic graphics and GUI widget setGeneric graphics and GUI widget set

– buttons, lists, text, menus, trees, styled text...buttons, lists, text, menus, trees, styled text...

■ SimpleSimple■ SmallSmall■ FastFast■ OS-independent APIOS-independent API■ Uses native widgets where availableUses native widgets where available■ Emulates widgets where unavailableEmulates widgets where unavailable

Page 19: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 19

Why SWT?

■ Consensus: hard to produce professional looking Consensus: hard to produce professional looking shrink-wrapped products using Swing and AWTshrink-wrapped products using Swing and AWT

■ SWT providesSWT provides– Tight integration with native window systemTight integration with native window system– Authentic native look and feelAuthentic native look and feel– Good performanceGood performance– Good portabilityGood portability– Good base for robust GUIsGood base for robust GUIs

■ The proof of the pudding is in the eating…The proof of the pudding is in the eating…

Page 20: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 20

Why SWT?

■ Eclipse Platform on Windows XPEclipse Platform on Windows XP

Page 21: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 21

Why SWT?

■ Eclipse Platform on Windows XP (skinned)Eclipse Platform on Windows XP (skinned)

Page 22: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 22

Why SWT?

■ Eclipse Platform on Linux - GTK 2.0Eclipse Platform on Linux - GTK 2.0

Page 23: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 23

Why SWT?

■ Eclipse Platform on Linux - MotifEclipse Platform on Linux - Motif

Page 24: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 24

Why SWT?

■ Eclipse Platform on Mac OS X - CarbonEclipse Platform on Mac OS X - Carbon

Page 25: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 25

Sample SWT Application

Small example of SWT codeSmall example of SWT code

Page 26: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 26

JFace

■ JFace is set of UI frameworks for common UI tasksJFace is set of UI frameworks for common UI tasks■ Designed to be used in conjunction with SWTDesigned to be used in conjunction with SWT■ Classes for handling common UI tasksClasses for handling common UI tasks■ API and implementation are window-system API and implementation are window-system

independentindependent

Page 27: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 27

JFace APIs

■ Image and font registriesImage and font registries■ Dialog, preference, and wizard frameworksDialog, preference, and wizard frameworks■ Structured viewersStructured viewers

– Model-aware adapters for SWT tree, table, list widgetsModel-aware adapters for SWT tree, table, list widgets■ Text infrastructureText infrastructure

– Document model for SWT styled text widgetDocument model for SWT styled text widget– Coloring, formatting, partitioning, completionColoring, formatting, partitioning, completion

■ ActionsActions– Location-independent user commandsLocation-independent user commands– Contribute action to menu, tool bar, or buttonContribute action to menu, tool bar, or button

Page 28: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 28

Workbench Component

■ Workbench is UI personality of Eclipse PlatformWorkbench is UI personality of Eclipse Platform

■ UI paradigm centered aroundUI paradigm centered around– EditorsEditors– ViewsViews– PerspectivesPerspectives

Page 29: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 29

Workbench Terminology

Tool bar

PerspectiveandFast Viewbar

ResourceNavigatorview

Stackedviews

Propertiesview

Tasksview

Outlineview

Bookmarksview

Menu bar

Messagearea

EditorStatusarea

Texteditor

Page 30: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 30

Editors

■ Editors appear in workbench editor areaEditors appear in workbench editor area■ Contribute actions to workbench menu and tool barsContribute actions to workbench menu and tool bars■ Open, edit, save, close lifecycleOpen, edit, save, close lifecycle■ Open editors are stackedOpen editors are stacked

■ Extension point for contributing new types of editorsExtension point for contributing new types of editors■ Example: JDT provides Java source file editorExample: JDT provides Java source file editor■ Eclipse Platform includes simple text file editorEclipse Platform includes simple text file editor■ Windows only: embed any OLE document as editorWindows only: embed any OLE document as editor■ Extensive text editor API and frameworkExtensive text editor API and framework

Page 31: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 31

Views

■ Views provide information on some objectViews provide information on some object■ Views augment editorsViews augment editors

– Example: Outline view summarizes contentExample: Outline view summarizes content■ Views augment other viewsViews augment other views

– Example: Properties view describes selectionExample: Properties view describes selection

■ Extension point for new types of viewsExtension point for new types of views■ Eclipse Platform includes many standard viewsEclipse Platform includes many standard views

– Resource Navigator, Outline, Properties, Tasks, Resource Navigator, Outline, Properties, Tasks, Bookmarks, Search, …Bookmarks, Search, …

■ View API and frameworkView API and framework– Views can be implemented with JFace viewersViews can be implemented with JFace viewers

Page 32: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 32

Perspectives

■ Perspectives are arrangements of views and editorsPerspectives are arrangements of views and editors■ Different perspectives suited for different user tasksDifferent perspectives suited for different user tasks■ Users can quickly switch between perspectivesUsers can quickly switch between perspectives■ Task orientation limits visible views, actionsTask orientation limits visible views, actions

– Scales to large numbers of installed toolsScales to large numbers of installed tools■ Perspectives controlPerspectives control

– View visibilityView visibility– View and editor layoutView and editor layout– Action visibilityAction visibility

■ Extension point for new perspectivesExtension point for new perspectives■ Eclipse Platform includes standard perspectivesEclipse Platform includes standard perspectives

– Resource, Debug, …Resource, Debug, …■ Perspective APIPerspective API

Page 33: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 33

Other Workbench Features

■ Tools may alsoTools may also– Add global actionsAdd global actions– Add actions to existing views and editorsAdd actions to existing views and editors– Add views, action sets to existing perspectivesAdd views, action sets to existing perspectives

■ Eclipse Platform is accessible (Eclipse Platform is accessible (Section 508Section 508))■ Accessibility mechanisms available to all plug-insAccessibility mechanisms available to all plug-ins

Page 34: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 34

Workbench Responsibilities

■ Eclipse Platform manages windows and Eclipse Platform manages windows and perspectivesperspectives

■ Eclipse Platform creates menu and tool barsEclipse Platform creates menu and tool bars– Labels and icons listed in plug-in manifestLabels and icons listed in plug-in manifest– Contributing plug-ins not activatedContributing plug-ins not activated

■ Eclipse Platform creates views and editorsEclipse Platform creates views and editors– Instantiated only as neededInstantiated only as needed

■ Scalable to large numbers of installed toolsScalable to large numbers of installed tools

Page 35: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 35

Help Component

■ Help is presented in a standard web browserHelp is presented in a standard web browser

Page 36: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 36

Help Component

■ Help books are HTML websHelp books are HTML webs■ Extension points for contributingExtension points for contributing

– entire booksentire books– sections to existing bookssections to existing books– F1-help pop upsF1-help pop ups

■ Eclipse Platform contributesEclipse Platform contributes– ““Workbench User Guide”Workbench User Guide”– ““Platform Plug-in Developer Guide” (APIs)Platform Plug-in Developer Guide” (APIs)– F1-help for views, editors, dialogs, …F1-help for views, editors, dialogs, …

■ JDT and PDE contribute their own helpJDT and PDE contribute their own help■ Help mechanisms available to all plug-insHelp mechanisms available to all plug-ins

■ Help search engine based on Help search engine based on Apache Apache LuceneLucene■ Headless help server based on Headless help server based on Apache TomcatApache Tomcat

Page 37: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 37

Eclipse Platform - Summary

■ Eclipse Platform is the nucleus of IDE productsEclipse Platform is the nucleus of IDE products■ Plug-ins, extension points, extensionsPlug-ins, extension points, extensions

– Open, Open, extensible architectureextensible architecture■ Workspace, projects, files, foldersWorkspace, projects, files, folders

– Common place to organize & store development Common place to organize & store development artifactsartifacts

■ Workbench, editors, views, perspectivesWorkbench, editors, views, perspectives– Common user presentation and UI paradigmCommon user presentation and UI paradigm

■ Key building blocks and facilitiesKey building blocks and facilities– Help, team support, internationalization, …Help, team support, internationalization, …

Eclipse is a universal platform Eclipse is a universal platform forfor

integrating development toolsintegrating development tools

Page 38: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 38

Plug-in Development Environment

■ PDE = Plug-in development environmentPDE = Plug-in development environment■ Specialized tools for developing Eclipse plug-insSpecialized tools for developing Eclipse plug-ins

■ Built atop Eclipse Platform and JDTBuilt atop Eclipse Platform and JDT– Implemented as Eclipse plug-insImplemented as Eclipse plug-ins– Using Eclipse Platform and JDT APIs and extension Using Eclipse Platform and JDT APIs and extension

pointspoints

■ Included in Eclipse Project releasesIncluded in Eclipse Project releases– Separately installable featureSeparately installable feature– Part of Eclipse SDK dropsPart of Eclipse SDK drops

Page 39: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 39

PDE Goals

■ Goal: To make it easier to develop Eclipse plug-insGoal: To make it easier to develop Eclipse plug-ins

■ Goal: Support self-hosted Eclipse developmentGoal: Support self-hosted Eclipse development

Page 40: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 40

PDE

■ PDE templates for creating simple plug-in projectsPDE templates for creating simple plug-in projects

Page 41: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 41

PDE

■ Specialized PDE editor for plug-in manifest filesSpecialized PDE editor for plug-in manifest files

Page 42: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 42

PDE

■ PDE runs and debugs another Eclipse workbenchPDE runs and debugs another Eclipse workbench

1. Workbenchrunning PDE

(host)

2. Run-timeworkbench

(target)

Page 43: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 43

PDE - Summary

■ PDE makes it easier to develop Eclipse plug-insPDE makes it easier to develop Eclipse plug-ins

■ PDE also generates Ant build scriptsPDE also generates Ant build scripts– Compile and create deployed form of plug-inCompile and create deployed form of plug-in

PDE is basis for self-hostedPDE is basis for self-hostedEclipse developmentEclipse development

Page 44: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 44

Example Plug-In

Short Hello World example Plug-inShort Hello World example Plug-in

Page 45: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 45

Rich Client Platform

■ Eclipse Platform design could be used as a base for Eclipse Platform design could be used as a base for most any client application.most any client application.

■ Rich Client Platform describes the minimal set of plug-Rich Client Platform describes the minimal set of plug-ins from Eclipse needed to build a rich client ins from Eclipse needed to build a rich client applicationapplication– Base:Base:

• Eclipse RuntimeEclipse Runtime• SWTSWT• JFaceJFace• WorkbenchWorkbench

– OptionalOptional• HelpHelp• Update MangerUpdate Manger• TextText• Other Eclipse functionsOther Eclipse functions

Page 46: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 46

Benefits of Using RCP

■ Clear, consistent, cohesive Clear, consistent, cohesive architecturearchitecture

■ Development and Development and deployment on all major deployment on all major desktop platformsdesktop platforms

■ Have a “snappy” UI while Have a “snappy” UI while maintaining the platform's maintaining the platform's native look-and-feelnative look-and-feel

■ Large set of widgets and Large set of widgets and extended features (progress extended features (progress meters, tree views, etc)meters, tree views, etc)

■ Extensive text processing Extensive text processing capability including editing, capability including editing, styling, content completion, styling, content completion, formatting, searching and formatting, searching and hover helphover help

■ Support platform-specific Support platform-specific features (web browser, features (web browser, ActiveX, OpenGL)ActiveX, OpenGL)

■ Product brandingProduct branding■ Integrated help systemIntegrated help system■ Manage user configuration Manage user configuration

and preferencesand preferences■ Support remote discovery Support remote discovery

and installation of and installation of application updatesapplication updates

■ Support Support internationalizationinternationalization

■ Flexibility of adding Flexibility of adding features for new features for new functionalityfunctionality

Page 47: 20041013 1 Extending the Eclipse Framework and Rich Client Platform Jeff Myers myersj@gmail.com Languages for Lunch 10/13/2004.

20041013 47

Benefits for Using the Eclipse Framework in Computer Science

and Software Engineering

■ Base platform for projects / independent studies / Base platform for projects / independent studies / thesis workthesis work– Research in languages, compilers, object oriented Research in languages, compilers, object oriented

frameworksframeworks■ Base platform for large scale research projectsBase platform for large scale research projects

– Extensibility framework allows continuous development Extensibility framework allows continuous development with many developers over a long period of timewith many developers over a long period of time

■ RCP as platform for Software Engineering projectsRCP as platform for Software Engineering projects