Search code examples
eclipseeclipse-pde

Getting user data in NewProjectCreationPage in Eclipse Plugin


I have been successful in making a plugin. However now i need that on project creation page i add some more textboxes to get the user information. Also i need to use this information to add into the auto generated .php files made in project directory.

I want to know how can i override the WizardNewProjectCreationPage to add some more textboxes to the already given layout. I am pretty new to plugin development. Here is the code for my custom wizard.

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

    }

}

Ask for any other code required. Any help is appreciated. Thank You.


Solution

  • Instead of using WizardNewProjectCreationPage directly create a new class extending WizardNewProjectCreationPage and override the createControl method to create new controls:

    class MyNewProjectCreationPage extends WizardNewProjectCreationPage
    {
       @Override
       public void createControl(Composite parent)
       {
         super.createControl(parent);
    
         Composite body = (Composite)getControl();
    
         ... create new controls here   
       }
    }