blob: a4dce0e45f35c49c08c8cbca340370130a104fdd [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2015 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.pde.ui;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.pde.core.plugin.IPluginModelBase;
import org.eclipse.pde.core.plugin.IPluginReference;
/**
* Classes that implement this interface are contributed via the extension point
* <code>org.eclipse.pde.ui.pluginContent</code>. The expectation is that
* classes also extend JFace Wizard class. The role of this wizard is to provide
* additional plug-in content after the project and the critical plug-in project
* files have been created. The wizard is nested in the overall 'New' wizard and
* can contribute one or more pages that allow users to configure how this
* content will be generated. A typical implementation of this interface would
* be a template wizard that populates the plug-in project with content that can
* be useful right away (for example, a view or an editor extension).
* <p>
* Due to the call order of the method <code>performFinish</code> in nested
* wizards, classes that implement this interface should not place the code that
* generates new content in the implementation of the abstract method
* <code>Wizard.performFinish()</code>. Instead, they should simply return
* <code>true</code> and have all the real code in <code>performFinish</code>
* defined in this interface. This version of the method passes all the context
* required for the content generation and is called AFTER the project and vital
* plug-in files have been already created.
*
* @noextend This interface is not intended to be extended by clients.
* @since 3.0
*/
public interface IPluginContentWizard extends IBasePluginWizard {
/**
* Initializes the wizard with the data collected from the parent wizard
* pages. The data can be used to customize the generated content.
*
* @param data
* all the information collected in the parent wizard that can be
* used in configuring the generated content
*/
void init(IFieldData data);
/**
* Returns new dependencies that are required by this wizard. If the wizard
* adds extensions or code to the plug-in that depend on other plug-ins, it
* must report it by returning a reference to that plug-in. This information
* will be used to compose a correct list of plug-in dependencies so that
* the plug-in compiles without errors in the first build after creation.
*
* @param schemaVersion
* version of the plug-in manifest, or <samp>null </samp> if
* older manifest (prior to 3.0) has been created. Depending on
* the manifest version, the list of dependencies may vary.
* @return the array of plug-in dependencies required by this wizard
*/
IPluginReference[] getDependencies(String schemaVersion);
/**
* The wizard is required to return an array of new file and folder names
* that are generated by it for the purpose of inclusion in
* <code>build.properties</code> file. All files and folders that must be
* part of the binary build must be listed in <code>bin.includes</code>
* variable. Since the tokens obtained by this method will be passed to the
* variable as-is, it is legal to use all wild cards also legal in
* <code>build.properties</code>,
* such as "*.png".
*
* @return an array of new file and folder names
*/
String[] getNewFiles();
/**
* Executes the wizard when 'Finish' button has been pressed. Note that you
* should put all your working code in this method and not in
* 'performFinish' of the Wizard class due to the wrong calling order. In
* addition, this method provides progress monitor so that the execution of
* the content wizard can be reported as a part of the overall new project
* creation operation.
*
* @param project
* the newly created plug-in project handle
* @param model
* the model of the plug-in manifest that can be used to add
* extension markup
* @param monitor
* the progress monitor to track progress of the content
* generation
* @return <code>true</code> if the content has been generated
* successfully, <code>false</code> otherwise. In case of failure,
* the wizard dialog will stay open.
*/
boolean performFinish(IProject project, IPluginModelBase model, IProgressMonitor monitor);
}