org.eclipse.ui.newWizards

Pode adicionar um assistente às opções de menu Ficheiro > Novo na área de trabalho através da utilização do ponto de extensão org.eclipse.ui.newWizards. O exemplo da ferramenta readme utiliza esta definição de ponto de extensão para adicionar o assistente Readme File (ficheiro 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.png">
    	   <description>%NewWizard.desc</description>
	   <selection class="org.eclipse.core.resources.IResource"/>
	</wizard>
    </extension>

A categoria descreve o agrupamento do assistente. Uma parentCategory opcional estabelece a nova categoria como descendente de uma categoria existente.

As categorias de nível superior aparecem no menu Ficheiro > Novo .  Neste exemplo, a parentCategory está definida como sendo uma categoria "Examples". De onde vem a categoria ascendente? O plug-in org.eclipse.ui define uma categoria de exemplos padrão na 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 Ficheiro > Novo .

Menu Novo com categoria Examples

 

A categoria da ferramenta readme name define a etiqueta que é utilizada para o nível seguinte de agrupamento abaixo da categoria ascendente. Estas categorias são mostradas como segundo nível na árvore apresentada no assistente Novo Exemplo. Os name e icon (nome e ícone) do assistente são apresentados abaixo da categoria quando a estender. A description (descrição) do assistente seleccionado é mostrada no topo do assistente ao seleccioná-lo.

Assistente Novo exemplo com entradas
de readme

Estas informações sobre o assistente aparecem somente devido à marcação constante do ficheiro plugin.xml. Não é executado nenhum do código do plug-in enquanto o utilizador não escolher o botão Seguinte. Uma vez escolhido, a área de trabalho irá instanciar a class (classe) do assistente especificada na marcação e transmitir-lhe uma class de selecção esperada.

A classe identificada nesta extensão (ReadmeCreationWizard) deve implementar a interface . interface. A maioria dos assistentes realiza isto estendendo a classe Wizard da plataforma, embora isto seja um mecanismo de implementação e não seja necessário ao ponto de extensão.

O próprio assistente pouco faz além de criar as páginas dentro de si. Vejamos primeiro a implementação da página e depois voltemos ao assistente.

Páginas

A área de trabalho proporciona classes de páginas de assistente básicas que suportam o tipo de processamento realizado para cada ponto de extensão de assistente. Poderá utilizar estas páginas ou estendê-las para adicionar mais processamento.

O objectivo do ReadmeCreationWizard consiste em criar um novo ficheiro, adicionar o conteúdo necessário ao ficheiro e, como opção, abrir um editor no ficheiro. A nossa página tem de definir os controlos que deixam o utilizador especificar qual o conteúdo que fica no ficheiro e se deve ser lançado um editor ou não.

Criamos a página do assistente, ReadmeCreationPage, estendendo WizardNewFileCreationPage. Os controlos para uma página de assistente são definidos de modo semelhante à definição dos controlos de uma vista ou um editor. A página implementa um método createControl, criando os widgets de SWT necessários como descendentes do Composite fornecido. Visto que a super-classe já adiciona widgets que suportem processamento do novo ficheiro, só temos de estender o método createControl na nossa página de assistente para adicionar as caixas de verificação adicionais que controlam a geração de secções e abertura do editor.

    public void createControl(Composite parent) {
      // inherit default container and name specification widgets
      super.createControl(parent);
      Composite composite = (Composite)getControl();
      ...
      // sample section generation group
      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));
      ...
      // sample section generation checkboxes
      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);
      ...
      // open file for editing checkbox
      openFileCheckbox = new Button(composite,SWT.CHECK);
      openFileCheckbox.setText(MessageUtil.getString("Open_file_for_editing_when_done"));
      openFileCheckbox.setSelection(true);
      ...
   }

Não terá dificuldade em seguir este código se entender os conceitos em Standard Widget Toolkit.

Os padrões básicos para implementar uma página são:

A classe ReadmeCreationPage herda muito do seu comportamento da WizardNewFileCreationPage. Procure a implementação destas classes para mais informações.

Agora que já compreendemos o que faz uma página, voltemos ao assistente.

Assistente

O assistente é responsável por criar as páginas e fornecer a lógica de "finalização".

Os padrões básicos para implementar um assistente são:

O assistente concluído assemelha-se ao seguinte:

Página do assistente de criação do
ficheiro readme