org.eclipse.ui.newWizards

Se puede añadir un asistente a la opción de menú Archivo->Nuevo del entorno de trabajo utilizando el punto de extensión org.eclipse.ui.newWizards. En el ejemplo de la herramienta readme se utiliza esta definición de punto de extensión para añadir el asistente Archivo readme:

<extension
    point = "org.eclipse.ui.newWizards">
    <category
        id = "org.eclipse.ui.examples.readmetool.new"
        name="Example Creation Wizards">
    </category>
    <wizard
        id = "org.eclipse.ui.examples.readmetool.wizards.new.file"
        name = "Readme File"
        class="org.eclipse.ui.examples.readmetool.ReadmeCreationWizard"
        category="org.eclipse.ui.examples.readmetool.new"
        icon="icons/basic/obj16/newreadme_wiz.gif">
        <descripción>Ejemplo de un asistente que crea el archivo readme de muestra
        </description>
        <selection class="org.eclipse.core.resources.IResource"/>
    </wizard>
</extension>

La categoría describe el lugar en que el asistente se agrupará cuando el diálogo de selección de asistente se utiliza para buscar y lanzar un asistente. La categoría name ("Example Creation Wizards") define la etiqueta que se utiliza en el asistente.  El asistente mismo se asigna a la categoría.   Su nombre, icono y descripción se muestran en el nuevo diálogo de selección de asistente que se muestra a continuación.

Todo esto aparece en la marcación del archivo plugin.xml.  Ninguno de los códigos del conector se ejecuta hasta que el usuario pulsa el botón Siguiente.  Acto seguido, el entorno de trabajo creará una instancia de la clase del asistente especificada en la marcación y le pasará una clase de selección esperada.

La clase identificada en esta extensión (ReadmeCreationWizard) debe implementar la interfaz INewWizard.  La mayoría de los asistentes lo hacen ampliando la clase Wizard de la plataforma, aunque éste es un mecanismo de implementación y el punto de extensión no lo necesita.

La acción del asistente es mínima, pero crea las páginas dentro de él. A continuación, se tratará la implementación de la página en primer lugar, para insistir después en el asistente.

Páginas

El entorno de trabajo proporciona clases de páginas de asistente básicas que soportan el tipo de proceso efectuado para cada punto de extensión de asistente. Puede utilizar estas páginas o ampliarlas para añadir proceso adicional.

El objetivo de ReadmeCreationWizard es crear un archivo nuevo, añadir el contenido necesario al archivo y, como opción, abrir un editor en el archivo. La página necesita definir los controles que permiten al usuario especificar qué contenido se incluye en el archivo y si debe lanzarse un editor.

Se crea la página de asistente, CreateReadmePage1, ampliando WizardNewFileCreationPage. Los controles de una página de asistente se definen de manera similar a como se definen para una vista o un editor. La página implementa el método createControl, creando los widgets de SWT necesarios como hijos delComposite suministrado. Puesto que la superclase ya añade widgets que soportan nuevo proceso de archivo, sólo se necesita ampliar el método createControl en la página de asistente para añadir los recuadros de selección adicionales que controlan la generación de secciones y la apertura del editor.

public void createControl(Composite parent) {
    // heredar contenedor por omisión y definir widgets de especificación
    super.createControl(parent);
    Composite composite = (Composite)getControl();
    ...
    // grupo de generación de secciones de muestra
    Group group = new Group(composite,SWT.NONE);
    group.setLayout(new GridLayout());
    group.setText("Automatic sample section generation");
    group.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL |
        GridData.HORIZONTAL_ALIGN_FILL));
    ...
    // recuadros de selección para generar secciones de muestra
    sectionCheckbox = new Button(group,SWT.CHECK);
    sectionCheckbox.setText("Generate sample section titles");
    sectionCheckbox.setSelection(true);
    sectionCheckbox.addListener(SWT.Selection,this);

    subsectionCheckbox = new Button(group,SWT.CHECK);
    subsectionCheckbox.setText("Generate sample subsection titles");
    subsectionCheckbox.setSelection(true);
    subsectionCheckbox.addListener(SWT.Selection,this);
    ...
    // abrir archivo para recuadro de selección de edición
    openFileCheckbox = new Button(composite,SWT.CHECK);
    openFileCheckbox.setText("Open file for editing when done");
    openFileCheckbox.setSelection(true);
    ...
}

Debe poder seguir este código si comprende los conceptos de Juego de herramientas de widget estándar.

Los patrones básicos para implementar una página incluyen:

La clase ReadmeCreationPage hereda gran parte de este funcionamiento deWizardNewFileCreationPage.  Examinar la implementación de estas clases para obtener más información.

Una vez entendido el funcionamiento de una página, se volverá a tratar el asistente.

Asistente

El asistente se encarga de crear las páginas y proporcionar la lógica de "finalización".

Los patrones básicos para implementar un asistente incluyen:

public void init(IWorkbench workbench,IStructuredSelection selection) {
    this.workbench = workbench;
    this.selection = selection;
    setWindowTitle("New Readme File");
    setDefaultPageImageDescriptor(ReadmeImages.README_WIZARD_BANNER);
}

public void addPages() {
    mainPage = new ReadmeCreationPage(workbench, selection);
    addPage(mainPage);
}

public boolean performFinish() {
    return mainPage.finish();
}

El asistente completado tiene este aspecto: