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)
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 subdiretó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
Substitua o código da classe do plugin pelo código abaixo
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.
}
}
plugin.xml gerado
Dê dois cliques em plugin.xml no Package Explorer e
selecione a aba plugin.xml
<?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>
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-2008debugging-joomla-in-eclipse-338480
• http://www.slideshare.net/ciukes/introduction-to-the-eclipseplatform-141827
• http://www.slideshare.net/neerajbhusare/eclipse-modelingframework
• http://www.slideshare.net/fbahr/introduction-to-the-graphicalmodeling-framework-gmf
• http://www.cjug.org/presentations/2005/Sep01west/eclipse_rcp.p
df
• http://wiki.eclipse.org/index.php/Rich_Client_Platform
• http://wiki.eclipse.org/RCP_FAQ
• Eclipse HELP
Dúvidas
Download

Plug-ins