<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ECF Configuration Wizards</title>
<style type="text/css">@import url("../../../../org.eclipse.platform.doc.isv/book.css");</style>
<style type="text/css">@import url("../../../../org.eclipse.platform.doc.isv/schema.css");</style>
</HEAD>
<BODY>
<H1 style="text-align:center">ECF Configuration Wizards</H1>
<p></p>
<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.ecf.ui.configurationWizards<p></p>
<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>ECF v0.9.4
<p></p>

<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>This extension point allows providers to register wizards for creating and configuration IContainer
instances.<p></p>
<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
<p></p>
<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.category">category</a> | <a href="#e.wizard">wizard</a>)*&gt;</p>
<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED</p>
<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED</p>
<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<ul class="ConfigMarkupAttlistDesc">
<li><b>point</b> - a fully qualified identifier of the target extension point</li>
<li><b>id</b> - an optional identifier of the extension instance</li>
<li><b>name</b> - an optional name of the extension instance</li>
</ul>
<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.category">category</a> EMPTY&gt;</p>
<p class="code SchemaDtd">&lt;!ATTLIST category</p>
<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED</p>
<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED</p>
<p class="code SchemaDtdAttlist">parentCategory&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<ul class="ConfigMarkupAttlistDesc">
<li><b>id</b> - a unique name that can be used to identify this category</li>
<li><b>name</b> - a translatable name of the category that will be used in the dialog box</li>
<li><b>parentCategory</b> - a path to another category if this category should be added as a child</li>
</ul>
<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.wizard">wizard</a> (<a href="#e.description">description</a>?)&gt;</p>
<p class="code SchemaDtd">&lt;!ATTLIST wizard</p>
<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED</p>
<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED</p>
<p class="code SchemaDtdAttlist">category&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED</p>
<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED</p>
<p class="code SchemaDtdAttlist">icon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED</p>
<p class="code SchemaDtdAttlist">containerFactoryName&nbsp;CDATA #REQUIRED&gt;</p>
<p></p>
<p class="ConfigMarkupElementDesc">
an element that will be used to create export wizard</p>
<br>
<ul class="ConfigMarkupAttlistDesc">
<li><b>id</b> - a unique name that will be used to identify this wizard</li>
<li><b>name</b> - a translatable name that will be used in the dialog box to represent this wizard</li>
<li><b>category</b> - a slash-delimited path ('/') of category IDs. Each token in the
path must represent a valid category ID previously defined
by this or some other plug-in. If omitted, the wizard will be
added to the "Other" category.</li>
<li><b>class</b> - a fully qualified name of the class that implements <tt>org.eclipse.ecf.ui.IConfigurationWizard</tt>
interface</li>
<li><b>icon</b> - a relative name of the icon that will be used 
alongside the wizard name in the export engine listing.</li>
<li><b>containerFactoryName</b> - The ContainerTypeName of the container to be created.  For example, "ecf.generic.client".</li>
</ul>
<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.description">description</a> (#PCDATA)&gt;</p>
<p></p>
<p class="ConfigMarkupElementDesc">
an optional subelement whose body should represent a short description
of the export engine functionality.</p>
<br><br>
<h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>Implementers of this extension point must specify an extension of the <b>org.eclipse.ecf.ui.configurationWizards</b> extension point.

<pre class="Example"><span class="code SchemaTag">
  &lt;extension
        point=</span><span class="code SchemaCstring">&quot;org.eclipse.ecf.ui.configurationWizards&quot;</span><span class="code SchemaTag">&gt;
     &lt;wizard
           class=</span><span class="code SchemaCstring">&quot;org.my.client.MyClientConfigurationWizard&quot;</span><span class="code SchemaTag">
           containerFactoryName=</span><span class="code SchemaCstring">&quot;org.my.client&quot;</span><span class="code SchemaTag">
           id=</span><span class="code SchemaCstring">&quot;my.client.configuration.wizard&quot;</span><span class="code SchemaTag">
           name=</span><span class="code SchemaCstring">&quot;My Client Configuration Wizard&quot;</span><span class="code SchemaTag">
           icon=</span><span class="code SchemaCstring">&quot;icons/configuration.png&quot;</span><span class="code SchemaTag">&gt;
     &lt;/wizard&gt;
  &lt;/extension&gt;
</span></pre>
<p></p>

<h6 class="CaptionFigColumn SchemaHeader">API Information: </h6>The "class" attribute (required) must have a class that implements the <b>org.eclipse.ecf.ui.IConfigurationWizard</b> interface:

<pre class="Example"><span class="code SchemaTag">
/**
 * Required interface for implementing
 * &lt;b&gt;org.eclipse.ecf.ui.configurationWizards&lt;/b&gt; extension point. Extensions
 * for extension point &lt;b&gt;org.eclipse.ecf.ui.configurationWizards&lt;/b&gt; must
 * provide a class implementing this interface.
 */
public interface IConfigurationWizard extends IWizard {

 /**
  * Initialize the wizard with the workbench and the desired container type
  * description
  * 
  * @param workbench
  *            the workbench for the wizard. Will not be null.
  * @param description
  *            the {@link ContainerTypeDescription} to use to
  *            create/configure the new IContainer instance
  */
 public void init(IWorkbench workbench,
   ContainerTypeDescription description);

 /**
  * Get result of configuration.
  * 
  * @return ContainerHolder the result of the configuration.  If null, the container could not be
  * created.
  */
 public ContainerHolder getConfigurationResult();
}

</span></pre>
<p></p>

<br>
<p class="note SchemaCopyright">
Copyright (c) 2004 Composent, Inc. and others.

This program and the accompanying materials are made
available under the terms of the Eclipse Public License 2.0
which is available at https://www.eclipse.org/legal/epl-2.0/

SPDX-License-Identifier: EPL-2.0

</p>
</BODY>
</HTML>
