org.eclipse.ui.newWizards

Você pode adicionar um assistente para as opções de menu Arquivo > Novo > no workbench utilizando o ponto de extensão org.eclipse.ui.newWizards. O exemplo de ferramenta leia-me utiliza essa definição de ponto de extensão para incluir o assistente de Arquivo Readme:

   <extension
      point = "org.eclipse.ui.newWizards">
	<category
	   id = "org.eclipse.ui.examples.readmetool.new"
	   parentCategory="org.eclipse.ui.Examples"
	   name="%NewWizard.category">
	</category>
 	<wizard
	   id = "org.eclipse.ui.examples.readmetool.wizards.new.file"
      	   name = "%NewWizard.name"
	   class="org.eclipse.ui.examples.readmetool.ReadmeCreationWizard"
	   category="org.eclipse.ui.Examples/org.eclipse.ui.examples.readmetool.new"
	   icon="icons/obj16/newreadme_wiz.gif">
    	   <description>%NewWizard.desc</description>
	   <selection class="org.eclipse.core.resources.IResource"/>
	</wizard>
 </extension>

O category descreve o agrupamento para o assistente.  Um parentCategory opcional estabelece a nova categoria como uma filha de uma categoria existente.  

As categorias no nível superior aparecerão no menu Arquivo > Novo.  Neste exemplo, parentCategory é definido para uma categoria "Examples".   De onde vem a categoria pai?  O plug-in org.eclipse.ui define uma categoria examples padrão em sua marcação:

   <extension
        point="org.eclipse.ui.newWizards">
         <category
          name="%NewWizards.Category.Examples"
          id="org.eclipse.ui.Examples">
    </category>
    ...

Esta categoria aparece no menu Arquivo > Novo.

Menu Novo com categoria Examples

 

O nome da categoria da ferramenta leia-me define o rótulo que é utilizado para a próxima camada de agrupamento sob a categoria pai.  Estas categorias são mostradas no lado esquerdo do assistente para Novo Exemplo.  O nome e o ícone do assistente são mostrados à direita do assistente quando você clica na categoria.  A descrição do assistente é mostrada na parte superior do assistente quando você o seleciona na lista à direita, conforme mostrado abaixo:

Assistente para novo exemplo com entradas do leia-me

Estas informações sobre o assistente aparecem unicamente por causa da marcação no arquivo plugin.xml .  Nenhum código de plug-in é executado até que o usuário escolha o botão Avançar.  Depois que isso acontecer, o workbench instanciará a classe do assistente especificada na marcação e transmitirá a ele uma classe de seleção esperada.

A classe identificada nesta extensão (ReadmeCreationWizard) deve implementar a interface INewWizard.  A maioria dos assistentes fazem isso estendendo a classe Assistente da plataforma embora este seja um mecanismo de implementação e não requerido pelo ponto de extensão.

O assistente não faz muito, mas cria as páginas em seu interior. Vamos ver primeiramente a implementação da página e em seguida voltar ao assistente.

Páginas

O workbench fornece classes de página de assistente básico que é compatível com o tipo de processamento executado para cada ponto de extensão de assistente. É possível usar essas páginas ou estendê-las para incluir processamento adicional.

O objetivo do ReadmeCreationWizard é criar um novo arquivo, incluir o conteúdo necessário no arquivo e como uma opção, abrir um editor no arquivo. Nossa página precisa definir os controles que permitem ao usuário especificar o conteúdo que vai no arquivo e se deveria ser lançado um editor.

Criamos a página de assistente, ReadmeCreationPage, estendendo WizardNewFileCreationPage. Os controles de uma página de assistente são definidos de forma similar à definição dos controles de uma exibição ou de um editor. A página implementa um método createControl, criando os SWT widgets necessários como filho da Composite fornecida. Uma vez que a super classe já inclui widgets compatíveis com o processamento de novos arquivos, precisamos somente estender o método createControl na nossa página do assistente para incluir as caixas de entrada adicionais que controlam a geração de seções e a abertura do editor.

public void createControl(Composite parent) {      // herdar contêiner padrão e widgets de especificação do nome
      super.createControl(parent);
      Composite composite = (Composite)getControl();
      ...
      // exemplo de grupo de geração de seção
      Group group = new Group(composite,SWT.NONE);
      group.setLayout(new GridLayout());
      group.setText(MessageUtil.getString("Automatic_sample_section_generation"));
      group.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL |
         GridData.HORIZONTAL_ALIGN_FILL));
      ...
      // exemplos de caixas de opção de geração de seção
      sectionCheckbox = new Button(group,SWT.CHECK);
      sectionCheckbox.setText(MessageUtil.getString("Generate_sample_section_titles"));
      sectionCheckbox.setSelection(true);
      sectionCheckbox.addListener(SWT.Selection,this);

      subsectionCheckbox = new Button(group,SWT.CHECK);
      subsectionCheckbox.setText(MessageUtil.getString("Generate_sample_subsection_titles"));
      subsectionCheckbox.setSelection(true);
      subsectionCheckbox.addListener(SWT.Selection,this);
      ...
      // caixa de opção abrir arquivo para edição
      openFileCheckbox = new Button(composite,SWT.CHECK);
      openFileCheckbox.setText(MessageUtil.getString("Open_file_for_editing_when_done"));
      openFileCheckbox.setSelection(true);
      ...
   }

Você estará apto a seguir esse código se conhecer os conceitos no Kit de Ferramentas Padrão de Widgets.

Os padrões básicos para implementar uma página incluem:

A classe ReadmeCreationPage herda grande parte desse comportamento do WizardNewFileCreationPage.  Procure a implementação dessas classes para obter informações adicionais.

Agora que entendemos o que a página faz, voltemos ao assistente.

Assistente

O assistente é responsável por criar as páginas e fornecer a lógica "concluir".

Os padrões básicos para implementar um assistente incluem:

O assistente concluído aparece dessa forma:

Página do assistente para Criação do arquivo readme

    

Copyright IBM Corporation e outros 2000, 2003.