350 likes | 489 Views
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).
E N D
Eclipse Extensibility João Paulo –jpsm Mário Barbosa - mbaj
O QueéoEclipse ? • Plataforma Open Source • Baseadaem um sistema de plug-ins • Doadaparao Eclipse Foundation pela IBM em 2004 • Inicialmente IDE Java • Multiplataforma
Desenvolvimento do Eclipse • Arquivosfontes de Java: 9.689 • Linhas de códigoem Java: 1.903.219 • JUnitsusadosautomaticamenteemcada Build: 21.332 • Instânciasdapalavra “foo”: 224 • Número de rosquinhascomidas: 1120
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) • Plataformaparaconstruiraplicações de Clientes com umaricafuncionalidade • Open Source/Free • Iniciadaem 2003 (desdeo 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çãoaoplugin • “Bemvindoaonossoproduto” • Dicas • “Mostre me comofazer” • Ajuda do Eclipse • Baseadaem XML/ XHTML
Dentro do RCP • Disponibilização/ Updates • Disponibilização • Suporta JNLP (webstart) • Update de programas • Update de UI • Update de Funcionalidades
PlatformRuntime • Descobre dinamicamente os plug-ins instalados • Plug-inssão ativados após ação do usuário
OSGi • Open Service Gateway initiative • Pequenacamada runtime • Procurareativaplugins • Maiorcompatibilidadeeportabilidade • Hardware • SystemasOperacionais
JDT (Java Developmenttooling) • Utilizam extensionpoints. Frameworks • Conjunto de plug-ins • Contribuições no desenvolvimento de programas • Escrita • Compilação • Teste • Debug
PDE (Plug-indevelopmentenvironment) • Possui um conjunto de ferramentas para o desenvolvimento de plug-ins • New Project Creation Wizards • Import wizards • Export wizards • Views • Conversiontools • ...
SWT • SWT (Standard Widget Toolkit) • IBM desenvolveuoVisualAge • IDE desenvolvidaem Smalltalk • Virou um projetoOpenSource • 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 extensionpointspara UI components • Menu andtool bar actions • Draganddrop • Dialogs • Viewers • ...
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 extensionpoints • Cada plug-in é definido em seu próprio arquivo plugin.xml e se encontra em seu próprio sub-diretório ou jar
Desenvolvendo um Plug-in • Decidir como ele será integrado a plataforma • Identificar os extensions-pointsa serem utilizados • Implementar os extension-pointsde 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-inproject • Insira o nome do projeto
HelloWorld – Plug-inContent • Digite o id, versão e nome do plug-in
Hello World - Templates • Selecione o templatePlug-inwith a viewe clique next
HelloWorld – MainViewSettings • 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; importorg.eclipse.swt.widgets.Composite; importorg.eclipse.swt.widgets.Label; importorg.eclipse.swt.SWT; importorg.eclipse.ui.part.ViewPart; publicclassHelloWorldViewextendsViewPart { Labellabel; publicHelloWorldView() { } publicvoidcreatePartControl(Compositeparent) { label = newLabel(parent, SWT.WRAP); label.setText("Hello World"); } publicvoidsetFocus() { // set focus to mywidget. For a label, thisdoesn't // makemuchsense, but for more complex sets ofwidgets // youwould decide whichonegetsthefocus. } }
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> <extensionpoint="org.eclipse.ui.views"> -> única extensão utilizada <category name="HelloCategory“ id="com.example.helloworld"> </category> <view name="HelloView" 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 Launchan 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-platform-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