Stránky průvodců Java

Balíček org.eclipse.jdt.ui.wizards poskytuje stránky průvodců určené k vytváření a konfiguraci prvků Java.  Je zde několik stránek již připravených k použití.

Konfigurace nastavení pro sestavení Java

JavaCapabilityConfigurationPage umožňuje provádět změny nastavení pro sestavení Java (nastavení zdrojové složky, odkazovaných projektů a odkazovaných a exportovaných knihoven).  

Potřebujete-li průvodce, který nastaví projekt pro váš modul plug-in a dále jej nastaví pro různé funkce projektu Java včetně Java nature, použijte tuto stránku (místo vytvoření podtřídy NewJavaProjectWizardPage).

Vytváření nových prvků Java

Hierarchie stránek průvodců podporuje vytváření nových prvků Java.  

NewElementWizardPage je abstraktní třída, která definuje základní činnosti průvodce.  Hierarchie obsahuje další abstraktní třídy pro účely přizpůsobení funkcí konkrétních průvodců.

Konkrétní průvodce vytvořením lze používat přímo, nejsou určeny pro vytváření podtříd. 

Stránka průvodce přispívání do pořadače cest ke třídě

Rozhraní IClasspathContainerPage definuje strukturu pro vkládání stránky průvodce, která uživateli umožňuje definovat novou nebo editovat stávající položku pořadače cest ke třídě.  Pokud váš modul plug-in definoval vlastní typ pořadače cest ke třídě s použitím bodu rozšíření JDT Core org.eclipse.jdt.core.classpathContainerInitializer, pravděpodobně budete chtít definovat příslušnou stránku průvodce pro editaci a vytváření pořadače cest ke třídě tohoto typu.

Markup vašeho modulu plug-in by měl poskytnout rozšíření org.eclipse.jdt.ui.classpathContainerPageV markupu rozšíření zadáváte název své třídy, jež implementuje IClasspathContainerPage.  Chcete-li ve své stránce průvodce poskytnout přídavnou informaci po volbě kontextu cesty ke třídě, můžete implementovat IClasspathContainerPageExtension za účelem inicializace stavů závislých na položkách zvolených v aktuální cestě ke třídě.

Přizpůsobení stránky průvodce

Kromě použití připravených stránek můžete za účelem přidávání vlastních vstupních polí nebo ovlivnění generování kódu vytvářet podtřídy stránek průvodců.  K přizpůsobení průvodce byste místo vytváření podtříd konkrétních tříd měli použít abstraktní třídy v hierarchii NewElementWizardPage.

Následuje ukázka stránky průvodce vytvořením nového typu, který je přizpůsoben k vytváření tříd testovacích případů JUnit. Stránka inicializuje pole supertřídy hodnotou "junit.framework.TestCase" a přidá zaškrtávací pole, které určuje, zda mají být vytvořeny stuby metod setUp() a tearDown().

public class TestCaseWizardPage extends NewTypeWizardPage {
    private Button fCreateStubs;

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

    /**
     * Průvodce spravující tuto stránku průvodce musí volat tuto metodu
     * během inicializace s použitím příslušné volby.
     */   
    public void init(IStructuredSelection selection) {
        IJavaElement jelem= getInitialJavaElement(selection);
        initContainerPage(jelem);
        initTypePage(jelem);
        doStatusUpdate();
    }

    private void doStatusUpdate() {
        // definovat komponenty, jež jsou povinné
        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);

        // Vytvořit standardní zadávací pole
        createContainerControls(composite, nColumns);
        createPackageControls(composite, nColumns);
        createSeparator(composite, nColumns);
        createTypeNameControls(composite, nColumns);
        createSuperClassControls(composite, nColumns);

        // Vytvořit zaškrtávací pole, jež určuje, zda chceme vytvořit stub metody
        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);

        // Inicializovat pole typu super a určit je pouze pro čtení
        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); 
        }
   }
}