Páginas de asistente Java

El paquete org.eclipse.jdt.ui.wizards proporciona páginas de asistente que permiten crear y configurar elementos Java. Se proporcionan varias páginas prefabricadas que podrá utilizar. 

Configurar valores de construcción Java

La clase JavaCapabilityConfigurationPage da soporte a la edición de valores de construcción Java (configuración de carpetas fuente, proyectos referenciados y bibliotecas referenciadas y exportadas).   

Si necesita proporcionar un asistente que configure un proyecto para su conector mientras lo configura asimismo con la naturaleza Java y otras prestaciones de los proyectos Java, debe utilizar esta página (en vez de obtener una subclase de NewJavaProjectWizardPage).

Crear elementos Java nuevos

Una jerarquía de páginas de asistente dan soporte a la creación de elementos Java nuevos.   

NewElementWizardPage es la clase abstracta que define el funcionamiento básico del asistente. En la jerarquía se proporcionan clases abstractas adicionales para hacer personalizaciones en la funcionalidad proporcionada por los asistentes concretos. 

Los asistentes de creación concretos se pueden utilizar directamente y, en general, no están pensados para la obtención de subclases a partir de ellos.  

Contribuir con una página de asistente de contenedores de vía de acceso de clases

La interfaz IClasspathContainerPage define una estructura para contribuir con una página de asistente que permita a los usuarios definir una entrada nueva de contenedor de vía de acceso de clases o editar una entrada existente. Si su conector tiene definido su propio tipo de contenedor de vía de acceso de clases mediante el punto de extensión org.eclipse.jdt.core.classpathContainerInitializer del núcleo de JDT, es probable que le interese definir la correspondiente página de asistente para editar y crear contenedores de vía de acceso de clases de este tipo. 

El código del conector debe proporcionar una extensión org.eclipse.jdt.ui.classpathContainerPage. En el código de la extensión, proporcionará el nombre de la clase que implementa la interfaz IClasspathContainerPage. Si desea facilitar en su página de asistente información adicional sobre el contexto de una vía de acceso de clases cuando se seleccione, puede implementar la interfaz IClasspathContainerPageExtension para inicializar cualquier estado que dependa de las entradas seleccionadas en la vía de acceso de clases actual. 

Personalizar una página de asistente

Además de utilizar páginas prefabricadas, puede obtener subclases de las páginas de asistente para añadir en ellas sus propios campos de entrada o para influenciar la generación de código. Debe utilizar las clases abstractas de la jerarquía de NewElementWizardPage para personalizar un asistente, en lugar de obtener subclases de las clases concretas.

A continuación figura un ejemplo de una página de asistente de tipo nuevo personalizada para crear clases de casos de prueba JUnit. La página inicializa el campo de superclase con "junit.framework.TestCase" y añade un recuadro de selección que controla si deben crearse apéndices para los métodos setUp() y tearDown().

public class TestCaseWizardPage extends NewTypeWizardPage {
    private Button fCreateStubs;

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

    /**
   	 * El asistente que gestiona esta página de asistente debe llamar a este método
   	 * durante la inicialización con una selección correspondiente.
     */   
    public void init(IStructuredSelection selection) {
        IJavaElement jelem= getInitialJavaElement(selection);
        initContainerPage(jelem);
        initTypePage(jelem);
        doStatusUpdate();
    }

    private void doStatusUpdate() {
		// definir los componentes para los que se desea un 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);

		// Crear los campos de entrada estándar
        createContainerControls(composite, nColumns);
        createPackageControls(composite, nColumns);
        createSeparator(composite, nColumns);
        createTypeNameControls(composite, nColumns);
        createSuperClassControls(composite, nColumns);

		// Crear el recuadro de selección que controla si se desean apéndices
        fCreateStubs= new Button(composite, SWT.CHECK);
      		fCreateStubs.setText("Añadir 'setUp()' y 'tearDown()' a clase nueva");
        GridData gd= new GridData();
        gd.horizontalSpan= nColumns;
        fCreateStubs.setLayoutData(gd);

        setControl(composite);

		// Inicializar el campo de tipo super y marcarlo como solo de lectura
        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);
        }
   }
}

Copyright IBM Corporation y otras empresas 2000, 2003. Reservados todos los derechos.