A página Extensões é utilizada para procurar e editar extensões de plug-in. As extensões são o mecanismo central para contribuir com o comportamento da plataforma. A menos que seu plug-in seja uma biblioteca de API Java simples disponibilizada a outros plug-ins, o novo comportamento é contribuído com uma extensão.
Os plug-ins contribuem com os pontos de extensão definidos por esses plug-ins de que eles necessitam. A sintaxe de sua extensão deve corresponder à definição do ponto de extensão para ser processada corretamente. A lista total de pontos de extensão elegíveis é calculada pelo PDE que percorre todos os plug-ins visíveis (da área de trabalho e externos).
O assistente para extensão genérica fornecido pelo PDE simplesmente varrerá os pontos de extensão. Se um esquema de extensão for fornecido (consulte Esquema do Ponto de Extensão), o assistente extrairá metadados do ponto de extensão e da gramática do esquema.
Além do assistente genérico, vários modelos de extensão estão disponíveis. São os mesmos modelos que podem ser utilizados para gerar conteúdo inicial do projeto de plug-in. Sua presença aqui permite que a criação da extensão seja feita por etapas. Você pode criar um plug-in com uma exibição simples, depois incluir um editor ou assistente, posteriormente.
Para ilustrar a operação da página Extensões, incluiremos uma ação 'Hello, PDE world' em nosso plug-in. Nós contribuiremos com o ponto de extensão org.eclipse.ui.actionSets. Este exemplo assume que você já esteja familiarizado com o ponto de extensão.
Iniciaremos pressionando o botão Incluir..., para selecionar o assistente de extensão:
O assistente Extensão Baseada no Esquema é o padrão desde que ele manipule as extensões nas formas mais genéricas. Ele varrerá os plug-ins e oferecerá todos os pontos de extensão encontrados, com ou sem esquemas. Os que têm esquemas permitirão que o PDE ofereça melhor assistência. Se estiver faltando um esquema do ponto de extensão, o PDE permitirá incluir elementos e atributos à extensão, mas não será capaz de verificar se eles são válidos para o ponto de extensão selecionado.
Ao pressionar Avançar, será oferecida uma lista de pontos de extensão. Selecione org.eclipse.ui.actionSets e pressione Concluir.
O assistente incluirá a nova extensão à lista de extensões. Como essa extensão possui um esquema associado a ela, podemos editar ainda nossa definição de extensão. Selecionamos a extensão incluída recentemente e escolhemos Novo->actionSet no menu popup. Esse elemento XML foi definido como o único elemento válido que pode ser mostrado na definição de extensão.
Para todos os atributos obrigatórios, PDE criará valores padrão. Nós podemos alterar o nome padrão do conjunto de ações para "Conjunto de Ações de Amostra" selecionando o elemento e alterando a propriedade label na exibição Propriedades. O novo nome será mostrado na lista de extensões.
Agora precisamos definir um menu e uma ação para o conjunto de ação. Se nós selecionarmos o conjunto de ações e o abrirmos o menu na seção "Filhos do Elemento de Extensão" o menu "Novo" oferecerá duas opções: menu e action. Essas opções baseiam-se nas informações do esquema para a extensão do conjunto de ações. Primeiro, nós criamos o menu.
Podemos criar a ação de maneira similar:
A última coisa que precisamos definir é a classe Java da ação. A definição do ponto de extensão especifica que uma ação deve implementar IWorkbenchWindowActionDelegate. O PDE pode oferecer assistência desde que conheça as informações do esquema:
Antes de pressionar Concluir, o diálogo deve estar da seguinte forma:
Quando concluir, a nova classe será gerada com base na interface necessária (com uma implementação stub para cada método abstrato). Além disso, o nome da nova classe será definido para o valor da propriedade de classe. O assistente também abrirá a nova classe Java para edição por padrão. Você pode localizar o método "executar" e incluir a seguinte instrução:
System.out.println("Hello, PDE world!");
Salve o novo código fonte e feche o editor Java. Em seguida, retorne para a página Extensões do editor de manifesto e salve.
Continuaremos com esse exemplo quando executarmos o plug-in.