001: /*******************************************************************************
002: * Copyright (c) 2000, 2006 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.pde.ui;
011:
012: import org.eclipse.core.resources.IProject;
013: import org.eclipse.core.runtime.IProgressMonitor;
014: import org.eclipse.pde.core.plugin.IPluginModelBase;
015: import org.eclipse.pde.core.plugin.IPluginReference;
016:
017: /**
018: * Classes that implement this interface are contributed via the extension point
019: * <code>org.eclipse.pde.ui.pluginContent</code>. The expectation is that
020: * classes also extend JFace Wizard class. The role of this wizard is to provide
021: * additional plug-in content after the project and the critical plug-in project
022: * files have been created. The wizard is nested in the overall 'New' wizard and
023: * can contribute one or more pages that allow users to configure how this
024: * content will be generated. A typical implementation of this interface would
025: * be a template wizard that populates the plug-in project with content that can
026: * be useful right away (for example, a view or an editor extension).
027: * <p>
028: * Due to the call order of the method <code>performFinish</code> in nested
029: * wizards, classes that implement this interface should not place the code that
030: * generates new content in the implementation of the abstract method
031: * <code>Wizard.performFinish()</code>. Instead, they should simply return
032: * <code>true</code> and have all the real code in <code>performFinish</code>
033: * defined in this interface. This version of the method passes all the context
034: * required for the content generation and is called AFTER the project and vital
035: * plug-in files have been already created.
036: *
037: * @since 3.0
038: */
039: public interface IPluginContentWizard extends IBasePluginWizard {
040: /**
041: * Initializes the wizard with the data collected from the parent wizard
042: * pages. The data can be used to customize the generated content.
043: *
044: * @param data
045: * all the information collected in the parent wizard that can be
046: * used in configuring the generated content
047: */
048: void init(IFieldData data);
049:
050: /**
051: * Returns new dependencies that are required by this wizard. If the wizard
052: * adds extensions or code to the plug-in that depend on other plug-ins, it
053: * must report it by returning a reference to that plug-in. This information
054: * will be used to compose a correct list of plug-in dependencies so that
055: * the plug-in compiles without errors in the first build after creation.
056: *
057: * @param schemaVersion
058: * version of the plug-in manifest, or <samp>null </samp> if
059: * older manifest (prior to 3.0) has been created. Depending on
060: * the manifest version, the list of dependencies may vary.
061: * @return the array of plug-in dependencies required by this wizard
062: */
063: IPluginReference[] getDependencies(String schemaVersion);
064:
065: /**
066: * The wizard is required to return an array of new file and folder names
067: * that are generated by it for the purpose of inclusion in
068: * <code>build.properties</code> file. All files and folders that must be
069: * part of the binary build must be listed in <code>bin.includes</code>
070: * variable. Since the tokens obtained by this method will be passed to the
071: * variable as-is, it is legal to use all wild cards also legal in
072: * <code>build.properties,
073: * such as "*.gif".
074: *
075: * @return an array of new file and folder names
076: */
077: String[] getNewFiles();
078:
079: /**
080: * Executes the wizard when 'Finish' button has been pressed. Note that you
081: * should put all your working code in this method and not in
082: * 'performFinish' of the Wizard class due to the wrong calling order. In
083: * addition, this method provides progress monitor so that the execution of
084: * the content wizard can be reported as a part of the overall new project
085: * creation operation.
086: *
087: * @param project
088: * the newly created plug-in project handle
089: * @param model
090: * the model of the plug-in manifest that can be used to add
091: * extension markup
092: * @param monitor
093: * the progress monitor to track progress of the content
094: * generation
095: * @return <code>true</code> if the content has been generated
096: * successfully, <code>false</code> otherwise. In case of failure,
097: * the wizard dialog will stay open.
098: */
099: boolean performFinish(IProject project, IPluginModelBase model,
100: IProgressMonitor monitor);
101:
102: }
|