building eclipse plug-ins - oracle | integrated · eclipse plug-ins (3 rd edition) building eclipse...
TRANSCRIPT
![Page 1: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/1.jpg)
Eclipse Plug-ins (3
rd
edition)
BuildingEclipse Plug-Ins
Dan Rubel, Chief Technology OfficerEric Clayberg, VP of Product Development
![Page 2: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/2.jpg)
Eclipse Plug-ins (3
rd
edition)
Overview (condensed from a 6 hour tutorial)
Topics> Introduction> Eclipse Architecture> Commands> Views> Editors> Perspectives> Modal Windows> Advanced Topics> Help and Internationalization> Features, Branding, & Update> Build and Deploy> Ready for Rational
Labs> Hello World> Commands> Views> Perspectives> Preference Pages> Help
Content derived fromEclipse Plug-ins (3rd edition)
2
![Page 3: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/3.jpg)
Eclipse Plug-ins (3
rd
edition)
Who Are We?Dan Rubel
Chief Technology Officer for InstantiationsEric Clayberg
V.P. of Product Development for InstantiationsDan & Eric
First used Java in 1996; Eclipse since 2000 Co-authors of several Eclipse articles for
WebSphere Advisor magazine Co-authors of
Eclipse Plug-ins (3rd edition Dec 2008) Co-developers & architects of VA Assist
Enterprise, CodePro and over a dozen other commercial software products
3
![Page 4: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/4.jpg)
Eclipse Plug-ins (3
rd
edition)
> Founded in 1997, headquarters in Portland, OR
> Market leading tools for professional Java developers Automated Software Code Quality and Security UI Construction and Testing Tools
> 9 years of extensive Eclipse experience Active Eclipse Foundation member and major
contributor.
> Leveraging the best of open source and proprietary technologies to enable the creation of better enterprise software
> 10,000+ Customers. Customer focused. Customer driven.
![Page 5: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/5.jpg)
Eclipse Plug-ins (3
rd
edition)
Awards and Acknowledgements
“W in d o w B u ild e r d e liv e rs th e k in d o f G U I b u ild in g p ro d u c tiv ity th a t w e u s e to h a v e b e fo re w e c o n v e rte d to J a v a .”
S a lly R ic hC h e c k fre e S o lu tio n s
2006 - 2008Private 100
Fastest GrowingOregon
Companies
“R C P D e v e lo p e r is th e firs t p ro d u c t to b rin g c o m p re h e n s iv e a p p lic a tio n c o n s tru c tio n , G U I te s tin g a n d p a c k a g in g o f ric h -c lie n t
a p p lic a tio n s to E c lip s e R C P . W e a re d e lig h te d th a t In s ta n tia tio n s is d e liv e rin g th is im p o rta n t te c h n o lo g y to th e g ro w in g E c lip s e
e c o s y s te m .”M ik e M ilin k o v ic h , E x e c u tiv e D ire c to r
E c lip s e F o u n d a tio n
#14 Fastest Growing
Technology Company
2006
“S in c e w e s ta rte d u s in g W in d o w T e s te r, te s ts th a t to o k 2–3 w e e k s to w rite p re v io u s ly c a n n o w b e d o n e in 2–3 d a y s .”
S te v e T o c c oD ire c to r o f Q u a lity A s s u ra n c e , B E A
“B e c a u s e o u r s o ftw a re is u s e d to d riv e k e y b u s in e s s d e c is io n s , it's c ritic a l th a t w e d e liv e r h ig h -q u a lity s o ftw a re , a n d im p le m e n tin g
C o d e P ro A n a ly tiX h a s a llo w e d u s to a u to m a te th e p ro c e s s o f e n fo rc in g p ro g ra m m in g s ta n d a rd s a n d b e s t p ra c tic e s .”
Rich Main, Director, Java Development Environments, SAS
![Page 6: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/6.jpg)
Eclipse Plug-ins (3
rd
edition)
Strategic Product Lines
Automated Software Quality and Security Tools for Code Analysis, Measurement and Improvement
Automated testing of Java GUIsfor SWT and Swing
WYSIWYG development of Java GUIsfor SWT, Swing and GWT
Finalist2009 Best Eclipse
CommercialDevelopment
Tool
![Page 7: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/7.jpg)
Eclipse Plug-ins (3
rd
edition)
Professional Services> One of the most experienced teams of
Eclipse, Java and Smalltalk experts
> Planning assistance for build and deployment
> QuickQuality live mentoring boot-camp
> Architectural, design and development mentoring
> Custom software engineering
“T h e m e m b e rs o f th e p ro fe s s io n a l s e rv ic e s te a m a t
In s ta n tia tio n s a re tru ly to p -tie r te c h n o lo g is ts . N o t o n ly d id th e y
in te g ra te rig h t in to o u r te a m , b rin g in g im p re s s iv e e x p e rie n c e
a n d m e n to rin g s k ills to b e a r, th e y b ro u g h t a lo n g e n o u g h b ig -
p ic tu re a p titu d e to u n d e rs ta n d o u r b u s in e s s p ro b le m s , o u r
p re s s u re s , a n d w h a t p ro je c t s u c c e s s m e a n t fo r u s .”
Jesse WatsonManager, Engineering
Varolii Corporation
![Page 8: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/8.jpg)
Eclipse Plug-ins (3
rd
edition)
Eclipse Plug-ins (3rd edition)> Publisher: Addison Wesley
> 3rd Edition, December 2008
> http://www.qualityeclipse.com/
> ISBN: 0-321-55346-2
> 928 pages
> Authors:Eric ClaybergDan Rubel
> Series Editors:Erich GammaLee NackmanJohn Wiegand
> Forwards by:Skip McGaugheySimon Archer
1 Using Eclipse Tools
2 A Simple Plug-in Example
3 Eclipse Infrastructure
4 SWT Widgets
5 JFace Viewers
6 Commands & Actions
7 Views
8 Editors
9 Resources Change Tracking
10 Perspectives
11 Dialogs & Wizards
12 Preference Pages
13 Property Pages
14 Builders, Markers & Natures
15 Implementing Help
16 Internationalization
17 Extension Points
18 Features & Branding
19 Building a Product
20 GEF
21 Advanced Topics
8
![Page 9: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/9.jpg)
Eclipse Plug-ins (3
rd
edition)
Eclipse Workbench
9
![Page 10: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/10.jpg)
Eclipse Plug-ins (3
rd
edition)
Eclipse Architecture Overview
10
![Page 11: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/11.jpg)
Eclipse Plug-ins (3
rd
edition)
Eclipse Architecture Details> Plug-in - smallest unit of Eclipse function
Promotes modular architecture Code can be rearranged to meet different needs Big example: HTML editor Small example: Action to create zip files
> Extension point - named entity for collecting “contributions” Promotes loose coupling between plug-ins resulting in more flexibility Facilitates other tools to be used within the platform Easily extend existing platform - no need to wait for new product releases Example: extension point for workbench preference UI
> Extension - a contribution Example: specific HTML editor preferences
11
![Page 12: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/12.jpg)
Eclipse Plug-ins (3
rd
edition)
What's in a plug-in?
> META-INF/MANIFEST.MFDescribes plug-in dependencies
> plugin.xmlDescribes plug-in extensions
> plugin.propertiesExtracted translatable strings
> A JAR fileAn archive with the plug-in code
> about.htmlTextual description of the plug-in
12
Plug-ins can be packaged as directories (old) or jar files (new)
![Page 13: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/13.jpg)
Eclipse Plug-ins (3
rd
edition)
Plug-in StructureOSGI Manifest> name> identifier> classpath> required plug-ins
Plug-in Manifest> extensions> extension-points
Required Plug-ins
13
![Page 14: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/14.jpg)
Eclipse Plug-ins (3
rd
edition)
Plug-in Development Environment (PDE)> Specialized tools for developing Eclipse plug-ins
> Built atop Eclipse Platform and JDT Implemented as Eclipse plug-ins Using Eclipse Platform, JDT APIs and extension points
> Included in Eclipse Project releases Separately installable feature Part of Eclipse SDK drops
> Goals: Make it easier to develop Eclipse plug-ins Support self-hosted Eclipse development
14
![Page 15: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/15.jpg)
Eclipse Plug-ins (3
rd
edition)
Commands
15
![Page 16: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/16.jpg)
Eclipse Plug-ins (3
rd
edition)
Commands
> One or more menu contributions per command> One or more handlers per command> Only one “active” handler at a time
![Page 17: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/17.jpg)
Eclipse Plug-ins (3
rd
edition)
Commands Category
Keybinding“Ctrl-V”
![Page 18: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/18.jpg)
Eclipse Plug-ins (3
rd
edition)
> Category
> Command
> Menu
> Handler
> User Interface
![Page 19: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/19.jpg)
Eclipse Plug-ins (3
rd
edition)
Menu Category
Keybinding“Ctrl-V”
![Page 20: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/20.jpg)
Eclipse Plug-ins (3
rd
edition)
Menu Contribution
> locationURI
> visibleWhen
> expression
![Page 21: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/21.jpg)
Eclipse Plug-ins (3
rd
edition)
Menu Contribution – locationURImenuContribution locationURI=“[scheme]:[id]?[argument-list]”
To specify the Eclipse menu bar:
menu:org.eclipse.ui.main.menu?after=additions
The Eclipse menu bar unique ID
The location within the menu bar where the contribution should be added
![Page 22: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/22.jpg)
Eclipse Plug-ins (3
rd
edition)
Menu Contribution – locationURImenuContribution locationURI=“[scheme]:[id]?[argument-list]”
menu:org.eclipse.ui.main.menu?after=additions
scheme = the 'type' of the UI componentinto which the contributions will be added
menu = the main application menu or view pull-down menu popup = a context menu in view or editor toolbar = the main application toolbar or toolbar in view
![Page 23: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/23.jpg)
Eclipse Plug-ins (3
rd
edition)
Menu Contribution – locationURImenuContribution locationURI=“[scheme]:[id]?[argument-list]”
menu:org.eclipse.ui.main.menu?after=additions
id = the unique identifier of menu, popup or toolbar into which the contributions should be added
Eclipse main menu: org.eclipse.ui.main.menu Eclipse main toolbar: org.eclipse.ui.main.toolbar “Any” context menu: org.eclipse.ui.popup.any
Convention: view pull-down menu id = view context menu id = view id
![Page 24: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/24.jpg)
Eclipse Plug-ins (3
rd
edition)
Menu Contribution – locationURImenuContribution locationURI=“[scheme]:[id]?[argument-list]”
menu:org.eclipse.ui.main.menu?after=additions
argument-list = allows fine-grained definition of the specific location within a given menu, popup or toolbar
the identifier for some itemin the menu, popup or toolbaror “additions”
placement• “before”• “after”
![Page 25: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/25.jpg)
Eclipse Plug-ins (3
rd
edition)
Menu Contribution – Top Level
context menu
toolbar:org.eclipse.ui.main.toolbar?after=additions
menu:org.eclipse.ui.main.menu?after=additions
Add to “Window” menumenu:window?after=additions
Add to “Help” menumenu:help?after=additions
Menu item to appearin “all” context menus
popup:org.eclipse.ui.popup.any?after=additions
![Page 26: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/26.jpg)
Eclipse Plug-ins (3
rd
edition)
Menu Contribution – Viewmenu:org.eclipse.jdt.ui.MembersView?after=additions
toolbar:org.eclipse.jdt.ui.MembersView?after=additions
popup:org.eclipse.jdt.ui.MembersView?after=additions
Menu item to appearin “all” context menus
popup:org.eclipse.ui.popup.any?after=additions
26
![Page 27: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/27.jpg)
Eclipse Plug-ins (3
rd
edition)
Menu Contribution – visibilityvisibleWhen = an expression controlling visibility of a menu or menu item
<menu … > <visibleWhen> <with variable="selection"> <iterate operator="or" ifEmpty="false"> <instanceof value="org.eclipse.core.resources.IResource" /> </iterate> </with> </visibleWhen></menu>
By default, menus and menu items are always visible.
To reduce clutter and improve usability of an application,include a visibleWhen expression
Lazy loading plug-in is not loaded to evaluate this expression
![Page 28: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/28.jpg)
Eclipse Plug-ins (3
rd
edition)
Menu Contribution – visibilityvisibleWhen = an expression controlling visibility of a menu or menu item
<menu … > <visibleWhen> <with variable="selection"> <iterate operator="or" ifEmpty="false"> <instanceof value="org.eclipse.core.resources.IResource" /> </iterate> </with> </visibleWhen></menu>
Show this menu when the current selection contains an instance of IResource
![Page 29: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/29.jpg)
Eclipse Plug-ins (3
rd
edition)
Handler Category
Keybinding“Ctrl-V”
![Page 30: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/30.jpg)
Eclipse Plug-ins (3
rd
edition)
Handler<handler commandId=“… commend identifier … “ class=“ … class name … "> <activeWhen> … expression … when the command can be called </activeWhen> <enabledWhen> … expression … when the command is enabled </enabledWhen></handler>
> Zero or more handlers associated with a command> At most one active handler associated with a command> If two handlers have conditions indicating that they could be active,
then the conditions are compared to determine the more specific handler
command
![Page 31: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/31.jpg)
Eclipse Plug-ins (3
rd
edition)
Handler – top level edit menu
> Cut = org.eclipse.ui.edit.cut> Copy = org.eclipse.ui.edit.copy> Paste = org.eclipse.ui.edit.paste> Delete = org.eclipse.ui.edit.delete
![Page 32: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/32.jpg)
Eclipse Plug-ins (3
rd
edition)
Handler Declarationglobal “cut” command
<handler commandId="org.eclipse.ui.edit.cut" class="com.qualityeclipse.favorites.handlers.CutFavoritesHandler"> <activeWhen> <with variable="activePartId"> <equals value=“… favorites view id …“/> </with> </activeWhen> <enabledWhen> <with variable="selection"> <count value="+“/> </with> </enabledWhen></handler>
![Page 33: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/33.jpg)
Eclipse Plug-ins (3
rd
edition)
Handler Declaration<handler commandId="org.eclipse.ui.edit.cut" class="com.qualityeclipse.favorites.handlers.CutFavoritesHandler"> <activeWhen> <with variable="activePartId"> <equals value=“… favorites view id …“/> </with> </activeWhen> <enabledWhen> <with variable="selection"> <count value="+“/> </with> </enabledWhen></handler>
Handler should only be calledwhen the favorites view is active
Handler should only be enabledwhen one or more elements are selected
![Page 34: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/34.jpg)
Eclipse Plug-ins (3
rd
edition)
Handler Behaviorpublic class CopyFavoritesHandler extends AbstractHandler { public Object execute(ExecutionEvent event) throws ExecutionException { ISelection selection = HandlerUtil.getCurrentSelection(event); if (selection instanceof IStructuredSelection) { … process …
HandlerUtil provides many useful utility methods:> getActiveContexts> getActiveEditor> getActivePart> getActiveShell> getActiveWorkbenchWindow> getCurrentSelection> getVariable
When handler is executed, application state may have changed so obtain application state information such as selection, modifiers, variables and the like from the event using HandlerUtil
![Page 35: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/35.jpg)
Eclipse Plug-ins (3
rd
edition)
Key Bindings
![Page 36: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/36.jpg)
Eclipse Plug-ins (3
rd
edition)
Key Bindings<key commandId="com.qualityeclipse.favorites.commands.add" contextId="org.eclipse.ui.textEditorScope" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" sequence="Ctrl+Shift+A"></key>
Special keys are represented by:> ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP> BREAK, BS, CAPS_LOCK, CR, DEL, END, ESC> F1, F2, F3, F4, F5, F6, F7, F8, F9, …> NUMPAD_0, NUMPAD_1, NUMPAD_2, NUMPAD_3, NUMPAD_4, …> …
Key sequence consisting of one or more keystrokes
command
![Page 37: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/37.jpg)
Eclipse Plug-ins (3
rd
edition)
Views
37
![Page 38: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/38.jpg)
Eclipse Plug-ins (3
rd
edition)
Views> Views provide information on some object> Views augment editors
Example: Outline view summarizes content> Views augment other views
Example: Properties view describes selection
> Extension point for new types of views> Eclipse Platform includes many standard views
Examples: Resource Navigator, Outline, Problems, Search, …> View API and framework
Views can be implemented with JFace viewers
38
![Page 39: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/39.jpg)
Eclipse Plug-ins (3
rd
edition)
View DeclarationDeclaration contains categories and views
39
![Page 40: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/40.jpg)
Eclipse Plug-ins (3
rd
edition)
View Content ProviderContent Provider> Consumes “input” object> Produces all possible objects
In this case, it producesan array of person objects
Input object may be dependentupon current selection in page
Describing a table based viewbut anything is possible
40
![Page 41: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/41.jpg)
Eclipse Plug-ins (3
rd
edition)
View FiltersViewer Filters> Consume all possible objects> Produce objects to be displayed
View menu with “Filter” actionto select which filters are used
41
![Page 42: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/42.jpg)
Eclipse Plug-ins (3
rd
edition)
View SorterViewer Sorter> Consume unordered objects> Produce ordered objects
TableViewSorter> One comparator for each column> Tracks order in which comparators are used> Click column to sort, click again to reverse sort> Click column A then B to sort by B then A
42
![Page 43: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/43.jpg)
Eclipse Plug-ins (3
rd
edition)
View Label ProviderLabel Provider> Consumes object and column> Produces string/image to display
To display workbench objects, see> WorkbenchLabelProvider> WorkbenchPartLabelProvider
43
![Page 44: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/44.jpg)
Eclipse Plug-ins (3
rd
edition)
Separators / Groups :
• local• global• additions• other
View CommandsRecommendation:
Add separators (groups) to menus programmatically,then add commands using the locationURI’s discussed earlier
Three places commands can appear:
44
context menu, pulldown menu toolbar buttons,
![Page 45: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/45.jpg)
Eclipse Plug-ins (3
rd
edition)
View Context Menu – Dynamically BuiltRemove all actions each time menu is displayed
menuMgr.setRemoveAllWhenShown(true);
Register so others can contributegetSite().registerContextMenu(menuMgr, viewer);
Add menu listener to build menu dynamicallymenuMgr.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager m) { menuMgr.add(new Separator(“local”)); menuMgr.add(new Separator(“global”)); menuMgr.add(new Separator( IWorkbenchActionConstants.MB_ADDITIONS)); menuMgr.add(new Separator(“other”)); }});
45
![Page 46: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/46.jpg)
Eclipse Plug-ins (3
rd
edition)
View Tool Bar
46
Recommendation:Add separators (groups) to toolbars programmatically,then add commands using the locationURI’s discussed earlier
IToolBarManager toolBarMgr = getViewSite().getActionBars().getToolBarManager();toolBarMgr.add(new GroupMarker(“local"));toolBarMgr.add(new Separator( IWorkbenchActionConstants.MB_ADDITIONS));
Not built dynamically
![Page 47: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/47.jpg)
Eclipse Plug-ins (3
rd
edition)
View Pulldown Menu
47
Recommendation:Add separators (groups) to pulldown menu programmatically,then add commands using the locationURI’s discussed earlier
Code similar to code for context menu
Not built dynamically
![Page 48: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/48.jpg)
Eclipse Plug-ins (3
rd
edition)
View – Saving Local State InformationLocal state information typically includes:> References to objects being displayed> Current sort order> Currently enabled filters> Currently selected objects
Local state information typically stored using mementos:
> saveState(IMemento memento) – called by Eclipse during shutdownmem = memento.createChild(“SortInfo”);mem.putInteger(“SortColumn”, info.columnIndex);
> init(IViewSite site, IMemento memento) – called during view initializationIMemento mem = memento.getChild("SortInfo");if (mem != null) info.columnIndex = mem.getInteger(“SortColumn”);
48
![Page 49: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/49.jpg)
Eclipse Plug-ins (3
rd
edition)
View – Saving Global State InformationGlobal state information typically includes:> Model information shared by all views of this type
Global state information typically stored in plug-in metadata area:> Use XML file for highly structured data> Lazily load information when needed> Save information during plug-in shutdown
public void stop(BundleContext context) { … save information …}
> ISaveParticipant for snapshots throughout Eclipse sessionpublic void saving(ISaveContext context) { … save information …}
49
![Page 50: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/50.jpg)
Eclipse Plug-ins (3
rd
edition)
View – Managing OS ResourcesSome Java objects have associated OS resources
Images, Fonts, Colors Potential memory leak – must be disposed properly
Cache OS Resources where they are used Label provider View Plug-in Product
Some resources are provided for you Workbench images, System fonts and colors Eclipse ensures proper disposal – do not dispose yourself
50
Motto: If you create it, then you dispose it
![Page 51: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/51.jpg)
Eclipse Plug-ins (3
rd
edition)
Linking Views – Selection ProviderProvide selection to others
getSite().setSelectionProvider(viewer); viewer -or- other object implementing ISelectionProvider
Provide adaptable objectspublic class MyModelClass …. implements IAdaptable{
private IResource resource;….public Object getAdapter(Class type) {
if (type.isInstance(this)) return this;if (type.isInstance(resource)) return resource;return Platform.getAdapterManager().getAdapter(this, type);
}}
51
![Page 52: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/52.jpg)
Eclipse Plug-ins (3
rd
edition)
Linking Views – IAdapterFactoryAdapter Factory
public class MyAdapterFactory implements IAdapterFactory {public Class[] getAdapterList() {
… return array of types this factory adapts to …return new Class[] {MyModelClass.class};
}public Object getAdapter(Object object, Class type) {
… adapt object to type -or- return null …if (object instanceof MyModelObject && IResource.class.equals(type)) return ((MyModelObject) object).getResource();return null;
}}
Register Adapter Factory when the plug-in starts upPlatform.getAdapterManager().registerAdapters(…);
Unregister Adapter Factory when the plug-in shuts downPlatform.getAdapterManager().unregisterAdapters(…);
52
![Page 53: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/53.jpg)
Eclipse Plug-ins (3
rd
edition)
Adapter Overview
53
Favorites View Package Explorer
FavoritesAdapterFactory
SelectionFavorites Object
SelectionIResource
getAdapter()
IResource
getAdapter()
IResource
Favorites Object
![Page 54: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/54.jpg)
Eclipse Plug-ins (3
rd
edition)
Linking Views – Selection ListenerSelection change listener
getSite().getPage().addPostSelectionListener(…); getSite().getPage().removePostSelectionListener(…);
Getting the selection Check instanceof IStructuredSelection Extract objects from selection
Adapting selected objectsObject obj = selectedObjects[index];if (obj instanceof IAdaptable)
obj = (IResource) obj.getAdapter(IResource.class);if (obj instanceof IResource)
mySelectedObjects.add(obj);
… change selection in view based on mySelectedObjects …
54
![Page 55: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/55.jpg)
Eclipse Plug-ins (3
rd
edition)
Editors
55
![Page 56: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/56.jpg)
Eclipse Plug-ins (3
rd
edition)
Views versus EditorsViews and Editors differ in purpose and lifecycle
56
View Editor
Purpose Display information Modify information
Lifecycle Actions have immediate effect on the model
Follows the editor lifecycleopen – modify – save – close
![Page 57: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/57.jpg)
Eclipse Plug-ins (3
rd
edition)
Editors> Editors appear in workbench editor area> Contribute actions to workbench menu and tool bars> Open, edit, save, close lifecycle> Open editors are stacked by default
> Extension point for contributing new types of editors> Eclipse includes many standard editors
Eclipse Platform includes simple text file editor JDT provides Java source file editor
> Windows only: embed any OLE document as editor> Extensive text editor API and framework
57
![Page 58: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/58.jpg)
Eclipse Plug-ins (3
rd
edition)
Editor Declaration> Declaration
Name Identifier
> Editor Edit Controls Context Menu
> Editor Contributor Top Level Menu Tool Bar Buttons Global Edit Actions
58
![Page 59: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/59.jpg)
Eclipse Plug-ins (3
rd
edition)
Editor Lifecycle
59
Open
setInitializationData(…) – called with arguments specified in plug-in manifest createPartControl(Composite parent) – create the editor controls init(IEditorSite site, IEditorInput input) – initialize the editor’s content setFocus() – called when editor becomes the active part
Modify
firePropertyChanged(PROP_DIRTY) – should be called when content modified isDirty() – should return true when content modified but not saved
Save
doSave(IProgressMonitor monitor) – should save content doSaveAs() – prompt user and call doSave(…) isSaveAsAllowed() – returns true if user can save content to another location
Close
dispose() – called while Eclipse is closing the editor
![Page 60: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/60.jpg)
Eclipse Plug-ins (3
rd
edition)
Editor Context Menu
60
Separators / Groups :
• local• global• additions• other
Add special group so others can contribute actions
menuMgr.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
![Page 61: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/61.jpg)
Eclipse Plug-ins (3
rd
edition)
Editor Context Menu – Dynamically BuiltRemove all actions each time menu is displayed
menuMgr.setRemoveAllWhenShown(true);
Register so others can contributegetSite().registerContextMenu(menuMgr, viewer);
Add menu listener to build menu dynamicallymenuMgr.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager m) { menuMgr.add(new Separator(“local”)); menuMgr.add(new Separator(“global”)); menuMgr.add(new Separator( IWorkbenchActionConstants.MB_ADDITIONS)); menuMgr.add(new Separator(“other”)); }});
61
![Page 62: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/62.jpg)
Eclipse Plug-ins (3
rd
edition)
Editor ContributorManages tool bar buttons, menus and menu items
> init(…) Called when first created Initialize contributor
> setActiveEditor(…) Called when editor
becomes active or inactive Contributor should insert
and remove menus and toolbar buttons as appropriate
> dispose() Called when contributor
is no longer needed Contributor should
release OS resources created during init(…)
62
![Page 63: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/63.jpg)
Eclipse Plug-ins (3
rd
edition)
Perspectives
63
![Page 64: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/64.jpg)
Eclipse Plug-ins (3
rd
edition)
Perspectives> Perspectives are arrangements of views and editors> Different perspectives suited for different user tasks> Users can quickly switch between perspectives> Task orientation limits visible views, actions
Scales to large numbers of installed tools> Perspectives control
View visibility View and editor layout Action visibility
> Extension point for new perspectives> Eclipse includes standard perspectives
Resource, Java, Debug, Team Synchronization, …> Perspective API for programmatic access
64
![Page 65: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/65.jpg)
Eclipse Plug-ins (3
rd
edition)
Perspectivesorg.eclipse.ui.perspectiveExtensions extension-point
> Add a view to an existing perspective Relative – to another view Ratio – percentage of other view’s area Relation – to the specified view:
stacked, left, right, top, bottom Initially visible or not
> Add a shortcut To a view To another perspective
> Add an Action Set(or commands using the menu extension point)
65
![Page 66: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/66.jpg)
Eclipse Plug-ins (3
rd
edition)
Perspective Factory> Declaration
Name Identifier Icon
> Factory Views Actions (or commands
using the menu extension point)
66
![Page 67: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/67.jpg)
Eclipse Plug-ins (3
rd
edition)
And there’s more…> Dialogs and Wizards> Preference Pages and Property Dialogs> Extensions and Extension-Points> Builders, Markers, and Natures> Logging and Tracing > Help and Internationalization> Features and Branding> Build and Deploy
67
![Page 68: Building Eclipse Plug-Ins - Oracle | Integrated · Eclipse Plug-ins (3 rd edition) Building Eclipse Plug-Ins Dan Rubel, Chief Technology Officer Eric Clayberg, VP of Product Development](https://reader030.vdocument.in/reader030/viewer/2022021505/5ad3b65b7f8b9a0f198e008e/html5/thumbnails/68.jpg)
Eclipse Plug-ins (3
rd
edition)
Questions?
68