contributing to eclipse:
DESCRIPTION
Contributing to Eclipse:. Understanding and Writing Plug-ins. Tutorial Outline. Understanding the Contribution Cycle Introducing the technical side of Eclipse Using Eclipse to explore Eclipse Becoming an Extender Becoming an Enabler. Eclipse is an IDE framework. Is more than a Java IDE - PowerPoint PPT PresentationTRANSCRIPT
Contributing to Eclipse:
Understanding and Writing Plug-ins
Tutorial Outline
• Understanding the Contribution Cycle• Introducing the technical side of Eclipse• Using Eclipse to explore Eclipse• Becoming an Extender• Becoming an Enabler
Eclipse is an IDE framework
• Is more than a Java IDE– Eclipse + JDT = Java IDE�– Eclipse + CDT = C/C++ IDE– Eclipse + PHP = PHP IDE
• Language Editor/Debugger/Refractor
Eclipse is a Tools Framework
• Tools extend the Eclipse platform using plug-ins– Business Intelligence and Reporting Tools (BIRT)– Eclipse Communications Framework (ECF)– Web Tools Project (WTP)– Eclipse Modelling Framework (EMF)– Graphical Editing Framework (GEF)– Test and Performance Tooling Project (TPTP)
Eclipse is a Rich Client Platform
Platform vs. Extensible Application
Platform Implications
• Everybody can contribute plug-ins– Every programmer can be a tool smith
• Creating opportunities for further extension makes it possible for the tool smith to benefit from the work of others
• It has to be easy to install and manage plug-ins
Eclipse Involvements
Eclipse Involvements
• Users– Users of Eclipse
• Extenders– Providers of extensions to existing extension
points• Enablers– Providers of extension points others provide
extensions for
As an eclipse user• common user interface paradigm– Workbench– Views – navigation support, properties– Editors – edit files, e.g. Java Editor– Perspectives – arrangement of views and editors– Preference / Property – Global/Local settings
• Hot Keys for Java developer– Ctrl+Shift T Find Type– Ctrl+Shift M Find Import– Ctrl+Shift F Format– Ctrl 1 Quick Fix
Tutorial Outline
• Understanding the Contribution Cycle
• Introducing the technical side of Eclipse• Using Eclipse to explore Eclipse• Becoming an Extender• Becoming an Enabler
Eclipse Plug-in Architecture
• Plug-in – set of contributions– Smallest unit of Eclipse functionality�– Big example: HTML editor�– Small example: Action to create zip files�
• Extension point - named entity for collecting contributions– Example: extension point for workbench
preference UI• Extension - a contribution
– Example: specific HTML editor preferences
Contribution Rule
• Everything is a contribution.• Each plug-in– Contributes to 1 or more extension points– Optionally declares new extension points– Depends on a set of other plug-ins– Optionally contains Java code libraries and other files– May export Java-based APIs for downstream plug-ins– Lives in its own plug-in subdirectory
• Theoretically unbound number of plug-ins
Eclipse Plug-in Architecture
• Allow for loading on demand by separating declaration and implementation:– Declaration of plug-in contributions• Describes plug-in functionality• Describes UI elements to present plug-in functionality• Used by the platform to render parts of the plug-in’s UI• Specifies implementation classes
– Implementation of plug-in contributions• Implemented in Java and provided as Java archive• Is loaded on demand�
Tip of the Iceberg
• Startup time: O(#used plug-ins), not O(# installed plug-ins)
Eclipse Plug-in Architecture
• Plug-in details spelled out in the plug-in manifest– Manifest declares contributions– Code implements contributions and provides API– plugin.xml file in root of plug-in subdirectory
Plug-in Manifest
Eclipse Platform• Eclipse Platform is the common base• Consists of several key components
Strata Rule
• Separate core functionality from UI functionality.– Workspace Component– Workbench Component
Workspace Component
• Project – Folder – Files termed resources• Meta data management:�– Natures (e.g., Web, Java)– Markers
• Incremental builders• Local history
Workbench Component
• SWT – generic low-level graphics and widget toolkit• JFace – UI frameworks for common UI tasks• Workbench – UI personality of Eclipse Platform
SWT
• A portable widget set– OS-independent API– Uses native widgets where available– Emulates widgets where unavailable
• Supported platforms– Win32, WinCE– Linux/Motif, Solaris/Motif, AIX/Motif, HP-UX/Motif,…– QNX/Photon, Linux/GTK, – Mac OS X/Carbon
JFace
• UI framework built on top of SWT– Viewers• Model aware adapters for SWT widgets• Trees, tables, lists, styled text, ..
– Dialog, Preference and Wizard frameworks– Actions• Location-independent user commands• Contribute action to menu, tool bar, or status line
Workbench
• Defines common user interface paradigm– Workbench– Views – navigation support, properties– Editors – edit files, e.g. Java Editor– Perspectives – arrangement of views and editors
• Extended by contributing– Views, editors, preference pages, wizards, …
Tutorial Outline
• Understanding the Contribution Cycle• Introducing the technical side of Eclipse
• Using Eclipse to explore Eclipse• Becoming an Extender• Becoming an Enabler
Explore Eclipse with Eclipse
• The Plug-in Development Environment• Explore a running Eclipse installation• Create a self-hosting workspace
Plug-in Development Support
Plug-in Development Environment
• Extenders use PDE to implement plug-ins• PDE = Plug-in development environment• Specialized tools for developing Eclipse plug-ins• Built atop Eclipse Platform and JDT• Features– Specialized views to explore a running Eclipse installation– Specialized PDE editor for plug-in manifest files– Templates for new plug-ins– PDE runs and debugs another Eclipse workbench
Available and Activated Plug-ins
Self-hosting Workspace• PDE allows to
import the plug-ins of a running Eclipse installation into an Eclipse workspace
• Locate implementation class using plugin spy
Self-hosting Workspace
• Plug-ins correspond to Java projects�• Source projects “projects you are working on”• Binary projects “projects you are browsing
only”– Source can be inspected
Tutorial Outline
• Understanding the Contribution Cycle• Introducing the technical side of Eclipse• Using Eclipse to explore Eclipse
• Becoming an Extender• Becoming an Enabler
Becoming an Extender
• Contributions do not– Override existing behavior– Remove or replace existing components– Harm existing or future contributions
Becoming an Extender
• Create the Course Explorer plug-in• Import the business layer source to workspace• Declare and sketch the implementation of the
Course Explorer View• Create a PDE launch configuration• Run the Course Explorer• Finalize the implementation
Create a PDE launch configuration
Viewer Details
• Adapt domain model to a Viewer
View Details
Becoming an Extender• Another example:
– Popup qualified Java class file Name and show java structure view• Step:
– Create an eclipse plug-in project– Add dependencies(org.eclipse.jdt.core, org.eclipse.jdt.ui)– Copy qualified name of (org.eclipse.jdt.core.ICompilationUnit)– Add a popup extension.
• Name with ~ShowJavaTreeViewAction~Test the action– Create a tree view– Reuse JavaElementLabelProvider and StandardJavaContentProvier
Tutorial Outline
• Understanding the Contribution Cycle• Introducing the technical side of Eclipse• Using Eclipse to explore Eclipse• Becoming an Extender
• Becoming an Enabler
Tutorial Outline
• Identify the scope of contributions to your plug-in
• Declare the extension points• Implement the extension points• Consume the new extension points
作业• 自行实现课堂上讲解的拼写检查的示例– 提示:三个主要的类型:
• SpellChecker/IDictionary/IWordIterator
• 利用上述的组件,实现一个具有以下功能的 Eclipse 插件:– 在 PackageExplorer视图中选取一个文件,在右键菜单中增加 OOADSpell Check菜单项。– 选中后,根据选中文件的类型,选取适当的拼写检查器进行检查,并将检查的结果以表格的形式显示在一个名为 Spell Check Result的视图中。表格包括两栏:错误单词和错误次数。
作业• 需要支持对文本文件 (.txt)和 (.xml)文件的检查, XML文件检查时需要简单地忽略掉’ <‘和’ >’之间的内容(不必考虑特殊情况,如 xml文件的格式错误)。• 可选:
– 对于有能力的同学,可以考虑定义扩展点,使得第三方开发者能够提供对其它文件格式的拼写检查的支持。• 可参考的资料:
– 示例– Platform Plug-in Developer Guide(Eclipse Help)– The Official Eclipse FAQs:
http://wiki.eclipse.org/The_Official_Eclipse_FAQs
作业讲解
主要问题• 包含统计的概念• 有些过度设计的内容–如包含了 Project/Schedule
• 依然有将用例和概念模型混杂在一起的情况–如包含执行任务 /登录系统的概念