org.eclipse.jdt.ui.wizards 패키지는 Java 요소를 작성 및 구성하기 위한 마법사 페이지를 제공합니다. 사용자에게 사전에 작성된 몇 개의 페이지가 제공됩니다.
JavaCapabilityConfigurationPage는 소스 폴더 설정, 참조할 프로젝트, 참조되고 내보내진 라이브러리의 편집과 같은 Java 빌드 설정을 지원합니다.
Java 속성 및 기타 Java 프로젝트 기능을 사용하여 프로젝트를 구성하는 중에도 플러그인에 맞게 프로젝트를 구성하는 마법사를 제공해야 할 경우 NewJavaProjectWizardPage를 서브클래스로 분류하는 대신 이 페이지를 사용해야 합니다.
마법사 계층 구조 페이지는 새 Java 요소 작성을 지원합니다.
NewElementWizardPage는 마법사의 기본 운영을 정의하는 abstract 클래스입니다. concrete 마법사에서 제공되는 기능을 사용자 정의하도록 추가 abstract 클래스가 계층으로 제공됩니다.
concrete 작성 마법사는 직접 사용할 수 있으며 일반적으로 서브클래스로 분류되지 않습니다.
IClasspathContainerPage 인터페이스는 사용자가 새 클래스 경로 컨테이너 항목을 정의하거나 기존 항목을 편집할 수 있는 마법사 페이지를 제공하는 구조를 정의합니다. 플러그인에서 JDT 코어 org.eclipse.jdt.core.classpathContainerInitializer 확장점을 사용하여 클래스 경로 컨테이너의 고유 유형을 정의한 경우, 이 유형의 클래스 경로 컨테이너를 편집 및 작성하는 데 적합한 마법사 페이지를 정의하고자 할 수 있습니다.
플러그인의 마크업은 확장 org.eclipse.jdt.ui.classpathContainerPage를 제공해야 합니다. 확장 마크업에서는 IClasspathContainerPage를 구현하는 클래스의 이름을 제공합니다. 선택 시 클래스 경로의 컨텍스트에 대한 마법사 페이지에서 추가 정보를 제공하려면 IClasspathContainerPageExtension을 구현하여 현재 클래스 경로에서 선택된 항목에 따라 상태를 초기화할 수 있습니다.
미리 작성된 페이지를 사용하는 방법 외에도 마법사 페이지를 서브클래스로 분류하여 고유한 입력 필드를 추가하거나 코드 생성에 영향을 줄 수 있습니다. NewElementWizardPage 계층에서 abstract 클래스를 사용하여 concrete 클래스를 서브클래스로 지정하기 보다는 마법사를 사용자 정의해야 합니다.
다음은 JUnit 테스트
케이스 클래스를 작성하도록 사용자 정의된 새로운 유형의 마법사 페이지 샘플입니다.
페이지는 "junit.framework.TestCase"로 수퍼클래스 필드를 초기화하고
setUp()
및 tearDown()
메소드에 대한 메소드 스텁을 작성할 지의 여부를
제어하는 선택란을 추가합니다.
public class TestCaseWizardPage extends NewTypeWizardPage { private Button fCreateStubs; public TestCaseWizardPage() { super(true, "TestCaseWizardPage"); } /** * The wizard managing this wizard page must call this method * during initialization with a corresponding selection. */ public void init(IStructuredSelection selection) { IJavaElement jelem= getInitialJavaElement(selection); initContainerPage(jelem); initTypePage(jelem); doStatusUpdate(); } private void doStatusUpdate() { // define the components for which a status is desired 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); // Create the standard input fields createContainerControls(composite, nColumns); createPackageControls(composite, nColumns); createSeparator(composite, nColumns); createTypeNameControls(composite, nColumns); createSuperClassControls(composite, nColumns); // Create the checkbox controlling whether we want stubs 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); // Initialize the super type field and mark it as read-only 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); } } }