Páginas do Assistente Java

O pacote org.eclipse.jdt.ui.wizards fornece páginas de assistentes para a criação e configuração de elementos Java.  Várias páginas pré-fabricadas são fornecidas para sua utilização.

Configurando definições de construção Java

JavaCapabilityConfigurationPage suporta a edição de definições de construção Java (configuração da pasta de origem, projetos referidos e bibliotecas referidas e exportadas).  

Se precisar fornecer um assistente que configure um projeto para o plug-in enquanto também o configura com a natureza Java e outras capacidades do projeto Java, você deve utilizar essa página (ao invés de dividir em classes a NewJavaProjectWizardPage).

Criando novos elementos Java

Uma hierarquia de páginas de assistente suporta a criação de novos elementos Java.  

NewElementWizardPage é a classe abstrata que define a operação básica do assistente.  Classes abstratas adicionais são fornecidas na hierarquia para execução de personalizações na funcionalidade fornecida pelos assistentes concretos.

Os assistentes de criação concretos pode ser utilizados diretamente e, geralmente, não são projetados para serem divididos em classes. 

Contribuindo com uma página de assistente do contêiner do classpath

A interface IClasspathContainerPage define uma estrutura para contribuir com uma página de assistente que permite ao usuário definir uma nova entrada de contêiner do classpath ou editar uma já existente.  Se o plug-in definiu seu próprio tipo de contêiner de classpath utilizando o ponto de extensão org.eclipse.jdt.core.classpathContainerInitializer do Núcleo do JDT, é provável que você queira definir uma página de assistente correspondente para editar e criar contêiners de classpath deste tipo.

A marcação do plug-in deve fornecer uma extensão org.eclipse.jdt.ui.classpathContainerPageNa marcação de extensão, forneça o nome da classe que implementa a IClasspathContainerPage.  Se desejar fornecer informações adicionais em sua página de assistente sobre o contexto de um classpath quando este é selecionado, você pode implementar a IClasspathContainerPageExtension para inicializar qualquer estado que depender das entradas selecionadas no classpath atual.

Personalizando uma página de assistente

Além de usar as páginas pré-fabricadas, você pode dividir em classes as páginas de assistente para incluir seus próprios campos de entrada ou para influenciar na geração de código.  Você deve usar as classes abstratas na hierarquia NewElementWizardPage para personalizar um assistente ao invés de dividir em classes as classes concretas.

A seguir, o exemplo de uma nova página de assistente de tipo personalizada para criar classes de instrução de teste JUnit. A página inicializa o campo de superclasse com "junit.framework.TestCase" e adiciona uma caixa de opções que controla se os stubs dos métodos setUp() e tearDown() devem ser criados.

public class TestCaseWizardPage extends NewTypeWizardPage {	private Button fCreateStubs;

	public TestCaseWizardPage() {
		super(true, "TestCaseWizardPage");
    }

    /**
	 * O assistente que está gerenciando esta página de assistente deve chamar este método
	 * durante a inicialização com uma seleção correspondente.
     */   
	public void init(IStructuredSelection selection) {
		IJavaElement jelem= getInitialJavaElement(selection);
		initContainerPage(jelem);
		initTypePage(jelem);
        doStatusUpdate();
    }

    private void doStatusUpdate() {
		// definir os componentes para os quais se deseja um status
		IStatus[] status= new IStatus[] {
            fContainerStatus,
			isEnclosingTypeSelected() ? fEnclosingTypeStatus : fPackageStatus,
            fTypeNameStatus,
        };
		updateStatus(status);
    }


    protected void handleFieldChanged(String fieldName) {
        super.handleFieldChanged(fieldName);

        doStatusUpdate();
    }
	
public void createControl(Composite parent) {		initializeDialogUnits(parent);
		Composite composite= new Composite(parent, SWT.NONE);
		int nColumns= 4;
		GridLayout layout= new GridLayout();
		layout.numColumns= nColumns;
		composite.setLayout(layout);

		// Criar os campos de entrada padrão
		createContainerControls(composite, nColumns);
		createPackageControls(composite, nColumns);
		createSeparator(composite, nColumns);
		createTypeNameControls(composite, nColumns);
		createSuperClassControls(composite, nColumns);

		// Criar a caixa de opção que controla se os stubs são desejados
		fCreateStubs= new Button(composite, SWT.CHECK);
		fCreateStubs.setText("Incluir 'setUp()' e 'tearDown()' na nova classe");
		GridData gd= new GridData();
		gd.horizontalSpan= nColumns;
		fCreateStubs.setLayoutData(gd);

		setControl(composite);

		// Inicializar o campo de supertipo e marcá-lo como somente leitura
		setSuperClass("junit.framework.TestCase", false);
    }

	protected void createTypeMembers(IType newType, ImportsManager imports, IProgressMonitor monitor) throws CoreException {
		if (fCreateStubs.getSelection()) {
			String setUpMathod= "public void setUp() {}";
			newType.createMethod(setUpMathod, null, false, null);

			String tearDownMathod= "public void setUp() {}"
			newType.createMethod(tearDownMathod, null, false, null);
        }
   }
}