Desenvolvendo um plug-in simples para o Eclipse

O Eclipse é uma das IDEs (Integrated Development Environment) mais utilizadas para desenvolvimento de software [1]. É uma plataforma open source, baseada em Java, sendo facilmente extensível utilizando-se plug-ins. Para facilitar a criação destes plug-ins, o Eclipse inclui o Plug-in Development Environment (PDE), que permite desenvolver ferramentas que se integram perfeitamente ao ambiente de desenvolvimento. Neste artigo, iremos criar um plug-in simples usando o PDE e veremos como depurar (debugging) o código desta aplicação.

Primeiramente, iremos configurar a perspectiva do Eclipse. A perspectiva é um conjunto de painéis ou visualizações pré-configurados para uma determinada funcionalidade. Por padrão, o Eclipse já vem configurado para utilizar a perspectiva PDE. No entanto, para selecioná-la basta clicar no menu “Window / Open Perspective / Other / Plug-in Development”, que abrirá a perspectiva para desenvolvimento de plug-ins.

Agora, iremos criar o projeto PDE propriamente dito, no qual conterá os arquivos de configuração e os códigos fonte. Para isto, clique no menu “File / New / Project” e em seguida, selecione “Plug-in Development / Plug-in Project” e clique em “Next”, como na Figura 1 a seguir.

plugin_project
Figura 1: criando um projeto Plug-in Project

Na próxima tela, insira um nome para o projeto, por exemplo com.matera.eclipse.example, e pressione “Next”. Já na janela Content pressione novamente “Next”. Por fim, na tela de Templates, temos a opção de criar manualmente o código inicial do plug-in, porém escolha o assistente de geração de código “Hello, World”, como mostrado na Figura 2, e clique em “Finish”.

hello_world
Figura 2: escolhendo o assistente de código “Hello, World”

 

Em seguida, um projeto denominado com.matera.eclipse.example é criado em sua área de trabalho, conforme ilustrado na Figura 3. Na esquerda do ambiente, na view Package Explorer [5], está a estrutura geral do projeto com alguns arquivos criados pelo assistente, sendo que os mais importantes são: o plugin.xml, o MANIFEST.MF e os arquivos Java criados na pasta src.

O arquivo plugin.xml é chamado de arquivo de manifesto do plug-in. Este arquivo em formato XML contem informações descritivas do plug-in, por exemplo as extensões da plataforma que serão utilizadas e como serão implementadas. Já o arquivo MANIFEST.MF (Figura 3) descreve as dependências do projeto, algumas configurações e engloba até o arquivo plugin.xml.

label_menu
Figura 3: projeto PDE e arquivo MANIFEST.MF

 

Neste momento vamos ver o que nossa aplicação “Hello, World” realmente faz. O código foi gerado pelo assistente no momento da criação do projeto e basicamente adiciona um novo menu no eclipse. Este menu possui um item de menu que quando clicado, uma dialog é exibida com uma mensagem.

Antes de executar a aplicação, vamos ver um pouco do código criado. No arquivo plugin.xml podemos ver a tag “extension” que foi gerada pelo assistente. Nesse caso, esta tag possui o atributo “point” com o valor “org.eclipse.ui.actionSets”. Isto significa que estamos utilizando o ponto de extensão actionSets do plug-in org.eclipse.ui. O actionSets é um conjunto de ações relacionados à interface com o usuário, por exemplo: menus, itens de menu e barras de ferramentas.

Ainda no arquivo plugin.xml, dentro da tag “extension”, existe a tag “menu” que declara um novo menu na barra de ferramentas do eclipse com o label igual a “Sample Menu”. Em seguida, temos a tag “action”, que declara um item de menu, com atributos como label, icon, class, etc. O atributo class define a classe que será executada quando este item for acionado, sendo que no nosso caso o seu valor é “com.matera.eclipse.example.actions.SampleAction”, sendo assim podemos visualizar o código que será executado na classe SampleAction, no método run(IAction action). O método run, por sua vez, chama o método MessageDialog.openInformation que abre a dialog com uma mensagem.

Agora vamos rodar plug-in e ver o menu funcionar. Para isto, clique com o botão direito sobre o projeto com.matera.eclipse.example e clique em “Run As / Eclipse Application” como ilustrado na Figura 4 a seguir.

run_as
Figura 4: executando o plug-in

 

Feito isso, uma nova instância do eclipse abrirá com o plug-in rodando. Ou seja, um novo eclipse aparecerá com o novo menu “Sample Menu” e o item de menu “Sample Action” como na Figura 5. Podemos clicar no item e visualizar a mensagem “Hello, Eclipse word” dentro da dialog. Esta mensagem foi passada como parametro para o método MessageDialog.openInformation dentro do método run da classe SampleAction.

menu_item
Figura 5. Menu “Sample Menu” e o item de menu “Sample Action”.

 

Agora, para depurar o código, podemos inserir um breakpoint no código Java pelo menu “Run / Toggle Breakpoint” e rodar em modo Debug. Por exemplo, coloque um breakpoint na linha que executa o MessageDialog.openInformation na classe SampleAction, em seguida clique com o botão direito no projeto e clique em “Debug As / Eclipse Application”. Um novo eclipse abrirá, sendo que ao clicar no sub-meu, o código deverá parar na linha do nosso breakpoint.

Neste artigo, vimos como criar um plug-in simples para o Eclipse. Criamos o tradicional  “Hello, World” que já vem pré-configurado pelo assistente de código. Além disto, vimos como rodar e depurar o código.

LINKS EXTERNOS

[1] https://blog.codeanywhere.com/most-popular-ides-code-editors/
[2] http://www.ibm.com/developerworks/br/library/os-ecplug/
[3] http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.rse.doc.isv%2Fguide%2Ftutorial%2FpdeProject.html
[4] http://www.eclipse.org/articles/Article-Your%20First%20Plug-in/YourFirstPlugin.html
[
5] http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Freference%2Fviews%2Fref-view-package-explorer.htm

Por GUILHERME MORAES ARMIGLIATTO

Postado em: 17 de junho de 2015

Confira outros artigos do nosso blog

REST não é JSON

21 de agosto de 2017

Bruno Sofiato

[Webinar] Profile de aplicações Java com Oracle Mission Control e Flight Recorder

24 de julho de 2017

Danival Calegari

Criando Mocks de serviços REST com SoapUI

27 de junho de 2017

Monise Costa

JavaScript 6: diferença entre var, let e const

09 de maio de 2017

Otávio Felipe do Prado

Deixe seu comentário