Pessoal,
Fiz mais uma atualização no tutorial, e estou publicando tudo aqui
flw
Heber
http://heberfa.blogspot.com
Desenvolvendo Plug-in para o eclipse
Bom, gostaria muitíssimo de ir direto ao assunto, portanto, quem quiser saber o que é eclipse ou java, sugiro que, ao invés de ir ao google e acabar descobrindo que eclipse é um evento astronômico e java é a principal ilha da Indonésia , que procure nos respectivos links: eclipse e java
Para começar, tudo no eclipese é plug-in, como pode se visto nessa imagem:
Só que os plug-ins Workbench e Workspace são indispensáveis para o funcionamento do eclipse. Existe também outros componentes no eclipse, como, o Debug, o Team e o Help , mas, não são essenciais para o funcionamento do eclipse, apesar dos mesmos sempre acompanharem qualquer distribuição do eclipse. Claro, o Debug pode não ser essencial para o eclipse rodar, mas pra mim e qualquer outro mortal ele é essencial para se usar o eclipse
Para se criar os plug-ins nós iremos usar o próprio eclipse, portanto, instale-o, ele vem com um módulo, o Plug-in Development Environment (PDE) para desenvolvimento de plug-ins, para acessá-lo vá em File -> New -> Other e selecione Plug-in Project. Dê um nome para o seu plug-in e clique em next e finish.
O PDE abrirá automaticamente. Pronto, agora o próximo passo é começar codificar o seu plug-in.
Antes de começar a codificar vamos a algumas informações úteis. Primeiro é que se deve ter bastante cuidado ao se projetar um plug-in para garantir sua integração com a ferramenta.
Se você entrar na pasta em que instalou o eclipse vai encontrar a seguinte estrutura,
C:\Eclipse
- — features
- — plugins
| + — org.junit_3.8.1
| | about.html
| | junit.jar
| | plugin.properties
| | plugin.xml
| |
| + — org.eclipse.update.ui_2.1.0
| |
| …
- — readme
Fonte: http://devresource.hp.com/drc/technical_articles/ePlugIn/index.jsp
Em todas as pastas de plug-ins tem um arquivo chamado plugin.xml, nesse arquivo você define oque você vai usar do eclipse e dos plug-ins que seu projeto precisa, além do nome e a versão do plug-in e os menus e sub-menus do plug-in, entre outras coisas que veremos mais adiante.
Bom, agora vamos voltar a última etapa do último post e criar nosso projeto. Vá em file->new->project e siga os seguintes passos:
Passo 1:
selecione Plun-in Project e clique em Next
Passo 2:
Dê um nome ao seu plug-in, no meu caso, org.hfa.helloword, e clique em Next.
Passo 3:
Clique em Next.
Passo 4:
Selecione Hello, Word e clique em Next
Passo 5:
clique em Next
Enfim:
Vai abrir o PDE
Vamos agora rodar nosso plug-in usando o Run-time workbench
Clique no arquivo plugin.xml com o botão direito e vá em Run As ->Run.
Aparecerá uma tela com o titulo Run, selecione Eclipse Aplication->New Configuration(1) na tree view e não mexa em nada, simplesmente clique em Run, uma nova instância do eclipse vai abrir e terá um menu com nome Sample menu, vá nele e clique em Sample action
Pronto! Ta ai seu primeiro plugin funcionado!
Agora vamos mexer um pouco no nosso plug-in.
Clique no Plugin.xml e vá na aba Extensions, do lado esquerdo tem uma lista com nome All Extencions, expanda a lista até o item Sample Menu. Clique em Sample Menu e no lado direito altere o campo Label para Meu menu.
Agora clique no item Sample Action na mesma lista e no lado direito altere a label para Mostrar mensagem.
Salve seu projeto.
Clique na aba Overview e depois em “Launch an Eclipse application” pronto, uma nova instancia do eclipse vai se abrir, você pode perceber o menu alterado e também seus itens. Essa é uma outra forma de vc rodar seu plug-in diferente da que vimos no post anterior.
O que foi feito via interface visual pode também ser feito editando diretamente no arquivo plugin.xml
<extension
point=“org.eclipse.ui.actionSets”>
<actionSet
label="Sample Action Set"
visible="true"
id=“org.hfa.helloword.actionSet”>
<menu
label=“Sample &Menu"
id=“sampleMenu”>
<separator
name=“sampleGroup”>
</separator>
</menu>
<action
label=”&Sample Action"
icon="icons/sample.gif"
class="org.hfa.helloword.actions.SampleAction"
tooltip="Hello, Eclipse world"
menubarPath="sampleMenu/sampleGroup"
toolbarPath="sampleGroup"
id=“org.hfa.helloword.actions.SampleAction”>
</action>
</actionSet>
</extension>
Se você observar bem o arquivo plugin.xml, as suas tabs e propriedades tem a mesma estrutura apresentada graficamente na aba extencions do PDE. As mudanças feitas ai possuem o mesmo efeito, que as mudanças feitas na aba extencions do PDE.
Agora vamos adicionar mais extensões ao nosso plugin, que tal adicionarmos uma view, uma daquelas abas que fica embaixo do editor.
Então vamos nova mente para aba Extencions, clique no botão add, selecione org.eclipse.ui.views e clique em Finish, vai aparecer mais um item em nossa lista de extensões, clique no item org.eclipse.ui.views com o botão direito e adicione uma nova categoria (new->category), novamente clique em org.eclipse.ui.views com o botão direito e adicione uma nova view (new->view).
Clique na categoria adicionada e substitua o id pelo seguinte org.hfa.helloword.view.helloworldcategory. Substitua também o Name por Hello Word!
Clique na view adicionada e substitua o id pelo seguinte org.hfa.helloword.view.helloworldview. Substitua o Name por Hello Word!, o class por org.hfa.helloword.view.SampleView e category por org.hfa.helloword.view.helloworldcategory
Vamos agora criar nossa class, com o mesmo item selecionado na nossa lista de extenções, clique no hiperlink class (abaixo de name, o mesmo que mudamos o conteudo no paragrafo anterior), vai abrir a seguinte tela:
Simplesmente clique em finsh sem alterar nada.
Agora você deve abrir a classe SampleView no editor, procure o metodo createPartContro e adicione as seguintes linhas
Label label = new Label( parent, SWT.LEFT );
label.setText( “Hello, Eclipse world!” );
E adicione os seguintes imports
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Label;
Agora vamos rodar o nosso Plugin para ver o efeto, na aba Overview clique em Launch an Eclipse application, na nova instancia do eclipse vá no menu Window->show view->Other e procure pela categoria Hello World! dentro dela terá a view Hello World ! e clicando nela parecerá nossa view com o testo “Hello, Eclipse world!”.
Fonte: Help do eclipse
Bom, até agora fizemos já duas contribuições ao eclipse com nosso plug-in, mas existem várias maneiras de se fazer contribuições, nesse post vou comentar sobre as contribuições diretas nos menus do eclipse.
Fonte:http://www.eclipse.org/articles/article.php?file=Article-action-contribution/index.html#example1
Então para adicionar um item ao menu principal do editor de texto padrão do eclipse deve-se fazer algo como o seguinte
<extension point=“org.eclipse.ui.popupMenus”>
<viewerContribution
id=“org.hfa.helloword.action.contribution.popup.editor"
targetID=”#TextEditorContext">
<action
id="org.hfa.helloword.action.contribution.editor.action1"
label="Editor Action 1"
icon=“icons/red_dot.gif”
menubarPath="additions"
class=“org.hfa.helloword.action.contribution.EditorAction1Delegate”>
</action>
</viewerContribution>
</extension>
Observe que no arquivo acima foi adicionada uma extensão org.eclipse.ui.popupMenus, e dentro dessa extensão uma view com id igual a org.eclipse.ui.articles.action.contribution.popup.editor e targetID igual a #TextEditorContext, essa ultima parte é que aponta para o editor default do eclipse.
Na tag action temos definido, a label, o icone, o menubarPath e a classe que contem o método que deve ser executado ao clicar no menu. O menubarPath indica onde o nosso item deve aparecer no menu, se ele não for indicado o item vai aparecer no fim do menu.
Aqui é importante dizer uma coisa, para cada tipo de ação que você queira executar, é necessário saber quais interfaces sua classe deve implementar, por exemplo.
Se sua classe quiser interagir com o editor deve implementar a classe IEditorActionDelegate.
Já se quiser interagir como as view do eclipse deve implementar IViewActionDelegate.
O seguinte codigo, se adicionado ao Plugin.xml, irá adicionar ao menu do Navigator um item desativado e outro com um sub-menu, no sub-menu terá um item desativado e outro ativado. Observem o targetID apontado para o Navigator
<extension point=“org.eclipse.ui.popupMenus”>
<viewerContribution
id="org.eclipse.ui.articles.action.contribution.popup.navigator"
targetID=“org.eclipse.ui.views.ResourceNavigator”>
<action
id="org.eclipse.ui.articles.action.contribution.navigator.action1"
label="View Action 1"
icon="icons/red_dot.gif"
menubarPath=“additions"
class=“org.eclipse.ui.articles.action.contribution.ViewAction1Delegate"
enablesFor=”!”>
</action>
<menu
id="org.eclipse.ui.articles.action.contribution.navigator.subMenu"
label="View Sub Menu"
path=“additions”>
<separator name=“group1”/>
</menu>
<action
id="org.eclipse.ui.articles.action.contribution.navigator.action2"
label="View Action 2"
icon="icons/red_dot.gif"
menubarPath="org.eclipse.ui.articles.action.contribution.navigator
.subMenu/group1"
class=“org.eclipse.ui.articles.action.contribution.ViewAction2Delegate”
enablesFor=“1”>
</action>
<action
id="org.eclipse.ui.articles.action.contribution.navigator.action3"
label="View Action 3"
icon="icons/red_dot.gif"
menubarPath="org.eclipse.ui.articles.action.contribution.navigator
.subMenu/group1"
class="org.eclipse.ui.articles.action.contribution
.ViewAction3Delegate"
enablesFor=“2+”>
</action>
</viewerContribution>
</extension>