35
Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

Eclipse Extensibility

Embed Size (px)

DESCRIPTION

Eclipse Extensibility. João Paulo – jpsm Mário Barbosa - mbaj. O Que é o Eclipse ?. Plataforma Open Source Baseada em um sistema de plug-ins Doada para o Eclipse Foundation pela IBM em 2004 Inicialmente IDE Java Multiplataforma. Eclipse Public License (EPL). - PowerPoint PPT Presentation

Citation preview

Eclipse ExtensibilityJoão Paulo –jpsmMário Barbosa - mbaj

O Que é o Eclipse ?

•Plataforma Open Source•Baseada em um sistema de plug-ins•Doada para o Eclipse Foundation pela

IBM em 2004•Inicialmente IDE Java•Multiplataforma

Eclipse Public License (EPL)

Desenvolvimento do Eclipse

•Arquivos fontes de Java: 9.689•Linhas de código em Java: 1.903.219•JUnits usados automaticamente em cada

Build: 21.332•Instâncias da palavra “foo”: 224•Número de rosquinhas comidas: 1120

Arquitetura

IDE´s do Eclipse • JDT (Java Development

Tooling) • PDE (Plug-in Development

Environment)• CDT (C/C++ Development

Tools)• AJDT (AspectJ

Development Tools) • COBOL• VE (Visual Editor)• WTP (Web Tools Platform)• WST(Web Standard Tools)• JST (J2EE Standard Tools)

• Pollinate• WSVT ( Web Service

Validation Tools) • Hyades• OMONDO

RCP

•RCP (Rich Client Plataform)▫Plataforma para construir aplicações de

Clientes com uma rica funcionalidade•Open Source/Free•Iniciada em 2003 (desde o Eclipse 2.1)

Dentro do RCP

•Runtime Components▫OSGi – Open System Gateway initiative

Aplicações/Bundles▫Extensões

•UI Components▫SWT – Standard Widget Toolkit▫Jface – Framework de abstração de UI▫Workbench

View/ Editors/ Actions/ Perspective …▫Text/ Form/ GEM

Dentro do RCP

•User Experience/ Assistence▫Introdução ao plugin

“Bem vindo ao nosso produto”▫Dicas

“Mostre me como fazer”▫Ajuda do Eclipse

Baseada em XML/ XHTML

Dentro do RCP

•Disponibilização/ Updates▫Disponibilização

Suporta JNLP (webstart)▫Update de programas▫Update de UI▫Update de Funcionalidades

Arquitetura RCP

Platform architecture

Platform Runtime• Descobre dinamicamente

os plug-ins instalados

• Plug-ins são ativados após ação do usuário

OSGi

•Open Service Gateway initiative•Pequena camada runtime•Procurar e ativa plugins•Maior compatibilidade e portabilidade

▫Hardware▫Systemas Operacionais

JDT (Java Development tooling)• Utilizam extension points.

Frameworks▫ Conjunto de plug-ins

• Contribuições no desenvolvimento de programas▫ Escrita▫ Compilação▫ Teste▫ Debug

PDE (Plug-in development environment)

• Possui um conjunto de ferramentas para o desenvolvimento de plug-ins▫ New Project Creation Wizards▫ Import wizards▫ Export wizards▫ Views▫ Conversion tools▫ ...

SWT

•SWT (Standard Widget Toolkit)•IBM desenvolveu o VisualAge

▫IDE desenvolvida em Smalltalk▫Virou um projeto OpenSource

•Uma nova GUI Toolkit▫Look and Feel Nativo▫Performance Nativa

JFace

•Framework orientado a objeto•SWT Widgets

Workbench UI

• Implementam o “cockpit” do usuário

• Define extension points para UI components▫ Menu and tool bar

actions▫ Drag and drop▫ Dialogs▫ Viewers▫ ...

Workbench

Plug-ins são componentes

•Cada plug-in representa um conjunto de funcionalidades que podem ou não ser extendidas de outros plug-ins

•Possuem um ou mais extension points•Cada plug-in é definido em seu próprio

arquivo plugin.xml e se encontra em seu próprio sub-diretório ou jar

Plugin.xml

Desenvolvendo um Plug-in

•Decidir como ele será integrado a plataforma

•Identificar os extensions-points a serem utilizados

•Implementar os extension-points de acordo com sua especificação

•Prover um manifest file (manifest.mf) e um plugin-manifest (plugin.xml)

HelloWorld – Plug in Project•Selecione File -> New Project•Escolha a opção Plug-in project •Insira o nome do projeto

HelloWorld – Plug-in Content

•Digite o id, versão e nome do plug-in

Hello World - Templates•Selecione o template Plug-in with a view e

clique next

HelloWorld – Main View Settings•Mude os nomes gerados automaticamente

e clique em Finish

Código simplificado

package com.example.helloworld;

import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.SWT; import org.eclipse.ui.part.ViewPart;

public class HelloWorldView extends ViewPart { Label label; public HelloWorldView() { } public void createPartControl(Composite parent) { label = new Label(parent, SWT.WRAP); label.setText("Hello World"); } public void setFocus() { // set focus to my widget. For a label, this doesn't // make much sense, but for more complex sets of widgets // you would decide which one gets the focus. } }

Substitua o código da classe do plugin pelo código abaixo

plugin.xml gerado

<?xml version="1.0" encoding="UTF-8"?><?eclipse version="3.2"?><plugin>

<extension point="org.eclipse.ui.views"> -> única extensão utilizada<category

name="Hello Category“ id="com.example.helloworld">

</category><view

name="Hello View"icon="icons/sample.gif"category="com.example.helloworld"class="com.example.helloworld.views.HelloWorldView"id="com.example.helloworld.views.HelloWorldView">

</view></extension>

</plugin>

Dê dois cliques em plugin.xml no Package Explorer e selecione a aba plugin.xml

Manifest.mf gerado

•Possui meta dados do plug-in (clique na aba manifest.mf para visualizá-lo)

Rodando o plug-in

•Na aba overview clique em Launch an Eclipse application ou rode a aplicação normalmente como eclipse application

Referências• http://pesquompile.wikidot.com/eclipse-n• http://www.slideshare.net/vijaykiran/eclipse-rcp• http://www.slideshare.net/joomlatools/joomladay-nl-2008-

debugging-joomla-in-eclipse-338480• http://www.slideshare.net/ciukes/introduction-to-the-eclipse-platf

orm-141827

• http://www.slideshare.net/neerajbhusare/eclipse-modeling-framework

• http://www.slideshare.net/fbahr/introduction-to-the-graphical-modeling-framework-gmf

• http://www.cjug.org/presentations/2005/Sep01west/eclipse_rcp.pdf

• http://wiki.eclipse.org/index.php/Rich_Client_Platform• http://wiki.eclipse.org/RCP_FAQ• Eclipse HELP

Dúvidas