A Tour of the Eclipse Environment -...
Transcript of A Tour of the Eclipse Environment -...
![Page 1: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/1.jpg)
A Tour of the Eclipse Environment
Stephen BarrettConcordia University – 6-Mar-2005
![Page 2: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/2.jpg)
6-Mar-2005 The Eclipse Environment2
What is Eclipse?
Depends on who you ask.
![Page 3: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/3.jpg)
6-Mar-2005 The Eclipse Environment3
What is Eclipse?
Man on the Street:l Java-based development frameworkl Spawned from IBM Visual Age/Smalltalk and
Java, 1999 – initially 40 full-time developersl Transitioned into open source project, 2001 –
with IBM code base and fundingl Commercially viable, e.g., IBM WebSphere
Studio, and SAP NetWeaver – both are extensions of Eclipse
![Page 4: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/4.jpg)
6-Mar-2005 The Eclipse Environment4
What is Eclipse?
Application Programmer:l IDE for Java, C/C++, Perl, Python, …
– Editor with cross-linked views– Code formatting and insertion– Code refactoring– State of art debugging– Unit testing– Build facilities
![Page 5: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/5.jpg)
6-Mar-2005 The Eclipse Environment5
What is Eclipse?
Tool Builder:l Extensible development platform
– Collection of plug-in components that integrate seamlessly with the Eclipse environment. l Java Development Tools (JDT)l Plug-in Development Environment (PDE)l Graphical Editing Framework (GEF)
– A framework and a set of services for building a development environment.
– Maintained with an update manager plug-in.
“An open extensible IDE for anything and nothing in particular.”
– eclipse.org
![Page 6: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/6.jpg)
6-Mar-2005 The Eclipse Environment6
What is Eclipse?
Architect / Designer:l Implementation of model driven architecture
(MDA) frameworkl Modeling tool (textual and graphical)l Data integrator, and model managerl Sophisticated code generator
– Observer, factory, proxy, etc. design patterns– Serialization for object brokering and persistence
“MDA on training wheels.”– Eclipse Modeling Framework
![Page 7: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/7.jpg)
6-Mar-2005 The Eclipse Environment7
Agenda
l IDE – Java coding with Eclipse– workbench highlights
l PDE – plug-in tool integration– packaging and management
l Philosophy – everything is a contribution– contribution rules
l Framework – making it all work– platform architecture– design principles and patterns
l EMF – the modeling framework (next week)– model unification
![Page 8: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/8.jpg)
The IDE: Coding with Eclipse
![Page 9: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/9.jpg)
6-Mar-2005 The Eclipse Environment9
Coding – The Java IDE
l Views, editors, and perspectives– View and editor linking
l Incremental compilationl Full-featured debuggerl Configuration management (PVCS)
– Quick Diff (requires baseline)
![Page 10: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/10.jpg)
6-Mar-2005 The Eclipse Environment10
Coding – The Java IDE (cont’d)
Message Properties Stacked Tasks Bookmarks area view views view view
Perspectives Resource navigator Text editor Outliner
![Page 11: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/11.jpg)
6-Mar-2005 The Eclipse Environment11
Coding – The Java IDE (cont’d)
l Javadoc insertion, formatting, and generation– GUI wrapper for javadoc command line tool
l Template-based code insertion– Define file bodies – code, comments, & Javadoc
l Code formatting; with preview– Set style for block constructs– Can format or restructure entire file
l Refactoring; with preview
![Page 12: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/12.jpg)
6-Mar-2005 The Eclipse Environment12
Coding – The Java IDE (cont’d)
l Margin cues (errors, changes, tasks, etc.)l Text foldingl Error highlighting (source, Quick Fix)l Quick Fix (suggestions: Ctrl+1, click bulb)l Quick Assist (helpful hints: Ctrl+1)l Content Assist (methods, variables, source
code, Javadoc, spelling, dialogs: Ctrl+Space)
![Page 13: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/13.jpg)
6-Mar-2005 The Eclipse Environment13
IDE Walkthrough
![Page 14: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/14.jpg)
The PDE: Creating Eclipse Tools
![Page 15: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/15.jpg)
6-Mar-2005 The Eclipse Environment15
Tooling – Plug-ins
Extensions to the Eclipse framework are achieved through the use of plug-ins.
l Plug-ins are the basic unit of functionality – a component.
l Features are constructed from plug-ins.l Both the Eclipse platform and its tools are
composed of plug-ins.
“…Emacs for the 21st century.”– Martin Fowler
![Page 16: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/16.jpg)
6-Mar-2005 The Eclipse Environment16
Tooling – Plug-ins (cont’d)[Eclipse Project Briefing, IBM, 2003]
Platform Runtime
Workspace
Help
Team
Workbench
JFace
SWT
Eclipse Project
JavaDevelopment
Tools(JDT)
Their Tool
Your Tool
AnotherTool
Plug-inDevelopmentEnvironment
(PDE)
Eclipse Platform
Debug
![Page 17: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/17.jpg)
6-Mar-2005 The Eclipse Environment17
Tooling – Plug-in Payoff
What does the framework buy us?l Ease of tool discovery, installation, and
removal – managed configurationsl Reuse of pre-developed functionality – don’t
reinvent the wheell Freedom of choice for the user
– Choose the best solution.– Say NO to profit-driven feature proliferation!
l Reflective generation of viewers and editors
![Page 18: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/18.jpg)
6-Mar-2005 The Eclipse Environment18
Tooling – Plug-ins in Action
Each plug-in includes or indicates everything needed to run it:
l plugin.xml – plug-in dependenciesl feature.xml – installed packagesOn startup the Eclipse platform discovers all
available plug-ins.A plug-in is activated only when its code is
actually needed.
(Not on my system!)
![Page 19: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/19.jpg)
6-Mar-2005 The Eclipse Environment19
Tooling – Plug-in Packaging
feature.xml describes and licenses the feature. Lists included plug-ins and websites.
l URL – update and discovery sites.l Requires – use of other plug-in extension
points (contributions used)l Plugin – plug-ins that comprise the feature.
![Page 20: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/20.jpg)
6-Mar-2005 The Eclipse Environment20
Tooling – Plug-in Packaging
plugin.xml declares the interconnections to other plug-ins:
l Requires – dependencies on other plug-insl Extension-point – functionality available to
other plug-ins (for collecting contributions)l Extension – use of other plug-in extension
points (contributions used)l Exports – class visibility to other plug-ins
![Page 21: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/21.jpg)
6-Mar-2005 The Eclipse Environment21
Plug-in Walkthrough
Required for Assignment 3 (release builds):l Java 2, Standard Edition 1.4.2 or greater
– http://java.sun.com/j2se/l Eclipse 3.0.1 (platform, JDT, PDE, UI, etc.)
– http://eclipse.org/downloads/l Eclipse Modeling Framework 2.0.1 (EMF, SDO, etc.)
– http://eclipse.org/downloads/l Graphical Editor Framework 3.0.1 (GEF)
– http://eclipse.org/downloads/l UML2 1.0.1
– http://eclipse.org/downloads/l Omondo EclipseUML 2.0.0
– http://www.omondo.com/download/free/
![Page 22: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/22.jpg)
The Rules: Contributing to Eclipse
![Page 23: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/23.jpg)
6-Mar-2005 The Eclipse Environment23
Empower the user in a learning environment
Contributing – User as Programmer
User
ConfigurerEnabler
Publisher Extender
Uses Eclipse for daily computing work
Customizes their Eclipse experience
Makes changes not envisioned by Eclipse programmers
Makes their extensions available to others(make contributions)
Makes their extensions extendable (accept contributions)
Becomes user of extensions to their contribution.
![Page 24: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/24.jpg)
6-Mar-2005 The Eclipse Environment24
Contributing – Rules
Eclipse has a strong world view, leading to two dozen rules. To play you must play by the rules!
l Contribution Rule– Everything is a contribution.
l Lazy Loading Rule– Contributions are only loaded when they are needed.
l Sharing Rule– Add, don’t replace.
l Conformance Rule– Contributions must conform to expected interfaces.
l Monkey See / Monkey Do Rule– Always start by copying the structure of a similar plug-in.
“Hell, there are no rules here – we're trying to accomplish something.”
– Thomas Edison
![Page 25: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/25.jpg)
6-Mar-2005 The Eclipse Environment25
Contributing – Rules (cont’d)
l Relevance Rule– Contribute only when you can successfully operate.
l Safe Platform Rule– Extension point providers, must protect themselves against
misbehavior on the part of extenders.
l Invitation Rule– Whenever possible, let others contribute to your
contributions.
l Fair Play Rule– All clients play by the same rules, even me.
“There are three rules for writing the novel. Unfortunately, no one knows what they are.”
– W. Somerset Maugham
![Page 26: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/26.jpg)
6-Mar-2005 The Eclipse Environment26
Contributing – Rules (cont’d)
l Explicit Extension Rule– Declare explicitly where a platform can be extended.
l Diversity Rule– Extension points accept multiple extensions.
l Good Fences Rule– When passing control outside your code, protect yourself.
l License Rule– Always supply a license with every contribution.
l Program to API Contract Rule– Check and program to the Eclipse API contract.
“There are two rules for success: 1) Never tell everything you know.”
– Roger H. Lincoln
![Page 27: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/27.jpg)
6-Mar-2005 The Eclipse Environment27
Contributing – Rules (cont’d)
l Integration Rule– Integrate, don’t separate.
l Responsibility Rule– Clearly identify your plug-in as the source of problems.
l User Arbitration Rule– Let the user decide which contribution to use.
l Other Rule– Contributions that don’t typically apply to the current
perspective appear in an Other… dialog.
“The rule is, jam tomorrow and jam yesterday—but never jam today.”
– The White Queen
![Page 28: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/28.jpg)
6-Mar-2005 The Eclipse Environment28
Contributing – Rules (cont’d)
l Explicit API Rule– Separate the API from the internals.
l Stability Rule– Once you invite others to contribute, don’t change the rules.
l Defensive API Rule– Reveal only the API in which you have confidence, but be
prepared to reveal more.
l User Continuity Rule– Preserve the user interface state across sessions.
“All human rules are more or less idiotic.”– Mark Twain
![Page 29: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/29.jpg)
6-Mar-2005 The Eclipse Environment29
Contributing – Rules (cont’d)
l Adapt to IResource Rule– Whenever possible, define an IResource adapter for you
domain objects.
l Strata Rule– Separate language-neutral functionality from language-
specific functionality and separate core functionality from UI functionality.
“Rules? We don’t need no stinkin’ rules!”– The Treasure of the Sierra Madre
![Page 30: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/30.jpg)
The Framework: Building Eclipse
![Page 31: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/31.jpg)
6-Mar-2005 The Eclipse Environment31
Building – Architecture Goals
l Define a common programming-language-neutral infrastructure
l Allow tools to interoperate– Often in ways not imagined by the tool writers.
l Deliver power to the user– Who will play by the rules!
![Page 32: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/32.jpg)
6-Mar-2005 The Eclipse Environment32
Building – Architecture[Eclipse Project Briefing, IBM, 2003]
Platform Runtime
Workspace
Help
Team
Workbench
JFace
SWT
Eclipse Project
JavaDevelopment
Tools(JDT)
Their Tool
Your Tool
AnotherTool
Plug-inDevelopmentEnvironment
(PDE)
Eclipse Platform
Debug
![Page 33: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/33.jpg)
6-Mar-2005 The Eclipse Environment33
Building – Architecture (cont’d)
l Platform – common programming-language-neutral infrastructure
l JDT – adds full-featured IDE to Eclipsel PDE – extends JDT for plug-in developmentl Runtime – discovers plug-ins on start-up and manages
plug-in loadingl Workspace – manages one or more top-level projectsl SWT – Provides graphics and defines standard set of
widgetsl JFace – common UI tasks built on top of SWTl Workbench – defines the Eclipse UI paradigm.
![Page 34: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/34.jpg)
6-Mar-2005 The Eclipse Environment34
Building – Design Patterns
Motivation:l Principles of design underlying Eclipse structure are
also behind platforms of all kinds.l Demonstrate how patterns play out in various
contexts.l Learn Eclipse design to more quickly learn how to
play according to the Eclipse rules.– Rules are really patterns in a micro format.– Gamma and Beck claim that six hours of reading Eclipse
code and only one hour of typing code is productive.
![Page 35: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/35.jpg)
6-Mar-2005 The Eclipse Environment35
Core Runtime – Extensions
Eclipse strictly separates UI parts from non-UI parts:
l plug-in org.eclipse.core.resources– Defines interfaces IFolder, IFile, etc.
l How does Properties view get details of selected object in Package Explorer?
– View needs an interface from which to fetch properties.
– File object needs to support this interface.
![Page 36: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/36.jpg)
6-Mar-2005 The Eclipse Environment36
Core Runtime – Extensions
Interface IPropertySourcepublic interface IPropertySource{
public Object getEditableValue();public IPropertyDescriptor[] getPropertyDescriptors();public Object getPropertyValue(Object id);public boolean isPropertySet(Object id);public void resetPropertyValue(Object id);public void setPropertyValue(Object id, Object value);
}How does IFile surface this interface?l public interface IFile extends IPropertySource
– bloats class interface– breaks public API – couples model to UI
![Page 37: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/37.jpg)
6-Mar-2005 The Eclipse Environment37
Core Runtime – IAdaptable
Use Extension Object pattern, allows us to:l Add a service interface to a type without
exposing it in the type (keep API contract).l Add behavior to preexisting types like IFile.l Let clients query whether an object has a
particular extension.
![Page 38: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/38.jpg)
6-Mar-2005 The Eclipse Environment38
What we want:What we get (sort of):
Core Runtime – IAdaptable
IAdaptable
+getAdapter(adapter : Class) : Object
IPropertySource
Extension: Subject
Extension
File IFile
PropertySheetEntry
IAdaptable
File IFile
PropertySheetEntry
IPropertySource
IPropertySource
![Page 39: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/39.jpg)
6-Mar-2005 The Eclipse Environment39
Core Runtime – IAdaptable
Interface IAdaptablepublic interface IAdaptable{
public Object getAdapter(Class adapter);}Class PropertySheetEntryprivate IPropertySource getPropertySource(Object object){//...else if (object instanceof IAdaptable)
result = (IPropertySource)((IAdaptable) object).getAdapter(IPropertySource.class);
return result;}
![Page 40: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/40.jpg)
6-Mar-2005 The Eclipse Environment40
Core Runtime – IAdaptable
Class may implement getAdapter()l Additional interfaces will alter implementation
of getAdapter(), not the class API.A factory may implement getAdapter()l Requires no code changes to be made to the
existing class.
![Page 41: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/41.jpg)
6-Mar-2005 The Eclipse Environment41
Core Runtime – IAdaptable
Adapter factory allows clients to use interface (IFile, say), and extend its behavior.
1. Implement an AdapterFactory with the adapters to be added to IFile.
2. Register factory with the platform’s AdapterManager, a façade object.
![Page 42: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/42.jpg)
6-Mar-2005 The Eclipse Environment42
Core Runtime – IAdaptable
Factory declares adapters it provides:Class FileAdapterFactory implements IAdapterFactory{
public Class[] getAdapterList(){ return new Class[] { IPropertySource.class }; }//...
}And implements getAdapter:public Object getAdapter(Object o, Class adapter){ //...
else if (adapter == IPropertySource.class)return new FilePropertySource((IFile) o);
//...}
![Page 43: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/43.jpg)
6-Mar-2005 The Eclipse Environment43
Core Runtime – IAdaptable
What we really get!
IAdaptable
+getAdapter(a : Class) : Object
IPropertySource
File IFile PropertySheetEntryIAdaptable
OtherInterfacesPlatformObject
+getAdapter()
Resource
*IAdapterManager
+getAdapter(o : Object, a : Class)
IAdapterFactory
+getAdapter(o : Object, c : Class)
*
![Page 44: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/44.jpg)
6-Mar-2005 The Eclipse Environment44
Core Runtime – IAdaptable
Object Collaborations
PropertySheetEntry
File
1. getAdapter(IPropertySource.class)
IFile
IAdapterManager
2. getAdapter(this, IPropertySource.class)
IAdapterFactory
3. getAdapter(this, IPropertySource.class)
PropertySource 4. createIPropertySource
5. getPropertyDescriptor
![Page 45: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/45.jpg)
The End: Questions?
![Page 46: A Tour of the Eclipse Environment - Encsusers.encs.concordia.ca/~gregb/home/647PS/comp647-lec9-Eclipse... · 15 6-Mar-2005 The Eclipse Environment Tooling – Plug-ins Extensions](https://reader036.fdocuments.in/reader036/viewer/2022070723/5f01f7b17e708231d401eb7c/html5/thumbnails/46.jpg)
6-Mar-2005 The Eclipse Environment46
References
l Frank Budinsky et al, Eclipse Modeling Framework: A Developer's Guide, Addison-Wesley, 2004
l Eric Gamma and Kent Beck, Contributing to Eclipse: Principles, Patterns, and Plug-ins, Addison-Wesley, 2004
l Ed Merks, The Eclipse Modeling Framework: Introducing Modeling to the Java Technology Mainstream, JavaOne presentation, 2004
l Bill Moore et al, Eclipse Development using the Graphical Editing Framework and the Eclipse Modeling Framework, IBM Redbook, 2004
l www.eclipse.org