A classe plug-in

Até agora, conversamos sobre as diferentes extensões fornecidas pela ferramenta leia-me. Vamos ver a definição geral do plug-in da ferramenta leia-me.

Definição do plug-in

O plug-in da ferramenta leia-me está definido no início do arquivo plugin.xml.

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin
        id="org.eclipse.ui.examples.readmetool"
   name="%Plugin.name"
   version="2.1.0"
   provider-name="%Plugin.providerName"
   class="org.eclipse.ui.examples.readmetool.ReadmePlugin">

   <runtime>
     <library name="readmetool.jar"/>
   </runtime>
   <requires>
      <import plugin="org.eclipse.ui"/>
      <import plugin="org.eclipse.core.resources"/>
      <import plugin="org.eclipse.core.runtime.compatibility"/>
      <import plugin="org.eclipse.ui.views"/>
      <import plugin="org.eclipse.ui.ide"/>
      <import plugin="org.eclipse.jface.text"/>
      <import plugin="org.eclipse.text"/>
      <import plugin="org.eclipse.ui.workbench.texteditor"/>
      <import plugin="org.eclipse.ui.editors"/>
   </requires>
   ...

A definição de plug-in inclui o nome, id, versão e nome do fornecedor do plug-in. Vimos a maioria desses parâmetros antes no nosso plug-in hello world. A ferramenta leia-me define também uma classe plug-in especializada, ReadmePlugin.

O nome do arquivo jar também é fornecido. Os nomes de arquivos especificados em um arquivo plugin.xml são relativos ao diretório de plug-in, então o arquivo jar da ferramenta deve ser localizado diretamente no diretório de plug-in.

O elemento requires informa a plataforma das dependências de ferramenta leia-me. Os plug-ins da UI do workbench são listados como plug-ins requeridos, junto com o núcleo, jface e plug-ins de texto variados.

AbstractUIPlugin

A classe ReadmePlugin representa o plug-in da ferramenta Leia-me e gerencia o ciclo de vida do plug-in.  Como vimos no exemplo Hello World, não é necessário especificar uma classe de plug-in.  A plataforma fornecerá uma para você.  Nesse caso, nosso plug-in precisa inicializar dados relacionados à UI quando é iniciado.  A classe da plataforma AbstractUIPlugin fornece uma estrutura para gerenciar recursos da UI e é estendida por ReadmePlugin.

AbstractUIPlugin utiliza métodos de inicialização e encerramento genéricos para gerenciar imagens, definições de diálogo e um armazenamento de preferências durante a existência do plug-in.  Daremos uma olhada nos detalhes da classe ReadmePlugin quando trabalharmos com diálogos e preferências.