在 Eclipse Plugin 的 NewProjectCreationPage 中获取用户数据

Getting user data in NewProjectCreationPage in Eclipse Plugin

我已经成功制作了一个插件。但是现在我需要在项目创建页面上添加更多文本框来获取用户信息。我还需要使用此信息添加到项目目录中自动生成的 .php 文件中。

我想知道如何覆盖 WizardNewProjectCreationPage 以向已给定的布局添加更多文本框。我对插件开发很陌生。这是我的自定义向导的代码。

import java.net.URI;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExecutableExtension;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard;

import rudraxplugin.pages.MyPageOne;

import rudraxplugin.projects.RudraxSupport;

public class CustomProjectNewWizard extends Wizard implements INewWizard, IExecutableExtension {
    private WizardNewProjectCreationPage _pageOne;
     protected MyPageOne one;
    private IConfigurationElement _configurationElement;
    public CustomProjectNewWizard() {
        // TODO Auto-generated constructor stub
        setWindowTitle("RudraX");
    }

    @Override
    public void init(IWorkbench workbench, IStructuredSelection selection) {
        // TODO Auto-generated method stub

    }
    @Override
    public void addPages() {
        super.addPages();

        _pageOne = new WizardNewProjectCreationPage("From Scratch Project Wizard");
        _pageOne.setTitle("From Scratch Project");
        _pageOne.setDescription("Create something from scratch.");
        addPage(one);

        addPage(_pageOne);
    }
    @Override
    public boolean performFinish() {
         String name = _pageOne.getProjectName();
            URI location = null;
            if (!_pageOne.useDefaults()) {
                location = _pageOne.getLocationURI();
                System.err.println("location: " + location.toString()); //$NON-NLS-1$
            } // else location == null
            RudraxSupport.createProject(name, location);
            // Add this
            BasicNewProjectResourceWizard.updatePerspective(_configurationElement);

            return true;
    }

    @Override
    public void setInitializationData(IConfigurationElement config,
            String propertyName, Object data) throws CoreException {
        _configurationElement = config;
        // TODO Auto-generated method stub

    }

}

询问是否需要任何其他代码。任何帮助表示赞赏。谢谢你。

而不是使用 WizardNewProjectCreationPage 直接创建一个新的 class 扩展 WizardNewProjectCreationPage 并覆盖 createControl 方法来创建新控件:

class MyNewProjectCreationPage extends WizardNewProjectCreationPage
{
   @Override
   public void createControl(Composite parent)
   {
     super.createControl(parent);

     Composite body = (Composite)getControl();

     ... create new controls here   
   }
}