Eclipse and Framework Extension Languages

Similar documents
20. Eclipse and Framework Extension Languages

The Eclipse Rich Client Platform

Getting the Most from Eclipse

Developing Eclipse Rich-Client Applications Tutorial

First Steps in RCP. Jan Blankenhorn, WeigleWilczek GmbH, Stuttgart, Germany. February 19th, 2009

Framework Documentation

23. Framework Documentation

Advanced User Interface Programming Using the Eclipse Rich Client Platform

24. Framework Documentation

Comparing graphical DSL editors

Regular Forum of Lreis. Speechmaker: Gao Ang

IBM Workplace Client Technology API Toolkit

inside eclipse Erich Gamma Eclipse Project Management Committee Member IBM Distinguished Engineer IBM Rational Software

Workbench and JFace Foundations. Part One, of a two part tutorial series

Foundations of User Interface Programming Using the Eclipse Rich Client Platform

ECLIPSE RICH CLIENT PLATFORM

Outline. Tutorial III. Eclipse. Basics. Eclipse Plug-in Feature

Eclipse 4 Eclipse Day Toulouse 24 mai 2012

Index. Symbols. /**, symbol, 73 >> symbol, 21

Smart Client development with the Eclipse Rich Client Platform

Eclipse Data Binding - Updating RCP Mail 2.0 Handout

When Modeling meets Productivity. Sven Efftinge - itemis

Introduction to Eclipse

Eclipse (1/3) Deepak Dhungana Institute for System Engineering and Automation

RAP (The Rich Ajax Platform)

Supervisor : Germán Cancio Meliá. Towards a GUI for CDB-CLI

McAffer_Index.qxd 9/20/2005 9:39 AM Page 495. Index

Eclipse Building Commercial-Quality Plug-ins Second Edition

EMC Documentum Composer

Eclipse 4. Brian de Alwis. Abstract

Creating an Eclipse View

Implementation of a 2D Graph Viewer

Part II Black-Box Composition Systems 20. Finding UML Business Components in a Component-Based Development Process

Eclipse Introduction. Zeng Yu

Workpackage 15: DBE Business Modeling Language. Deliverable D15.5: BML Editor Final Release

Software Architecture Checker

Moving From Studio to Atelier. Wouter Dupré Sales Engineer

Rich Client GUI's with RCP & RAP

The Definitive Guide to. NetBeans Platform 7. Heiko Bock. Apress*

Eclipse Platform Technical Overview

Embedded automotive applications are just a few clicks away. Philippe NOEL - STMicroelectronics

e4 Project 0.9 Release Review

Workplace Client Technology, Micro Edition. WCTME Enterprise Offering Application Developer s Guide

eclipse rich ajax platform (rap)

USER GUIDE. MADCAP FLARE 2018 r2. Eclipse Help

EMC Documentum Composer

Eclipse Plug-ins. Third Edition

Expeditor Client for Desktop. Client Platform Overview

Tutorial: Tools for mobile Linux (TmL) Exercises

Using the Plug in Development Environment

Common Navigator Framework

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer

IBM Workplace Managed Client API Toolkit

The Eclipse Rich Client Platform (RCP)

The Next Generation of Eclipse: e4. Mike Milinkovich Executive Director Eclipse Foundation

Web Applica+on Development. Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

MAENAD Modeling Workbench

At the shell prompt, enter idlde

MAEANAD Modeling Workbench

Custom Code Rules Deep Dive

Drools Tools Reference Guide. Version: CR1

Mobile Application Workbench. SAP Mobile Platform 3.0 SP02

1 Overview. 1 Overview. Contents. 1.1 Table of Contents Table of Contents

Using Command Modeler

Introduction to Eclipse Rich Client Platform Support in IBM Rational HATS. For IBM System i (5250)

A Tour of the Eclipse Environment

Just Enough Eclipse What is Eclipse(TM)? Why is it important? What is this tutorial about?

Introduction to Eclipse Rich Client Platform Support in IBM Rational HATS For IBM System i (5250)

Part II Black-Box Composition Systems 10. Business Components in a Component-Based Development Process

Goulwen Le Fur Obeo EclipseCon NA 2014

Introduction to Eclipse and Eclipse RCP

ATESST2 D4.2.1 Grant Agreement

Part 2: Notes Plug-in Development

JClone: Syntax tree based clone detection for Java

Eclipse (3/3) Deepak Dhungana Institute for System Engineering and Automation

About Tom. CEO BestSolution Systemhaus GmbH. Eclipse Committer. Platform UI EMF. Projectlead: UFaceKit, Nebula. Member of the Architectual Council

Lessons learned from building Eclipse-based add-ons for commercial modeling tools

Model-based Software Engineering (02341, spring 2016) Ekkart Kindler

vsphere Web Client SDK Documentation VMware vsphere Web Client SDK VMware ESXi vcenter Server 6.5.1

Tutorial. Interactive Forms Integration into Web Dynpro for Java Topic: Working with the PdfObject API

IBM Lotus Design Tools

Module 3: Working with C/C++

Developing Rich Clients with Eclipse 4.x RCP

What is Wazaabi 2.0? Declarative UI framework. based on. live EMF model(s)

IBM Research Report. Breaking Out of Eclipse: Developing an ActiveX Host for SWT

Testing Eclipse plug-ins: Tips & Tricks

B. Assets are shared-by-copy by default; convert the library into *.jar and configure it as a shared library on the server runtime.

Lotus Sametime Software Development Kit

Keep on Swinging. Productivity layers on top of SWT. Karsten Schmidt SAP AG.

EMC Documentum Composer

AppDev StudioTM 3.2 SAS. Migration Guide

Eclipse in Embedded. Neha Garg : Prerna Rustagi :

IBM. Developing with IBM Rational Application Developer for WebSphere Software V6

Visual Disassembler for the Microchip PIC24 Microchip dspic30/dspic33 Microprocessor Family

Introduction to Eclipse

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc.

GETTING STARTED WITH THE ADOBE INDESIGN CS3 PLUG-IN EDITOR

In order to support developers, there needs to be a number of tools available which may be involved in the ultimate solution.

jbpm Tools Reference Guide

AADL Graphical Editor Design

Transcription:

Eclipse and Framework Extension Languages Prof. Uwe Aßmann TU Dresden Institut für Software und Multimediatechnik Lehrstuhl Softwaretechnologie Design Patterns and Frameworks, Prof. Uwe Aßmann 1

References Frank Gerhardt, Christian Wege. Neuer Reichtum Eclipse als Basis für Rich-Client-Anwendungen. IX 7/2004, Heise-Verlag. Ed Burnett. RCP tutorial. http://www.eclipse.org/articles/article-rcp-1/tutorial1.html S. Shavor, J. D'Anjou, S. Fairbrother, D. Kehn, J. Kellerman, P. MacCarthy. The Java Developer's Guide to Eclipse. Addison-Wesley, 2003 2

Eclipse Structure Eclipse is a set of frameworks for development of IDE applications IDE (not only for Java) GUI applications Rich thin clients To this end, it stacks several frameworks 3

Eclipse Framework Structure GEF IDE Applications CDT JDT Java Dev. Tools PDE Plugin development Environment Lotus Client EMF IDE Compare Debug Team(cvs) Rich Client Update Help Text (Edit) Optional Workspace Rich Client Platform (RCP) Generic Workbench JFace widget framework (MVC) SWT window library OSGI dynamic component model (runtime platform) Java 4

Plugins and Extensions Points Eclipse frameworks carry hooks, extension points. No concept for variability, only extension An upper-level framework (or the rest of the application), which is fed into a lower-level framework, is called plugin or extension Extension points can be classes, menus, properties, class path entries, aso. Plugin, extension Extension point 5

Plugins (Extensions) Are classes that are dynamically loaded from a special directory eclipse/plugins Most of the parts of Eclipse are plugins in the plugin directory Every plugin is represented by a plugin class And specifies a manifest file, plugin.xml: <?xml version="1.0" encoding="utf-8"?> <?eclipse version="3.0"?> <plugin id="org.hidoors.mv" name="modelverificationframework" version="1.0.0" provider-name="linkoepings universitet"> <runtime> <library name="mv.jar"> <export name="*"/> <packages prefixes="org.hidoors.mv"/> </library> </runtime> </plugin> Plugin offers a library 6

Some Extension Points Actions Menu bar, toolbar to views and editors Menu choices Object context menu Creation wizard for File->New Preference page to Window->Preferences Views for Window->ShowView Perspectives for Window->OpenPerspectives Incremental method for project rebuild in Project->RebuildProject Help manual for Help->HelpContents 7

Extension Points in Ant Plugin org.eclipse.ant.core <?xml version="1.0" encoding="utf-8"?> <?eclipse version="3.0"?> <plugin id="org.eclipse.ant.core" name="%pluginname" version="3.0.0" provider-name="%providername" class="org.eclipse.ant.core.antcoreplugin"> <runtime> <library name="antsupport.jar"> <export name="*"/> </library> </runtime> <requires> <import plugin="org.eclipse.core.variables"/> <import plugin="org.eclipse.core.runtime.compatibility"/> </requires> <extension-point id="extraclasspathentries" name="%classpathname" schema="schema/extraclasspathentries.exsd"/> <extension-point id="anttasks" name="%tasksname" schema="schema/anttasks.exsd" /> <extension-point id="anttypes" name="%typesname" schema="schema/anttypes.exsd" /> <extension-point id="antproperties" name="%propertiesname" schema="schema/antproperties.exsd"/> <!-- Applications --> <extension id="antrunner" point="org.eclipse.core.runtime.applications"> <application> <run class="org.eclipse.ant.core.antrunner"> </run> </application> </extension> <!-- Extra Classpath --> <extension point="org.eclipse.ant.core.extraclasspathentries"> <extraclasspathentry library="lib/antsupportlib.jar"> </extraclasspathentry> </extension> <extension point="org.eclipse.ant.core.antproperties"> <antproperty name="eclipse.home" class="org.eclipse.ant.internal.core.antpropertyvalueprovider"> </antproperty> <antproperty name="eclipse.running" class="org.eclipse.ant.internal.core.antpropertyvalueprovider"> </antproperty> </extension> <extension point="org.eclipse.core.runtime.contenttypes"> <content-type id="antbuildfile" name="%antbuildfilecontenttype.name" base-type="org.eclipse.core.runtime.xml" priority="high"> <describer class="org.eclipse.core.runtime.content.xmlrootelementcontentdescriber"> <parameter name="element" value="project" /> </describer> </content-type> </extension> </plugin> 8

The Plugin Class Represents the plugin Extends class Plugin or AbstractUIPlugin Has functions to handle directories for persistent state and intermediate data Handles input streams Treats plugin preferences 9

Extension Points are Ubiquitous Eclipse generalizes the hook concept from framework hooks to extension points of Resources Pages for page tabs Menu entries and their underlying commands, e.g., creation wizards Views Editors Perspectives Help i.e., to other conceptual entities of the Eclipse RCP To make a good application GUI framework, hooks need to be defined on all tools, materials, and environments of the framework 10

The Generic Workbench (part of the RCP) Structures and organizes the GUI of an RCP application File, Edit, Resources, Run, Navigate, Help menu entries Uses one or several Perspectives with Editors and Views Perspective: A collection of editors and views, bundled together in a specific GUI configuration Editors: tool to edit an artifact View: view onto an artifact Outline views Structural views Property views Graphic views The workbench can be extended on all three levels (new perspectives, new editors, new views) 11

Views Use Viewers to Display Models IViewPart LabelProvider ViewPart init() * Viewer setcontentprovider() setlabelprovider() * * model Model ContentProvider 12

Declaring Views, Editors, Perspectives // extending with a perspective <extension point= org.eclipse.ui.perspectives > <perspective> name= MyPerspective class= myjava.perspective id= org.hidoors.mv </perspective> </extension> // extending another perspective <extension point= org.eclipse.ui.perspectiveextensions <perspectiveextension...> <actionset... <newwizardshortcut... <view id= org.hidoors.mv.views name= MyView icon= v_icon.gif category=.. </view> <editor name= MyEditor icon= e_icon.gif id= org.hidoors.mv.editors class= org.hidoors.mv.editors.editorclass contributorclass=.. </editor> </perspectiveextension> </extension> 13

JFace Predefined Viewers TableViewer TextViewer TreeViewer ListViewer PropertySheetViewer CheckboxTreeViewer etc 14

The Plugin Development Environment PDE PDE has a registry for plugins Different views and editors for plugins (e.g., Tree-based view) PDE New Extension wizard for creating extensions Template-controlled wizards User-written wizards The Extension Wizard selects a project code generation wizard A wizard generating the initial plugin code Creating a standalone version of the RCP application, without the development environment (if the application should run standalone) 15

Insight: Language-Controlled Framework Extension Framework extension points (framework hooks) are interpreted in Eclipse. Instead of specifying them as a framework hook pattern, the core interpreter interprets XML files to know how to extend extension points Hence, Eclipse has a little domain-specific language (DSL) for extension points and binding them (language-controlled extension) This goes beyond the framework hook patterns, because they only use polymorphism and design patterns. Eclipse' main feature is an extension language interpreter. 16

The Future of Eclipse Eclipse will stay, because it has the first framework extension language There might be a market for about 3-5 framework extension languages, in which the product families of the world will be made Can you define other framework extension languages? 17

The Nature of Framework Hooks Framework hook patters provide a very simple framework extension language. The framework hook patterns can all be written down in logic (see exercises). Hence, they provide a little constraint language for variability and extensibility of frameworks. Variability and Extensibility are distinguished by 1 or n multiplicity constraint (see description logic) Object recursion or non-recursion (recursive logic or non-recursive) 18

The End www.eclipse.org 19