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

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

Embed Size (px)

Citation preview

Page 1: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

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

Page 2: 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

Page 3: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj
Page 4: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

Eclipse Public License (EPL)

Page 5: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

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

Page 6: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

Arquitetura

Page 7: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

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

Page 8: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

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)

Page 9: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

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

Page 10: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

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

Page 11: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

Dentro do RCP•Disponibilização/ Updates

▫Disponibilização Suporta JNLP (webstart)

▫Update de programas▫Update de UI▫Update de Funcionalidades

Page 12: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

Arquitetura RCP

Page 13: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

Platform architecture

Page 14: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

Platform Runtime• Descobre dinamicamente

os plug-ins instalados

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

Page 15: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

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

▫Hardware▫Systemas Operacionais

Page 16: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

JDT (Java Development tooling)• Utilizam extension points.

Frameworks▫ Conjunto de plug-ins

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

Page 17: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

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▫ ...

Page 18: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

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

Page 19: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

JFace•Framework orientado a objeto•SWT Widgets

Page 20: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

Workbench UI• Implementam o “cockpit”

do usuário• Define extension points

para UI components▫ Menu and tool bar

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

Page 21: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

Workbench

Page 22: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

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

Page 23: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

Plugin.xml

Page 24: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

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)

Page 25: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj
Page 26: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

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

Page 27: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

HelloWorld – Plug-in Content•Digite o id, versão e nome do plug-in

Page 28: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

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

clique next

Page 29: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

HelloWorld – Main View Settings•Mude os nomes gerados automaticamente

e clique em Finish

Page 30: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

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

Page 31: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

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<categoryname="Hello Category“ id="com.example.helloworld"></category><viewname="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

Page 32: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

Manifest.mf gerado•Possui meta dados do plug-in (clique na

aba manifest.mf para visualizá-lo)

Page 33: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

Rodando o plug-in•Na aba overview clique em Launch an

Eclipse application ou rode a aplicação normalmente como eclipse application

Page 34: Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj

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-platfor

m-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

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

Dúvidas