O pacote org.eclipse.jdt.ui.wizards faculta as páginas de assistente para criar e configurar elementos Java. São facultadas várias páginas pré-fabricas para conveniência do utilizador.
A JavaCapabilityConfigurationPage suporta a edição de definições de construção Java (configuração da pasta de fonte, projectos referenciados e bibliotecas referenciadas e exportadas).
Se precisa de um assistente que configure um projecto para o plug-in enquanto também o configura com natureza Java e outras capacidades do projecto Java deve utilizar esta página (em vez da subclasse NewJavaProjectWizardPage).
A hierarquia de páginas de assistente suporta a criação de novos elementos Java.
A NewElementWizardPage é a classe abstracta que define a operação básica do assistente. São fornecidas mais classes abstractas na hierarquia para personalizar funcionalidades facultadas pelos assistentes concretos.
Os assistentes de criação concreta podem ser utilizados directamente e normalmente não se destinam a ser subclasses.
A IClasspathContainerPage da interface define a estrutura para preencher uma página de assistente que permite que um utilizador defina uma nova entrada do contentor de caminhos de classes ou edite uma existente. Se o plug-in tiver definido o seu próprio tipo de contentor de caminhos de classes com o ponto de extensão org.eclipse.jdt.core.classpathContainerInitializer do Núcleo JDT, então provavelmente terá de definir uma página de assistente correspondente para editar e criar contentores de caminhos de classes deste tipo.
A marcação do plug-in deve facultar a extensão org.eclipse.jdt.ui.classpathContainerPage. Na marcação da extensão, forneça o nome da classe que implementa a IClasspathContainerPage. Caso precise de informações adicionais na página do seu assistente sobre o contexto do caminho de classe, sempre que este for seleccionado, pode implementar IClasspathContainerPageExtension. Se a sua página de configuração pretender devolver mais do que uma entrada, quando é adicionada, implemente IClasspathContainerPageExtension2.
Além de utilizar as páginas pré-fabricadas, pode transformar em subclasses as páginas do assistente para adicionar os seus próprios campos de entrada ou para influenciar a criação de códigos. Deve utilizar as classes abstractas na hierarquia da NewElementWizardPage para personalizar um assistente, em vez de transformar as classes concretas em subclasses.
Abaixo é apresentado um exemplo de uma página de assistente de nova tipo que está personalizada para criar classes de tipo de letra de teste JUnit.
A página inicializa o campo de superclasse com
"junit.framework.TestCase" e adiciona uma caixa de verificação que controla se os apêndices de método para os métodos setUp()
e tearDown()
devem ser criados.
public class TestCaseWizardPage extends NewTypeWizardPage { private Button fCreateStubs; public TestCaseWizardPage() { super(true, "TestCaseWizardPage"); } /** * O assistente que gere esta página de assistente tem de chamar este método * durante a inicialização com uma selecçã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 é aconselhável um estado 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 campos de entrada padrão createContainerControls(composite, nColumns); createPackageControls(composite, nColumns); createSeparator(composite, nColumns); createTypeNameControls(composite, nColumns); createSuperClassControls(composite, nColumns); // Criar a caixa de verif que controla se queremos apêndices fCreateStubs= new Button(composite, SWT.CHECK); fCreateStubs.setText("Add 'setUp()' and 'tearDown()' to new class"); GridData gd= new GridData(); gd.horizontalSpan= nColumns; fCreateStubs.setLayoutData(gd); setControl(composite); // Inicializar o campo supertipo e marcá-lo como só de 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 tearDown() {}"; newType.createMethod(tearDownMathod, null, false, null); } } }