Страницы мастера Java

Пакет org.eclipse.jdt.ui.wizards предоставляет страницы мастера для создания и настройки элементов Java.  Вы можете использовать несколько готовых страниц.

Настройка параметров компоновки Java

JavaCapabilityConfigurationPage поддерживает редактирование параметров компоновки Java (установку папки исходного кода, связанные проекты и связанные и экспортируемые библиотеки).  

Эту страницу следует использовать (вместо создания производных классов NewJavaProjectWizardPage) в том случае, если мастер должен настраивать проект для вашего модуля одновременно с его настройкой с помощью классификатора Java и других возможностей проекта Java.

Создание новых элементов Java

Иерархия страниц мастера поддерживает создание новых элементов Java.  

NewElementWizardPage - абстрактный класс, который определяет основную операцию мастера.  В иерархии представлены дополнительные абстрактные классы, позволяющие настраивать функции, предоставляемые конкретными мастерами.

Конкретные мастеры создания могут использоваться непосредственно, и создавать для них производные классы в общем случае не требуется. 

Дополнение страницы мастера контейнера путей к классам

Интерфейс IClasspathContainerPage определяет структуру для дополнения страницы мастера, с помощью которой вы можете определить новую или изменить существующую запись контейнера путей к классам.  Если ваш модуль определяет свой собственный тип контейнера путей к классам с помощью точки расширения org.eclipse.jdt.core.classpathContainerInitializer JDT Core, то вы, вероятно, захотите определить соответствующую страницу мастера для изменения и создания контейнеров путей к классам этого типа.

В вашем модуле должно быть описано расширение org.eclipse.jdt.ui.classpathContainerPageДля него необходимо задать имя класса, реализующего интерфейс IClasspathContainerPage.   Если при выборе пути к классам страница создаваемого мастера должна предоставлять дополнительную информацию о контексте этого пути, то для инициализации любого состояния в зависимости от записей, выбранных в текущем пути к классу, можно реализовать интерфейс IClasspathContainerPageExtension .

Настройка страницы мастера

Помимо использования готовых страниц, можно создавать производные классы страниц мастера, позволяющие добавлять свои собственные поля ввода или влиять на генерацию кода.   Вместо того чтобы создавать производные классы конкретных классов, для настройки мастера следует использовать абстрактные классы в иерархии NewElementWizardPage.

Ниже приведен образец страницы мастера нового типа, который настраивается для создания классов тестового набора JUnit. Эта страница инициализирует поле класса super с "junit.framework.TestCase" и добавляет переключатель, который управляет созданием заглушек для методов setUp() и tearDown().

public class TestCaseWizardPage extends NewTypeWizardPage {
    private Button fCreateStubs;

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

    /**
     * Мастер, управляющий этой страницей мастера, должен вызывать этот метод
     * во время инициализации при соответствующем выборе.
     */   
    public void init(IStructuredSelection selection) {
        IJavaElement jelem= getInitialJavaElement(selection);
        initContainerPage(jelem);
        initTypePage(jelem);
        doStatusUpdate();
    }

    private void doStatusUpdate() {
        // определение компонентов, для которых требуется состояние
        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);

        // Создание стандартных полей ввода
        createContainerControls(composite, nColumns);
        createPackageControls(composite, nColumns);
        createSeparator(composite, nColumns);
        createTypeNameControls(composite, nColumns);
        createSuperClassControls(composite, nColumns);

        // Создание переключателя, управляющего созданием заглушек
        fCreateStubs= new Button(composite, SWT.CHECK);
        fCreateStubs.setText("Добавить 'setUp()' и 'tearDown()' в новый класс");
        GridData gd= new GridData();
        gd.horizontalSpan= nColumns;
        fCreateStubs.setLayoutData(gd);

        setControl(composite);

        // Инициализация поля типа super и его маркировка "только для чтения"
        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); 
        }
   }
}