Eclipse Extensibility Joo Paulo jpsm Mrio Barbosa mbaj
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 (Aspect. J Development Tools) • COBOL • VE (Visual Editor) • WTP (Web Tools Platform) • WST(Web Standard Tools) • JST (J 2 EE 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 Visual. Age ▫ IDE desenvolvida em Smalltalk ▫ Virou um projeto Open. Source • 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)
Hello. World – Plug in Project • Selecione File -> New Project • Escolha a opção Plug-in project • Insira o nome do projeto
Hello. World – 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
Hello. World – 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. View. Part; public class Hello. World. View extends View. Part { Label label; public Hello. World. View() { } public void create. Part. Control(Composite parent) { label = new Label(parent, SWT. WRAP); label. set. Text("Hello World"); } public void set. Focus() { // 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. Hello. World. View" id="com. example. helloworld. views. Hello. World. View"> </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-2008 debugging-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/Sep 01 west/eclipse_rcp. p df • http: //wiki. eclipse. org/index. php/Rich_Client_Platform • http: //wiki. eclipse. org/RCP_FAQ • Eclipse HELP
Dúvidas
- Slides: 35