Contributing to Eclipse:
description
Transcript of Contributing to Eclipse:
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
• 依然有将用例和概念模型混杂在一起的情况–如包含执行任务 /登录系统的概念