Contributing to Eclipse:

Post on 23-Mar-2016

132 views 3 download

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 Presentation

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

• 依然有将用例和概念模型混杂在一起的情况–如包含执行任务 /登录系统的概念