Skip to content
Snippets Groups Projects
Commit 554d4913 authored by lmandel's avatar lmandel
Browse files

[115886] Updated WST ISV plugin.

parent c93523f1
No related branches found
No related tags found
No related merge requests found
Showing
with 1931 additions and 0 deletions
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>navigatorContent</title>
<link rel="stylesheet" type="text/css" href="schema.css">
</HEAD>
<BODY>
<H1><CENTER>navigatorContent</CENTER></H1>
<p></p>
<h6 class=CaptionFigColumn id=header>Identifier: </h6>org.eclipse.wst.common.navigator.views.navigatorContent<p></p>
<h6 class=CaptionFigColumn id=header>Since: </h6>[Enter the first release in which this extension point appears.]
<p></p>
<p>
<h6 class=CaptionFigColumn id=header>Description: </h6>[Enter description of this extension point.]<p>
An action's enablement and/or visibility can be defined using the elements <samp>enablement</samp> and <samp>visibility</samp> respectively. These two elements contain a boolean expression that is evaluated to determine the enablement and/or visibility.
<p>
The syntax is the same for the <samp>enablement</samp> and <samp>visibility</samp> elements. Both contain only one boolean expression sub-element. In the simplest case, this will be an <samp>objectClass</samp>, <samp>objectState</samp>, <samp>pluginState</samp>, or <samp>systemProperty</samp> element. In the more complex case, the <samp>and</samp>, <samp>or</samp>, and <samp>not</samp> elements can be combined to form a boolean expression. Both the <samp>and</samp>, and <samp>or</samp> elements must contain 2 sub-elements. The <samp>not</samp> element must contain only 1 sub-element.
</p><p>
An action's enablement and/or visibility can be defined using the elements <samp>enablement</samp> and <samp>visibility</samp> respectively. These two elements contain a boolean expression that is evaluated to determine the enablement and/or visibility.
<p>
The syntax is the same for the <samp>enablement</samp> and <samp>visibility</samp> elements. Both contain only one boolean expression sub-element. In the simplest case, this will be an <samp>objectClass</samp>, <samp>objectState</samp>, <samp>pluginState</samp>, or <samp>systemProperty</samp> element. In the more complex case, the <samp>and</samp>, <samp>or</samp>, and <samp>not</samp> elements can be combined to form a boolean expression. Both the <samp>and</samp>, and <samp>or</samp> elements must contain 2 sub-elements. The <samp>not</samp> element must contain only 1 sub-element.
</p></p>
<p><h6 class=CaptionFigColumn id=header>Configuration Markup:</h6></p>
<p class=code id=dtd>&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.navigatorContent">navigatorContent</a>)&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST extension</p>
<p class=code id=dtdAttlist>point&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<ul class=ConfigMarkup id=attlistDesc>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.navigatorContent">navigatorContent</a> (<a href="#e.enables">enables</a> , <a href="#e.emfEnablement">emfEnablement</a>)&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST navigatorContent</p>
<p class=code id=dtdAttlist>contentProvider&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>labelProvider&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>actionProvider&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>openListener&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>priority&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(lowest|lower|low|normal|high|higher|highest) <p class=code id=dtdAttlist>name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>enabledByDefault&nbsp;(true | false) <p class=code id=dtdAttlist>icon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>sorter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
The root element of the extension schema. Defines information used by the Common Navigator to find available extensions.</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>contentProvider</b> - Supplies the name of a class which implements org.eclipse.jface.viewers.ITreeContentProvider or org.eclipse.wst.common.navigator.views.INavigatorContentProvider.</li>
<li><b>labelProvider</b> - Supplies the name of a class which implements org.eclipse.jface.viewers.ILabelProvider or org.eclipse.wst.common.navigator.views.ICommonLabelProvider.</li>
<li><b>actionProvider</b> - Supplies the name of a class that implements org.eclipse.wst.common.navigator.views.ICommonActionProvider.</li>
<li><b>id</b> - A unique ID to identify this extension. Used for extension activation and by other extensions that would like to extend the defined extension (e.g. add another ICommonActionProvider)</li>
<li><b>openListener</b> - Supplies the name of a class that implements org.eclipse.jface.views.OpenListener or org.eclipse.wst.common.navigator.views.ICommonOpenListener.</li>
<li><b>priority</b> - Indicates the relative priority of this extension to other extensions. Used by the Common Navigator to handle sorting and organization of the contributed content from this extension in relation to content from other extensions. Defaults to "normal"</li>
<li><b>name</b> - Specify a display name for the Content Extension</li>
<li><b>enabledByDefault</b> - Indicates whether the current extension will be enabled by default. True will enable the extension, False will disable the extension. Users can later choose to override this value.</li>
<li><b>icon</b> - A plugin-relative path to an icon for use when displaying the metadata about the content extension to the user.</li>
<li><b>sorter</b> - Indicates the name of class which implements java.util.Comparator that knows how to sort the items supported by this extension. If the extension enables on types that it does not provide, but understands, it may be called upon to sort items that it did not contribute.</li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.enables">enables</a> (<a href="#e.and">and</a> | <a href="#e.or">or</a> | <a href="#e.not">not</a> | <a href="#e.objectClass">objectClass</a> | <a href="#e.objectState">objectState</a> | <a href="#e.pluginState">pluginState</a> | <a href="#e.systemProperty">systemProperty</a>)&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
This element is used to define the enablement for the extension.
Objects which are accepted by the expression will cause the extension to be invoked.</p>
<br><br>
<p class=code id=dtd>&lt;!ELEMENT <a name="e.enablement">enablement</a> (<a href="#e.and">and</a> | <a href="#e.or">or</a> | <a href="#e.not">not</a> | <a href="#e.objectClass">objectClass</a> | <a href="#e.objectState">objectState</a> | <a href="#e.pluginState">pluginState</a> | <a href="#e.systemProperty">systemProperty</a>)&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
This element is used to define the enablement for the extension.</p>
<br><br>
<p class=code id=dtd>&lt;!ELEMENT <a name="e.visibility">visibility</a> (<a href="#e.and">and</a> | <a href="#e.or">or</a> | <a href="#e.not">not</a> | <a href="#e.objectClass">objectClass</a> | <a href="#e.objectState">objectState</a> | <a href="#e.pluginState">pluginState</a> | <a href="#e.systemProperty">systemProperty</a>)&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
This element is used to define the visibility for the extension.</p>
<br><br>
<p class=code id=dtd>&lt;!ELEMENT <a name="e.and">and</a> (<a href="#e.and">and</a> | <a href="#e.or">or</a> | <a href="#e.not">not</a> | <a href="#e.objectClass">objectClass</a> | <a href="#e.objectState">objectState</a> | <a href="#e.pluginState">pluginState</a> | <a href="#e.systemProperty">systemProperty</a>)&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
This element represent a boolean AND operation on the result of evaluating it's two sub-element expressions.</p>
<br><br>
<p class=code id=dtd>&lt;!ELEMENT <a name="e.or">or</a> (<a href="#e.and">and</a> | <a href="#e.or">or</a> | <a href="#e.not">not</a> | <a href="#e.objectClass">objectClass</a> | <a href="#e.objectState">objectState</a> | <a href="#e.pluginState">pluginState</a> | <a href="#e.systemProperty">systemProperty</a>)&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
This element represent a boolean OR operation on the result of evaluating it's two sub-element expressions.</p>
<br><br>
<p class=code id=dtd>&lt;!ELEMENT <a name="e.not">not</a> (<a href="#e.and">and</a> | <a href="#e.or">or</a> | <a href="#e.not">not</a> | <a href="#e.objectClass">objectClass</a> | <a href="#e.objectState">objectState</a> | <a href="#e.pluginState">pluginState</a> | <a href="#e.systemProperty">systemProperty</a>)&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
This element represent a boolean NOT operation on the result of evaluating it's sub-element expressions.</p>
<br><br>
<p class=code id=dtd>&lt;!ELEMENT <a name="e.objectClass">objectClass</a> EMPTY&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST objectClass</p>
<p class=code id=dtdAttlist>name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>adaptable&nbsp;(true | false) &gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
This element is used to evaluate the class or interface of each object in the current selection. If each object in the selection implements the specified class or interface, the expression is evaluated as true.</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>name</b> - a fully qualified name of a class or interface. The expression is evaluated as true only if all objects within the selection implement this class or interface.</li>
<li><b>adaptable</b> - </li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.objectState">objectState</a> EMPTY&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST objectState</p>
<p class=code id=dtdAttlist>name&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>value&nbsp;CDATA #REQUIRED&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
This element is used to evaluate the attribute state of each object in the current selection. If each object in the selection has the specified attribute state, the expression is evaluated as true. To evaluate this type of expression, each object in the selection must implement, or adapt to, <samp>org.eclipse.ui.IActionFilter</samp> interface.</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>name</b> - the name of an object's attribute. Acceptable names reflect the object type, and should be publicly declared by the plug-in where the object type is declared.</li>
<li><b>value</b> - the required value of the object's attribute. The acceptable values for the object's attribute should be publicly declared.</li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.pluginState">pluginState</a> EMPTY&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST pluginState</p>
<p class=code id=dtdAttlist>id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>value&nbsp;(installed|activated) "installed"&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
This element is used to evaluate the state of a plug-in. The state of the plug-in may be one of the following: <samp>installed</samp> or <samp>activated</samp>.</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>id</b> - the identifier of a plug-in which may or may not exist in the plug-in registry.</li>
<li><b>value</b> - the required state of the plug-in. The state of the plug-in may be one of the following: <samp>installed</samp> or <samp>activated</samp>.</li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.systemProperty">systemProperty</a> EMPTY&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST systemProperty</p>
<p class=code id=dtdAttlist>name&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>value&nbsp;CDATA #REQUIRED&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
This element is used to evaluate the state of some system property. The property value is retrieved from the <samp>java.lang.System</samp>.</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>name</b> - the name of the system property.</li>
<li><b>value</b> - the required value of the system property.</li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.emfEnablement">emfEnablement</a> (<a href="#e.package">package</a>+)&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
This element is used to define the enablement for the extension.</p>
<br><br>
<p class=code id=dtd>&lt;!ELEMENT <a name="e.package">package</a> EMPTY&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST package</p>
<p class=code id=dtdAttlist>uri&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>uri</b> - </li>
</ul>
<br><h6 class=CaptionFigColumn id=header>Examples: </h6>[Enter extension point usage example here.]
<p></p>
<h6 class=CaptionFigColumn id=header>API Information: </h6>[Enter API information here.]
<p></p>
<h6 class=CaptionFigColumn id=header>Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
<p></p>
<br>
<p class=note id=copyright>
</p>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>navigatorViewer</title>
<link rel="stylesheet" type="text/css" href="schema.css">
</HEAD>
<BODY>
<H1><CENTER>navigatorViewer</CENTER></H1>
<p></p>
<h6 class=CaptionFigColumn id=header>Identifier: </h6>org.eclipse.wst.common.navigator.views.navigatorViewer<p></p>
<h6 class=CaptionFigColumn id=header>Since: </h6>[Enter the first release in which this extension point appears.]
<p></p>
<p>
<h6 class=CaptionFigColumn id=header>Description: </h6>[Enter description of this extension point.]</p>
<p><h6 class=CaptionFigColumn id=header>Configuration Markup:</h6></p>
<p class=code id=dtd>&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.navigatorViewer">navigatorViewer</a>)&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST extension</p>
<p class=code id=dtdAttlist>point&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<ul class=ConfigMarkup id=attlistDesc>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.navigatorViewer">navigatorViewer</a> EMPTY&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST navigatorViewer</p>
<p class=code id=dtdAttlist>rootContentExtensionId&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>viewerId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>popupMenuId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
Used to associate one or more extensions with a particular viewer id. This extension is not required for those who just want a basic Common Navigator instance, but can be useful for clients who are creating a logical viewer.</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>rootContentExtensionId</b> - Specify the ID of a Content Extension that will be used to provide content for the viewer instance. This ID must correspond to the ID of a navigatorContent extension point.</li>
<li><b>viewerId</b> - An ID that corresponds to an org.eclipse.ui.views extension point that defines an instance or subclass of org.eclipse.wst.common.navigator.CommonNavigator.</li>
<li><b>popupMenuId</b> - A custom popupMenuId to use for extensions that wish to contribute to the view ID. The default value is specified by NavigatorViewerDescriptor.DEFAULT_POPUPMENU_ID</li>
</ul>
<br><h6 class=CaptionFigColumn id=header>Examples: </h6>[Enter extension point usage example here.]
<p></p>
<h6 class=CaptionFigColumn id=header>API Information: </h6>[Enter API information here.]
<p></p>
<h6 class=CaptionFigColumn id=header>Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
<p></p>
<br>
<p class=note id=copyright>
</p>
</BODY>
</HTML>
H6.CaptionFigColumn#header {
font-size:16px;
display:inline
}
P.Note#copyright {
font-size: smaller;
font-style: normal;
color: #336699;
display:inline;
margin-top: 3.000000pt;
margin-bottom: 11.000000pt;
margin-right: 0.000000pt;
margin-left: 0.000000pt;
}
P.Code#dtd {
color: #800000;
margin-top: 0.000000pt;
margin-bottom: 0.000000pt;
margin-right: 0.000000pt;
margin-left: 10.000000pt;
}
P.Code#dtdAttlist {
color: #800000;
margin-top: 0.000000pt;
margin-bottom: 0.000000pt;
margin-right: 0.000000pt;
margin-left: 20.000000pt;
}
P.Code#tag {
color: #000080;
display:inline;
margin-top: 0.000000pt;
margin-bottom: 0.000000pt;
margin-right: 0.000000pt;
margin-left: 0.000000pt;
}
P.Code#cstring {
color: #008000;
display:inline;
margin-top: 0.000000pt;
margin-bottom: 0.000000pt;
margin-right: 0.000000pt;
margin-left: 0.000000pt;
}
.ConfigMarkup#elementDesc {
color: black;
margin-top: 0.000000pt;
margin-bottom: 0.000000pt;
margin-right: 0.000000pt;
margin-left: 10.000000pt;
}
.ConfigMarkup#attlistDesc {
color: black;
margin-top: 0.000000pt;
margin-bottom: 0.000000pt;
margin-right: 0.000000pt;
margin-left: 32.000000pt;
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Unbenanntes Dokument</title>
</head>
<body>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>validationSelectionHandler</title>
<link rel="stylesheet" type="text/css" href="schema.css">
</HEAD>
<BODY>
<H1><CENTER>validationSelectionHandler</CENTER></H1>
<p></p>
<h6 class=CaptionFigColumn id=header>Identifier: </h6>org.eclipse.wst.common.frameworks.validationSelectionHandler<p></p>
<h6 class=CaptionFigColumn id=header>Since: </h6>[Enter the first release in which this extension point appears.]
<p></p>
<p>
<h6 class=CaptionFigColumn id=header>Description: </h6>[Enter description of this extension point.]</p>
<p><h6 class=CaptionFigColumn id=header>Configuration Markup:</h6></p>
<p class=code id=dtd>&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.validationSelectionHandler">validationSelectionHandler</a>+)&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST extension</p>
<p class=code id=dtdAttlist>point&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<ul class=ConfigMarkup id=attlistDesc>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.validationSelectionHandler">validationSelectionHandler</a> EMPTY&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST validationSelectionHandler</p>
<p class=code id=dtdAttlist>id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>handlerClass&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>selectionType&nbsp;CDATA #REQUIRED&gt;</p>
<p></p>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>id</b> - </li>
<li><b>handlerClass</b> - </li>
<li><b>selectionType</b> - </li>
</ul>
<br><h6 class=CaptionFigColumn id=header>Examples: </h6>[Enter extension point usage example here.]
<p></p>
<h6 class=CaptionFigColumn id=header>API Information: </h6>[Enter API information here.]
<p></p>
<h6 class=CaptionFigColumn id=header>Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
<p></p>
<br>
<p class=note id=copyright>
</p>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Edit Model Editor</title>
<link rel="stylesheet" type="text/css" href="schema.css">
</HEAD>
<BODY>
<H1><CENTER>Edit Model Editor</CENTER></H1>
<p></p>
<h6 class=CaptionFigColumn id=header>Identifier: </h6>com.ibm.etools.emf.workbench.ui.editModelEditor<p></p>
<h6 class=CaptionFigColumn id=header>Since: </h6>6.0
<p></p>
<p>
<h6 class=CaptionFigColumn id=header>Description: </h6>Edit model editors represent the multi page editors that can be used to edit a collection of EMF resources. By declaring an edit model editor, the plugin provider allows the framework to generically obtain the edit model used by the editor.</p>
<p><h6 class=CaptionFigColumn id=header>Configuration Markup:</h6></p>
<p class=code id=dtd>&lt;!ELEMENT <a name="e.extension">extension</a> ((<a href="#e.wizardPageGroup">wizardPageGroup</a>))&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST extension</p>
<p class=code id=dtdAttlist>point&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<ul class=ConfigMarkup id=attlistDesc>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.wizardPageGroup">wizardPageGroup</a> ((<a href="#e.factory">factory</a>))&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST wizardPageGroup</p>
<p class=code id=dtdAttlist>wizardID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>allowsExtendedPagesAfter&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>pageGroupInsertionID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>pageGroupID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>wizardID</b> - This must match the id defined in the extendableWizard element in the extendableWizard extension point</li>
<li><b>allowsExtendedPagesAfter</b> - </li>
<li><b>pageGroupInsertionID</b> - If this page is to immediately after another page, this must match the pageID of the page to insert after.</li>
<li><b>pageGroupID</b> - </li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.factory">factory</a> EMPTY&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST factory</p>
<p class=code id=dtdAttlist>className&nbsp;CDATA #REQUIRED&gt;</p>
<p></p>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>className</b> - This class is an instancof com.ibm.wtp.common.ui.wizard.extensions.WizardExtensionFactory</li>
</ul>
<br><h6 class=CaptionFigColumn id=header>Examples: </h6>[Enter extension point usage example here.]
<p></p>
<h6 class=CaptionFigColumn id=header>API Information: </h6>[Enter API information here.]
<p></p>
<h6 class=CaptionFigColumn id=header>Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
<p></p>
<br>
<p class=note id=copyright>
</p>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>WTP UI Operation</title>
<link rel="stylesheet" type="text/css" href="schema.css">
</HEAD>
<BODY>
<H1><CENTER>WTP UI Operation</CENTER></H1>
<p></p>
<h6 class=CaptionFigColumn id=header>Identifier: </h6>com.ibm.wtp.common.ui.WTPUIOperation<p></p>
<h6 class=CaptionFigColumn id=header>Since: </h6>6.0.0
<p></p>
<p>
<h6 class=CaptionFigColumn id=header>Description: </h6>This extension point is for WTP Operations which need to be tied to a generic UI action, such as CUT, COPY, PASTE, DELETE, and RENAME.</p>
<p><h6 class=CaptionFigColumn id=header>Configuration Markup:</h6></p>
<p class=code id=dtd>&lt;!ELEMENT <a name="e.extension">extension</a> ((<a href="#e.masterOperation">masterOperation</a> | <a href="#e.slaveOperation">slaveOperation</a>))&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST extension</p>
<p class=code id=dtdAttlist>point&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<ul class=ConfigMarkup id=attlistDesc>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.masterOperation">masterOperation</a> (<a href="#e.selectionEnablement">selectionEnablement</a>)&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST masterOperation</p>
<p class=code id=dtdAttlist>extendedGenericId&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>operationClass&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>populatorClass&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>alwaysExecute&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) <p class=code id=dtdAttlist>overrideId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
A masterOperation enables an existing WTP Operation to be used in a UI action. Generic Ids aggregate a set of masterOperations for the same Abstract action (like a "CUT" operation). WTP Operations are themselves extendible, so for any masterOperation defined, there may be any number of pre|post operations. These pre|post operation can have slaveOperation elements defined which indicate the pre|post operation may be run independently.</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>extendedGenericId</b> - The ID of the Generic Action you would like to contribute to. (e.g. The id for CUT, COPY, PASTE, DELETE, RENAME).</li>
<li><b>operationClass</b> - The fully qualified class of your operation. Your operation must extend com.ibm.wtp.common.operation.WTPOperation and must provide a no-arguments default constructor. If this attribute is not provided, the getDefaultOperation() returned by the dataModel will be used.</li>
<li><b>name</b> - A name to display in the dialog for your action (if the operation is optional). You can use the standard "%key" for translatable text stored in plugin.properties.</li>
<li><b>description</b> - A description to display in the dialog for your action (if the operation is optional). You can use the standard "%key" for translatable text stored in plugin.properties.</li>
<li><b>populatorClass</b> - An implementation of com.ibm.wtp.common.operation.extension.ui.WTPOperationDataModelUICreator. The populatorClass knows how to provide a WTP Operation Data Model based on a given selection. The getDefaultOperation() method of the data model will be ignored if the operationClass is provided.</li>
<li><b>alwaysExecute</b> - </li>
<li><b>overrideId</b> - </li>
<li><b>id</b> - </li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.selectionEnablement">selectionEnablement</a> (<a href="#e.objectClass">objectClass</a> | <a href="#e.or">or</a>)&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
The selectionEnablement element allows you to filter which kinds of selection your object is applicable to using Standard Eclipse Action Expresions.</p>
<br><br>
<p class=code id=dtd>&lt;!ELEMENT <a name="e.slaveOperation">slaveOperation</a> EMPTY&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST slaveOperation</p>
<p class=code id=dtdAttlist>operationClass&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>description&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<p class=ConfigMarkup id=elementDesc>
The slaveOperation element defines display information for operations which extend a declared master operation. If a pre|post operation of a master does not have a corresponding slaveOperation element, then the pre|post operation will be consider required, and not be displayed to the user.</p>
<br>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>operationClass</b> - The fully qualified class of your operation. Your operation must extend com.ibm.wtp.common.operation.WTPOperation and must provide a no-arguments default constructor. For slave operations, the data model of the master operation will be provided. Therefore, slaves cannot override the data model using a seperate populatorClass.</li>
<li><b>name</b> - A name to display in the dialog for your action (if the operation is optional). You can use the standard "%key" for translatable text stored in plugin.properties.</li>
<li><b>description</b> - A description to display in the dialog for your action (if the operation is optional). You can use the standard "%key" for translatable text stored in plugin.properties.</li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.or">or</a> (<a href="#e.objectClass">objectClass</a> | <a href="#e.and">and</a> | <a href="#e.objectState">objectState</a>)&gt;</p>
<p></p>
<br><br>
<p class=code id=dtd>&lt;!ELEMENT <a name="e.objectClass">objectClass</a> EMPTY&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST objectClass</p>
<p class=code id=dtdAttlist>name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>adaptable&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>name</b> - </li>
<li><b>adaptable</b> - </li>
</ul>
<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.and">and</a> (<a href="#e.objectClass">objectClass</a> | <a href="#e.or">or</a>)&gt;</p>
<p></p>
<br><br>
<p class=code id=dtd>&lt;!ELEMENT <a name="e.objectState">objectState</a> EMPTY&gt;</p>
<p class=code id=dtd>&lt;!ATTLIST objectState</p>
<p class=code id=dtdAttlist>value&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
<p></p>
<ul class=ConfigMarkup id=attlistDesc>
<li><b>value</b> - </li>
<li><b>name</b> - </li>
</ul>
<br><h6 class=CaptionFigColumn id=header>Examples: </h6>The following example declares two Master Operations (<code>com.acme.ui.operation.MasterOperationA</code> and <code>com.acme.ui.operation.MasterOperationB</code>) which are attached to the Generic ID <code>com.acme.ui.WTPOptionalOperationTest</code>.
The scenario has Master A which has as a pre-operation of Slave A and a post-operation of Slave C. Slave A is made optional by the <code>slaveOperation</code> element, while Slave C will always be run (no <code>slaveOperation</code> is given to run it seperately). Slave A further has an optional pre-operation (Slave B) that can be executed indepently of either Slave A or Master A.
<pre>
<p class=code id=tag>&lt;extension
point=<p class=code id=cstring>&quot;com.ibm.wtp.common.ui.wtpuiAction&quot;</p><p class=code id=tag>&gt;</p>
<p class=code id=tag>&lt;masterOperation
populatorClass=<p class=code id=cstring>&quot;com.acme.ui.operation.AcmeOperationPopulator&quot;</p><p class=code id=tag>
name=<p class=code id=cstring>&quot;%master_a_name&quot;</p><p class=code id=tag>
operationClass=<p class=code id=cstring>&quot;com.acme.ui.operation.MasterOperationA&quot;</p><p class=code id=tag>
extendedGenericId=<p class=code id=cstring>&quot;com.acme.ui.WTPOptionalOperationTest&quot;</p><p class=code id=tag>
description=<p class=code id=cstring>&quot;%master_a_description&quot;</p><p class=code id=tag>&gt;</p>
<p class=code id=tag>&lt;/masterOperation&gt;</p>
<p class=code id=tag>&lt;slaveOperation
name=<p class=code id=cstring>&quot;Slave A&quot;</p><p class=code id=tag>
operationClass=<p class=code id=cstring>&quot;com.acme.ui.operation.SlaveOperationA&quot;</p><p class=code id=tag>&gt;</p>
<p class=code id=tag>&lt;/slaveOperation&gt;</p>
<p class=code id=tag>&lt;slaveOperation
name=<p class=code id=cstring>&quot;Slave B&quot;</p><p class=code id=tag>
operationClass=<p class=code id=cstring>&quot;com.acme.ui.operation.SlaveOperationB&quot;</p><p class=code id=tag>&gt;</p>
<p class=code id=tag>&lt;/slaveOperation&gt;</p>
<p class=code id=tag>&lt;masterOperation
populatorClass=<p class=code id=cstring>&quot;com.acme.ui.operation.AcmeOperationPopulator&quot;</p><p class=code id=tag>
name=<p class=code id=cstring>&quot;EAR Project Action&quot;</p><p class=code id=tag>
operationClass=<p class=code id=cstring>&quot;com.acme.ui.operation.MasterOperationB&quot;</p><p class=code id=tag>
extendedGenericId=<p class=code id=cstring>&quot;com.acme.ui.WTPOptionalOperationTest&quot;</p><p class=code id=tag>&gt;</p>
<p class=code id=tag>&lt;selectionEnablement&gt;</p>
<p class=code id=tag>&lt;objectState name=<p class=code id=cstring>&quot;projectNature&quot;</p><p class=code id=tag> value=<p class=code id=cstring>&quot;org.eclipse.jst.j2ee.EARNature&quot;</p><p class=code id=tag> /&gt;</p>
<p class=code id=tag>&lt;/selectionEnablement&gt;</p>
<p class=code id=tag>&lt;/masterOperation&gt;</p>
<p class=code id=tag>&lt;/extension&gt;</p>
</pre>
For each of the slaveOperations referenced above, you must have a corresponding WTP Operation Extension declared similar to the following:
<pre>
<p class=code id=tag>&lt;extension
id=<p class=code id=cstring>&quot;wtpuiAciton.Acme.Extensions&quot;</p><p class=code id=tag>
point=<p class=code id=cstring>&quot;com.ibm.wtp.common.ExtendableOperation&quot;</p><p class=code id=tag>&gt;</p>
<p class=code id=tag>&lt;extendableOperation
class=<p class=code id=cstring>&quot;com.acme.ui.operation.MasterOperationA&quot;</p><p class=code id=tag>
id=<p class=code id=cstring>&quot;com.acme.ui.operation.MasterOperationA&quot;</p><p class=code id=tag>&gt;</p>
<p class=code id=tag>&lt;/extendableOperation&gt;</p>
<p class=code id=tag>&lt;extendableOperation
class=<p class=code id=cstring>&quot;com.acme.ui.operation.SlaveOperationA&quot;</p><p class=code id=tag>
id=<p class=code id=cstring>&quot;com.acme.ui.operation.SlaveOperationA&quot;</p><p class=code id=tag>&gt;</p>
<p class=code id=tag>&lt;/extendableOperation&gt;</p>
<p class=code id=tag>&lt;/extension&gt;</p>
<p class=code id=tag>&lt;extension
point=<p class=code id=cstring>&quot;com.ibm.wtp.common.OperationExtension&quot;</p><p class=code id=tag>&gt;</p>
<p class=code id=tag>&lt;!-- Made optional by the above declaration --&gt;</p>
<p class=code id=tag>&lt;operationExtension
preOperationClass=<p class=code id=cstring>&quot;com.acme.ui.operation.SlaveOperationA&quot;</p><p class=code id=tag>
id=<p class=code id=cstring>&quot;com.acme.ui.operation.MasterOperationA&quot;</p><p class=code id=tag>&gt;</p>
<p class=code id=tag>&lt;/operationExtension&gt;</p>
<p class=code id=tag>&lt;!-- Made optional by the above declaration --&gt;</p>
<p class=code id=tag>&lt;operationExtension
postOperationClass=<p class=code id=cstring>&quot;com.acme.ui.operation.SlaveOperationB&quot;</p><p class=code id=tag>
id=<p class=code id=cstring>&quot;com.acme.ui.operation.SlaveOperationA&quot;</p><p class=code id=tag>&gt;</p>
<p class=code id=tag>&lt;/operationExtension&gt;</p>
<p class=code id=tag>&lt;!-- Non-optional operation, will always run --&gt;</p>
<p class=code id=tag>&lt;operationExtension
postOperationClass=<p class=code id=cstring>&quot;com.acme.ui.operation.SlaveOperationC&quot;</p><p class=code id=tag>
id=<p class=code id=cstring>&quot;com.acme.ui.operation.MasterOperationA&quot;</p><p class=code id=tag>&gt;</p>
<p class=code id=tag>&lt;/operationExtension&gt;</p>
<p class=code id=tag>&lt;/extension&gt;</p>
</pre>
In general, users extending existing actions only need to declare the following:
<pre>
<p class=code id=tag>&lt;extension
point=<p class=code id=cstring>&quot;com.ibm.wtp.common.OperationExtension&quot;</p><p class=code id=tag>&gt;</p>
<p class=code id=tag>&lt;!-- The action referenced must be declared as extensible by the com.ibm.wtp.common.ExtendableOperation extension point --&gt;</p>
<p class=code id=tag>&lt;operationExtension
preOperationClass=<p class=code id=cstring>&quot;...YOUR CLASS...&quot;</p><p class=code id=tag>
id=<p class=code id=cstring>&quot;...ID OF EXISTING OPERATION...&quot;</p><p class=code id=tag>&gt;</p>
<p class=code id=tag>&lt;/operationExtension&gt;</p>
<p class=code id=tag>&lt;/extension&gt;</p>
</pre>
And if your operation is optional declare the slaveOperation:
<pre>
<p class=code id=tag>&lt;extension
point=<p class=code id=cstring>&quot;com.ibm.wtp.common.ui.wtpuiAction&quot;</p><p class=code id=tag>&gt;</p>
<p class=code id=tag>&lt;slaveOperation
name=<p class=code id=cstring>&quot;..NAME OF YOUR OPERATION...&quot;</p><p class=code id=tag>
description=<p class=code id=cstring>&quot;...DESCRIPTION OF YOUR ACTION...&quot;</p><p class=code id=tag>
operationClass=<p class=code id=cstring>&quot;...YOUR CLASS...&quot;</p><p class=code id=tag>&gt;</p>
<p class=code id=tag>&lt;/slaveOperation&gt;</p>
<p class=code id=tag>&lt;/extension&gt;</p>
</pre>
<p></p>
<br>
<p class=note id=copyright>
</p>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>org.eclipse.wst.common.navigator.views</title>
<link rel="stylesheet" type="text/css" href="../sources/formate.css">
</head>
<body>
<h1 class="descriptions">org.eclipse.common.navigator.views</h1>
<p>Version 0.7.0</p>
<p class="schema">Dependencies (Required Plugins)</p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td>
org.eclipse.jface<br>
org.eclipse.ui.workbench<br>
org.eclipse.core.resources<br>
org.eclipse.ui.ide<br>
org.eclipse.core.runtime<br>
org.eclipse.ui<br>
org.eclipse.emf.ecore<br>
org.eclipse.emf.edit<br>
org.eclipse.wst.common.ui.properties
</td>
</tr>
</table>
<p class="schema">Extensions</p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td>
org.eclipse.ui.dropActions
</td>
</tr>
</table>
<p class="schema">Extension Points</p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td>
<a href="Schemas/navigatorContent.htm">navigatorContent</a><br>
<a href="Schemas/navigatorViewer.htm">navigatorViewer</a><br>
<a href="Schemas/commonFilter.htm">commonFilter</a><br>
<a href="Schemas/dropHandler.htm">dropHandler</a><br>
thirdPartyFilterProvider<br>
<a href="Schemas/linkHelper.htm">linkHelper</a><br>
<a href="Schemas/actionProvider.htm">actionProvider</a> </td>
</tr>
</table>
<p class="schema">Schema</p>
not available
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>org.eclipse.wst.common.emf</title>
<link rel="stylesheet" type="text/css" href="../sources/formate.css">
</head>
<body>
<h1 class="description">org.eclipse.wst.common.emf</h1>
<p>Version: 0.7.0 </p>
<p class="schema">Dependencies (Required Plug Ins) </p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td>org.eclipse.emf.ecore.xmi<br>
org.eclipse.wst.common.frameworks<br>
org.eclipse.core.runtime<br>
org.eclipse.core.resources<br>
org.eclipse.jem.util</td>
</tr>
</table>
<p class="schema">Extensions:</p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td>org.eclipse.wst.common.emf.packageURIMap<br>
org.eclipse.jem.util.uiContextSensetiveClass</td>
</tr>
</table>
<p class="schema">Extension Points:</p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td>packageURIMap
</td>
</tr>
</table>
<p class="schema">Schema:</p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td>not documentated</td>
</tr>
</table>
<p>&nbsp;</p>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>org.eclipse.wst.common.emfworkbench.integration</title>
<link rel="stylesheet" type="text/css" href="../sources/formate.css">
</head>
<body>
<h1 class="descriptions">org.eclipse.wst.common.emfworkbench.integration</h1>
<p>Version 0.7.0</p>
<p class="schema">Dependencies (Required Plug Ins) </p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td>
org.eclipse.wst.common.frameworks<br>
org.eclipse.jem.util<br>
org.eclipse.emf.edit<br>
org.eclipse.emf.ecore.xmi<br>
org.eclipse.wst.common.emf<br>
org.eclipse.core.runtime<br>
org.eclipse.core.resources<br>
org.eclipse.emf.codegen<br>
org.eclipse.emf.codegen.ecore<br>
org.eclipse.xsd<br>
org.eclipse.emf.importer.java
</td>
</tr>
</table>
<p class="Stil2"><span class="schema">Extensions</span>:</p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td>org.eclipse.jem.util.internalWorkbenchContextFactory<br>
org.eclipse.jem.util.uiContextSensetiveClass<br>
org.eclipse.core.runtime.applications<br>
org.eclipse.wst.common.frameworks.validationSelectionHandler
</td>
</tr>
</table>
<p class="schema">Extension Points:</p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td><a href="Schemas/EMFRessourceEditModel.htm">editModel</a><br>
<a href="Schemas/EditModelExtension.htm">editModelExtension</a><br>
<a href="Schemas/AdapterFactoryExtension.htm">adapterFactory</a><br>
<a href="Schemas/ModifierHelperFactory.htm">ModifierHelperFactory</a> </td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>org.eclipse.wst.common.feature</title>
<link rel="stylesheet" type="text/css" href="../sources/formate.css">
</head>
<body>
<h1 class="descriptions">org.eclipse.wst.common.frameworks</h1>
<p>Version 0.7.0</p>
<p class="schema">Dependencies (Required Plugins)</p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td>
org.eclipse.core.resources<br>
org.eclipse.core.runtime<br>
org.eclipse.emf.core.commands<br>
org.eclipse.jem.util</td>
</tr>
</table>
<p class="schema">Extensions</p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td>
org.eclipse.jem.util.uiContextSensetiveClass</td>
</tr>
</table>
<p class="schema">Extension Points</p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td><a href="Schemas/ExtendabledOperation.htm">ExtendableOperation</a><br>
<a href="Schemas/OperationExtension.htm">OperationExtension</a><br>
<a href="Schemas/FunctionGroup.htm">functionGroup</a><br>
<a href="Schemas/WTPActivityBridge.htm">WTPActivityBridgeHelper</a><br>
<a href="Schemas/validationSelectionHandler.htm">validationSelectionHandler</a><br>
<a href="Schemas/DataModelProvider.htm">DataModelProviderExtension</a></td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>org.eclipse.wst.common.feature</title>
<link rel="stylesheet" type="text/css" href="../sources/formate.css">
</head>
<body>
<h1 class="descriptions">org.eclipse.wst.common.frameworks.ui</h1>
<p>Version 0.7.0</p>
<p class="schema">Dependencies (Required Plugins)</p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td>
org.eclipse.ui.ide<br>
org.eclipse.core.resources<br>
org.eclipse.ui<br>
org.eclipse.wst.common.frameworks<br>
org.eclipse.core.runtime<br>
org.eclipse.jem.util</td>
</tr>
</table>
<p class="schema">Extensions</p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td>
oeg.eclipse.jem.util.uiTester<br>
org.eclipse.jem.util.uiContextSensetiveClass<br>
org.eclipse.wst.common.frameworks.WTPActivityBridgeHelper<br>
org.eclipse.wst.common.frameworks.ExtendableOperation<br>
org.eclipse.ui.preferencePages
</td>
</tr>
</table>
<p class="schema">Extension Points</p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td>
<a href="Schemas/wtpuiAction.htm">wtpuiAction</a><br>
<a href="Schemas/extendedViewer.htm">extendedViewer</a><br>
<a href="Schemas/extendableWizard.htm">extendableWizard</a><br>
<a href="Schemas/wizardPageGroup.htm">wizardPageGroup</a><br>
<a href="Schemas/DataModelWizardExtension.htm">DataModelWizardExtension</a> </td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>org.eclipse.wst.common.feature</title>
<link rel="stylesheet" type="text/css" href="../sources/formate.css">
</head>
<body>
<h1 class="descriptions">org.eclipse.wst.common.modeulecore</h1>
<p>Version 0.7.0</p>
<p class="schema">Dependencies (Required Plugins)</p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td>
org.eclipse.core.runtime<br>
org.eclipse.wst.common.frameworks<br>
org.eclipse.core.resources<br>
org.eclipse.emf.core<br>
org.eclipse.wst.common.emfworkbench.integration<br>
org.eclipse.wst.common.emf<br>
org.eclipse.emf.ecore.xmi<br>
org.eclipse.wst.server.core<br>
org.eclipse.core.commands<br>
org.eclipse.emf.rdit<br>
org.eclipse.ui<br>
org.eclipse.jem.util<br>
org.eclipse.wst.common.uriresolver</td>
</tr>
</table>
<p class="schema">Extensions</p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td>
org.eclipse.emf.ecore.generated_package<br>
org.eclipse.core.resources.natures<br>
org.eclipse.wst.common.emfworkbench.integration.editModel<br>
org.eclipse.core.resources.builders<br>
org.eclipse.wst.common.frameworks.DataModelProviderExtension<br>
org.eclipse.core.runtime.contentTypes<br>
org.eclipse.team.core.ignore<br>
org.eclipse.wst.common.uriresolver.resolverExtensions
</td>
</tr>
</table>
<p class="schema">Extension Points</p>
<table width="90%" border="0" cellspacing="0">
<tr>
<td width="30">&nbsp;</td>
<td>
artifactedit</td>
</tr>
</table>
<p class="schema">Schema</p>
not available
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<title>Eclipse API Scanner</title>
<link
rel="stylesheet"
type="text/css"
href="sources/formate.css">
</head>
<body>
<p class="ueberschrift">Introduction</p>
<p>This document summarizes the usage of the Eclipse API scanner. The
goal of the Eclipse API scanner is to identify any internal API
references in any Eclipse-based products. You can view the requirements
document <a href="scanner_req.html">here</a>, and the design document <a
href="scanner_doc.html">here</a>.</p>
<p class="ueberschrift">Downloading and running the Eclipse API scanner</p>
<p>A binary version of the Eclipse API scanner is available here:</p>
<a
href="http://www.eclipse.org/downloads/download.php?file=/webtools/downloads/apiscanner.zip">Download
the Eclipse API scanner</a>
.
<p>The source of the Eclipse API scanner is also available in CVS: <i>(http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.wtp.releng/apitools/?cvsroot=WebTools_Project)</i>.</p>
Check out the
<b>org.eclipse.wtp.releng.tools.component.core</b>
project and the
<b>org.eclipse.wtp.releng.tools.component.ui</b>
project.
<p>Running the Eclipse API scanner from the command line environment</p>
<p>Before running the Eclipse API scanner, you should get yourself
familiar with what is a component. For a definition of component, visit
the <a href="scanner_doc.html">design document</a>. To begin, have your
Eclipse components/plug-ins and your component.xml files ready. The
Eclipse API scanner will scan all the API references in each component
and check whether they are internal API references. An API violation
report will be generated for each component. To generate the API
violation reports, run:</p>
<pre>
genViolation.bat -eclipseDir &lt;eclipseDir&gt; -compXMLDir &lt;compXMLDir&gt; -compRefDir &lt;compRefDir&gt; -compVioDir &lt;compVioDir&gt; -genHTML -debug
</pre>
where:
<ul>
<li><b>eclipseDir</b> - a space separated list of directories
containing the plug-ins for your product. These directories do not
have to include the base Eclipse plug-ins (ex: org.eclipse.jdt.core).
You only need the plug-ins that you want to generate API violation
reports for.</li>
<li><b>compXMLDir</b> - a space separated list of directories
containing component.xml files for your product. The Eclipse API
scanner will generate an API violation report for each component.xml
found in these directories. So, if you do not want to generate
violation reports for the Eclipse components (ex:
org.eclipse.jdt.core), do not include their component.xml files here.</li>
<li><b>compRefDir</b> - a space separated list of directories
containing component.xml files that your product/components depend on.
For example, the component.xml files for org.eclipse.jdt.core goes
here.</li>
<li><b>compVioDir</b> - the output directory of the API violation
reports.</li>
<li><b>genHTML</b> - generates the API violation report in HTML
(default is XML format).</li>
<li><b>debug</b> - generates debug information (ex: line numbers).</li>
</ul>
For a list of all the options available, simply run genViolation.bat
without any arguments. Note that genViolation.bat uses relative paths.
Therefore, if you want to run it out-of-the-box, we must "cd" to
genViolation.bat's directory before running it. Other options include:
<ul>
<li><b>include</b> - a space separated list of package names to be
included in the scan.</li>
<li><b>exclude</b> - a space separated list of package names to be
excluded in the scan. For example, if you specify "java.lang. sun.",
then the API violation report will not include internal API references
to those two packages.</li>
<li><b>genAPI</b> - generates a component-api.xml file per component.
This file lists all the public APIs that a component has.</li>
<li><b>genUsage</b> - generates a component-use.xml file per
component. This file lists all the API references that a component
has.</li>
<li><b>classRefOnly</b> - treats all API references as class
reference. By default, the Eclipse API scanner will categorize API
references into different categories such as class references, method
references, field references and etc. By specifying this option, all
API references are consider class references. This speeds up the
scanning process.</li>
</ul>
<p></p>
<p>To get you started more quickly, you can use <b>genComponent.bat</b>
to generate a component.xml file per plugin. Any packages with the word
"internal" in it will be excluded from the generated component.xml file.
To generate default component.xml files, run:</p>
<pre>
genComponent.bat -eclipseDir &lt;eclipseDir&gt; -compXMLDir &lt;compXMLDir&gt;
</pre>
where:
<ul>
<li><b>eclipseDir</b> - a space separated list of directories
containing the plug-ins for your product. Again, do not include base
Eclipse plug-ins in here.</li>
<li><b>compXMLDir</b> - the output directory of the generated
component.xml files.</li>
</ul>
<p></p>
<p>Running the Eclipse API scanner within Eclipse</p>
<p>The Eclipse API scanner is also available as two Eclipse plug-ins.
Therefore, you can overlay them on top of an Eclipse driver and use them
to check API violations as you develop your product/plug-ins. To get
these plug-ins, go to:</p>
<p><a
href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.wtp.releng/apitools/?cvsroot=WebTools_Project">http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.wtp.releng/apitools/?cvsroot=WebTools_Project</a>
</p>
<p>and check out the <b>org.eclipse.wtp.releng.tools.component.core</b>
project and the <b>org.eclipse.wtp.releng.tools.component.ui</b>
project. They provide an editor for editing component.xml files.</p>
<p><img
src="sources/figure01.gif"
alt=""></p>
<p>They will also scan the plug-ins in your workspace and generate API
violations in the problems views. The figure below shows a plug-in in my
workspace called <b>org.eclipse.sample</b>. I have also created a
component.xml file for this plugin.</p>
<p><img
src="sources/figure02.gif"
alt=""></p>
<p>In the next figure, I have added a reference to one of the Eclipse
internal class. The Eclipse API scanner will flag this as an API
violation and display it in the problems view.</p>
<p><img
src="sources/figure03.gif"
alt=""></p>
<p>You can find some sample component.xml files <a
href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.wtp.releng/apitools/components/?cvsroot=WebTools_Project">
http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.wtp.releng/apitools/components/?cvsroot=WebTools_Project</a>.
</p>
<p><b>Disclaimer:</b> these sample component.xml files are provided as
an example only. They <b>DO NOT</b> reflect the actual APIs provided by
the Eclipse projects.</p>
</body>
</html>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta
http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta
name="GENERATOR"
content="Mozilla/4.5 [en] (Win98; I) [Netscape]">
<meta
name="Author"
content="Jim des Rivières">
<title>API Rules of Engagement</title>
<link
rel="stylesheet"
href="sources/formate.css">
</head>
<body>
<center>
<h1>How to Use the Eclipse API</h1>
</center>
<blockquote><b>Summary</b> <br>
The Eclipse Platform offers a comprehensive API (Application Programmer
Interface) to developers writing plug-ins. This article discusses the
general ground rules for using the Eclipse Platform API, including how
to tell API from non-API, and how to stay in the API "sweet spot" to
avoid the risk of being broken as the platform and its APIs evolve.
These general ground rules are also recommended practice for plug-ins
that must declare API elements of their own.
<p><b>By Jim des Rivi&egrave;res, OTI</b></p>
<hr WIDTH="100%">
<h3>What it means to be API</h3>
The Eclipse platform defines API elements for use by its clients, namely
ISVs writing plug-ins. These plug-ins may in turn define API elements
for their clients, and so on. API elements are the public face: they
carry a specification about what they are supposed to do, and about how
they are intended to be used. API elements are supported: the Eclipse
platform team will fix implementation bugs where there is a deviation
from the specified behavior. Since there is often a high cost associated
with breaking API changes, the Eclipse platform team will also try to
evolve API elements gracefully through successive major releases.
<h3>How to tell API from non-API</h3>
By their very nature, API elements are documented and have a
specification, in contrast to non-API elements which are internal
implementation details usually without published documentation or
specifications. So if you cannot find the documentation for something,
that's usually a good indicator that it's not API.
<p>To try to draw the line more starkly, the code base for the platform
is separated into API and non-API packages, with all API elements being
declared in designated API packages.</p>
<ul>
<li><b>API package</b> - a Java&trade; package that contains at least
one API class or API interface. The names of API packages are
advertised in the documentation for that component; where feasible,
all other packages containing only implementation details have
"internal" in the package name. The names of API packages may
legitimately appear in client code. For the Eclipse platform proper,
these are:</li>
<ul>
<li><tt>org.eclipse.foo.*</tt> - for example, <tt>org.eclipse.swt.widgets</tt>,
<tt>org.eclipse.ui</tt>, or <tt>org.eclipse.core.runtime</tt></li>
<li><tt>org.eclipse.foo.internal.*</tt> - not API; internal
implementation packages</li>
<li><tt>org.eclipse.foo.examples.*</tt> - not API; these are
examples</li>
<li><tt>org.eclipse.foo.tests.*</tt> - not API; these are test
suites</li>
</ul>
<li><b>API class or interface</b> - a <tt>public</tt> class or
interface in an API package, or a <tt>public</tt> or <tt>protected</tt>
class or interface member declared in, or inherited by, some other API
class or interface. The names of API classes and interfaces may
legitimately appear in client code.</li>
<li><b>API method or constructor</b> - a <tt>public</tt> or <tt>protected</tt>
method or constructor either declared in, or inherited by, an API
class or interface. The names of API methods may legitimately appear
in client code.</li>
<li><b>API field</b> - a <tt>public</tt> or <tt>protected</tt> field
either declared in, or inherited by, an API class or interface. The
names of API fields may legitimately appear in client code.</li>
</ul>
Everything else is considered internal implementation detail and off
limits to all clients. Legitimate client code must never reference the
names of non-API elements (not even using Java reflection). In some
cases, the Java language's name accessibility rules are used to disallow
illegal references. However, there are many cases where this is simply
not possible. Observing this one simple rule avoids the problem
completely:
<ul>
<li><b>Stick to officially documented APIs. </b>Only reference
packages that are documented in the <b><i>published API Javadoc</i></b>
for the component. Never reference a package belonging to another
component that has "internal" in its name---these are never API. Never
reference a package for which there is no published API
Javadoc---these are not API either.</li>
</ul>
<h3>General Rules</h3>
The specification of API elements is generated from Javadoc comments in
the element's Java source code. For some types of elements, the
specification is in the form of a contract. For example, in the case of
methods, the contract is between two parties, the caller of the method
and the implementor of the method. The fundamental ground rule is:
<ul>
<li><b>Honor all contracts.</b> The contracts are described in the
published Javadoc for the API elements you are using.</li>
</ul>
The term "must", when used in an API contract, means that it is
incumbent on the party to ensure that the condition would always be met;
any failure to do so would be considered a programming error with
unspecified (and perhaps unpredictable) consequences.
<ul>
<li><b>You must honor "must". </b>Pay especially close heed to
conditions where "must" is used.</li>
</ul>
Other common sense rules:
<ul>
<li><b>Do not rely on incidental behavior. </b>Incidental behavior is
behavior observed by experiment or in practice, but which is not
guaranteed by any API specification.</li>
<li><b>Do not treat null as an object.</b> Null is more the lack of an
object. Assume everything is non-null unless the API specification
says otherwise.</li>
<li><b>Do not try to cheat with Java reflection.</b> Using Java
reflection to circumvent Java compiler checking buys you nothing more.
There are no additional API contracts for uses of reflection;
reflection simply increases the likelihood of relying on unspecified
behavior and internal implementation detail.</li>
<li><b>Use your own packages. </b>Do not declare code in a package
belonging to another component. Always declare your own code in your
own packages.</li>
</ul>
<h3>Calling public API methods</h3>
For most clients, the bulk of the Eclipse API takes the form of public
methods on API interfaces or classes, provided for the client to call
when appropriate.
<ul>
<li><b>Ensure preconditions.</b> Do ensure that an API method's
preconditions are met before calling the method. Conversely, the
caller may safely assume that the method's postconditions will have
been achieved immediately upon return from the call.</li>
<li><b>Null parameters.</b> Do not pass null as a parameter to an API
method unless the parameter is explicitly documented as allowing null.
This is perhaps the most frequently made programming error.</li>
<li><b>Restricted callers.</b> Do not call an API method that is
documented as available only to certain callers unless you're one of
them. In some situations, methods need to be part of the public API
for the benefit of a certain class of callers (often internal);
calling one of these methods at the wrong time has unspecified (and
perhaps unpredictable) consequences.</li>
<li><b>Debugging methods.</b> Do not call an API method labelled "for
debugging purposes only". For example, most <tt>toString()</tt>
methods are in this category.</li>
<li><b>Parameter capture.</b> Do not pass an array, collection, or
other mutable object as a parameter to an API method and then modify
the object passed in. This is just asking for trouble.</li>
</ul>
<h3>Instantiating platform API classes</h3>
Not all concrete API classes are intended to be instantiated by just
anyone. API classes have an instantiation contract indicating the terms
under which instances may be created. The contract may also cover things
like residual initialization responsibilities (for example, configuring
a certain property before the instance is fully active) and associated
lifecycle responsibilities (for example, calling <tt>dispose()</tt> to
free up OS resources hung on to by the instance). Classes that are
designed to be instantiated by clients are explicitly flagged in the
Javadoc class comment (with words like "Clients may instantiate.").
<ul>
<li><b>Restricted instantiators.</b> Do not instantiate an API class
that is documented as available only to certain parties unless you're
one of them. In some situations, classes need to be part of the public
API for the benefit of a certain party (often internal); instantiating
one of these classes incorrectly has unspecified (and perhaps
unpredictable) consequences.</li>
</ul>
<h3>Subclassing platform API classes</h3>
Only a subset of the API classes were designed to be subclassed. API
classes have a subclass contract indicating the terms under which
subclasses may be declared. This contract also covers initialization
responsibilities and lifecycle responsibilities. Classes that are
designed to be subclassed by clients are explicitly flagged in the
Javadoc class comment (with words like "Clients may subclass.").
<ul>
<li><b>Restricted subclassers.</b> Do not subclass an API class that
is not intended to be subclassed. Treat these classes as if they had
been declared final. (These are sometimes referred to as "soft final"
classes).</li>
</ul>
<h3>Calling protected API methods</h3>
Calling inherited protected and public methods from within a subclass is
generally allowed; however, this often requires more care to correctly
call than to call public methods from outside the hierarchy.
<h3>Overriding API methods</h3>
Only a subset of the public and protected API methods were designed to
be overridden. Each API method has a subclass contract indicating the
terms under which a subclass may override it. By default, overriding is
not permitted. It is important to check the subclass contract on the
actual method implementation being overridden; the terms of subclass
contracts are not automatically passed along when that method is
overridden.
<ul>
<li><b>Do not override a public or protected API method unless it is
explicitly allowed.</b> Unless otherwise indicated, treat all methods
as if they had been declared final. (These are sometimes known as
"soft final" methods). If the kind of overriding allowed is:</li>
<ul>
"
<b>implement</b>
" - the abstract method declared on the subclass must be implemented
by a concrete subclass
<br>
"
<b>extend</b>
" - the method declared on the subclass must invoke the method on
the superclass (exactly once)
<br>
"
<b>re-implement</b>
" - the method declared on the subclass must not invoke the method
on the superclass
<br>
"
<b>override</b>
" - the method declared on the subclass is free to invoke the method
on the superclass as it sees fit
</ul>
<li><b>Ensure postconditions. </b>Do ensure that any postconditions
specified for the API method are met by the implementation upon
return.</li>
<li><b>Proactively check preconditions. </b>Do not presume that
preconditions specified for the API method have necessarily been met
upon entry. Although the method implementation would be within its
rights to not check specified preconditions, it is usually a good idea
to check preconditions (when feasible and reasonably inexpensive) in
order to blow the whistle on misbehaving callers.</li>
<li><b>Null result. </b>Do not return null as a result from an API
method unless the result is explicitly documented (on the specifying
interface or superclass) as allowing null.</li>
<li><b>Return copies. </b>Do not return an irreplaceable array,
collection, or other mutable object as the result from an API method.
Always return a copy to avoid trouble from callers that might modify
the object.</li>
</ul>
<h3>Implementing platform API interfaces</h3>
Only a subset of the API interfaces were designed to be implemented by
clients. API interfaces have a contract indicating the terms under which
it may be implemented. Interfaces that are designed to be implemented by
clients are explicitly flagged in the Javadoc class comment (with words
like "Clients may implement."). A client may declare a subinterface of
an API interface if and only if they are allowed to implement it.
<ul>
<li><b>Restricted implementors.</b> Do not implement an API interface
that is documented as available only to certain parties unless you're
one of them. In many situations, interfaces are used to hide internal
implementation details from view.</li>
</ul>
<h3>Implementing public API methods</h3>
See "Overriding API methods".
<h3>Accessing Fields in API classes and interfaces</h3>
Clients may read API fields, most of which are final. Certain
struct-like objects may have non-final public fields, which clients may
read and write unless otherwise indicated.
<ul>
<li><b>Null fields.</b> Do not set an API field to null unless this is
explicitly allowed.</li>
</ul>
<h3>Casting Objects of a known API type</h3>
An object of a known API type may only be cast to a different API type
(or conditionally cast using instanceof) if this is explicitly allowed
in the API.
<ul>
<li><b>Cast and instanceof.</b> Do not use instanceof and cast
expressions to increase what is known about an object beyond what the
API supports. Improper use exposes incidental implementation details
not guaranteed by the API.</li>
</ul>
And, of course, casting any object to a non-API class or interface is
always inappropriate.
<h3>Not Following the Rules</h3>
Whether done knowingly or unwittingly, there are consequences for
transgressing the rules. It might be easier for all involved if there
were API police that would bust you for breaking the rules. However,
that is not the case. For the most part, API conformance operates as an
honor system, with each client responsible for knowing the rules and
adhering to them.
<p>The contracts on the API elements delimit the behavior that is
supported and sustained. As the Eclipse platform matures and evolves, it
will be the API contracts that guide how this evolution happens. Outside
of these contracts, everything is unsupported and subject to change,
without notice, and at any time (even mid-release or between different
OS platforms). Client code that oversteps the above rules might fail on
different versions and patch levels of the platform; or when run on
different underlying OSes; or when run with a different mix of
co-resident plug-ins; or when run with a different workbench
perspective; and so on. Indeed, no one is even particularly interested
in speculating exactly how any particular transgression might come back
to bite you. To those who choose to ignore the rules, don't say that you
weren't warned. And don't expect much more than a sympathetic "Told you
so."</p>
<p>On the other hand, client plug-in code that lives by the above rules
should continue to work across different versions and patch levels of
the platform, across different underlying OSes, and should peacefully
co-exist with other plug-ins. If everyone plays by the rules, the
Eclipse platform will provide a stable and supported base on which to
build exciting new products.</p>
<p><small>Java and all Java-based trademarks and logos are trademarks or
registered trademarks of Sun Microsystems, Inc. in the United States,
other countries, or both.</small></p>
</blockquote>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>org.eclipse.wst.command.env.core</title>
<link rel="stylesheet" type="text/css" href="../sources/formate.css">
</head>
<body>
<p class="ueberschrift">Assembly Tools</p>
<p>The assembly component contains features definitions for building the WST
release, its SDK, and its test suite. The component leads are Deniz Seilir
and Dominique de Vito.
</p>
</body>
</html>
\ No newline at end of file
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta
http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1">
<title>Cheat Sheet tutorial</title>
<link
rel="stylesheet"
type="text/css"
href="../sources/formate.css">
</head>
<body>
<p class="ueberschrift">The pupose of the editor created by this example</p>
<p>The editor gives custom content assist while allowing the "auto
content model" to continue to be effective. Also, shows how content
outline by be customized, and custom navigation hyper link added.</p>
<p>An example cheat sheet file can be found in
&lt;eclipse_home&gt;/plugins/org.eclipse.jdt_3.1.0/cheatsheets/HelloWorld.xml
</p>
<p>the custom content assist for attribute values exists for pluginId
and class attributes of action elements (inside item elements) -
pluginId shows all registered plugin ids - class needs references to
org.eclipse.jface.action.IAction and searches for all its implementors
to determine which classes are legal inputs for the class attribute</p>
<p>The content outline has the titles of the items, the cheatsheet
itself and the action classes as nodes.</p>
<p class="ueberschrift">SSE principles</p>
<p>The structured source editor (SSE) framework is content type based.
Therefore if you want to extend the framework with your own file format
you have to define your own content type and its model handler. To do
this you extend the org.eclipse.core.runtime.contentTypes extension
point specifying your content type in the id attribute and using
org.eclipse.core.runtime.xml as the base type. The priority should be
set to high so you override the default. In the file association element
you use your own file extensions or a file name to identify the content
type of the file. The usage of the extension point should look like the
following:</p>
<pre>
&lt;extension point="org.eclipse.core.runtime.contentTypes"&gt;
&lt;content-type
priority="high"
name="CS Content Type"
id="cssource"
base-type="org.eclipse.core.runtime.xml"
default-charset="UTF-8"&gt;
&lt;describer class="org.eclipse.wst.xml.core.contenttype.ContentDescriberForXML"/&gt;
&lt;/content-type&gt;
&lt;file-association
content-type="org.eclipse.wst.cs.ui.cssource"
file-names="content.xml"/&gt;
&lt;/extension&gt;
</pre>
<p>To use the content type inside of the SSE you have to define a model
handler extending the org.eclipse.wst.sse.core.modelHandler extension
point. The model handler implementation extends the class
org.eclipse.wst.sse.core.modelhandler.AbstractModelHandler and
implements the interface
org.eclipse.wst.sse.core.modelhandler.IModelHandler. It should set its
own id and the associated content type id.</p>
<pre>
&lt;extension
point="org.eclipse.wst.sse.core.modelHandler"&gt;
&lt;modelHandler
default="false"
class="org.eclipse.wst.cs.core.modelhandler.ModelHandlerForCS"
associatedContentTypeId="org.eclipse.wst.cs.ui.cssource"
id="org.eclipse.wst.sse.core.handler.cs"&gt;
&lt;/modelHandler&gt;
&lt;/extension&gt;
</pre>
<p>This is the starting point for all extensions made to the SSE. Now
there are several possibilities where to built in your own extensions.</p>
<p class="ueberschrift">Extending the built-in content assist</p>
<p>In this example we want to provide a custom content assist processor
for attribute values. To extend the content assist of the XML editor
from the SSE you just use the
org.eclipse.wst.sse.ui.extendedconfiguration extension point and specify
your own textviewerconfiguration.</p>
<pre>
&lt;extension point="org.eclipse.wst.sse.ui.extendedconfiguration"&gt;
&lt;textviewerconfiguration
<b>class="org.eclipse.wst.cs.ui.StructuredTextViewerConfigurationCS"</b>
target="org.eclipse.wst.cs.ui.cssource"&gt;
&lt;/textviewerconfiguration&gt;
&lt;contentoutlineconfiguration
class="org.eclipse.wst.xml.ui.views.contentoutline.XMLContentOutlineConfiguration"
target="org.eclipse.wst.cs.ui.cssource"&gt;
&lt;/contentoutlineconfiguration&gt;
&lt;propertysheetconfiguration
class="org.eclipse.wst.xml.ui.views.properties.XMLPropertySheetConfiguration"
target="org.eclipse.wst.cs.ui.cssource"&gt;
&lt;/propertysheetconfiguration&gt;
&lt;spellchecktarget
class="org.eclipse.wst.xml.ui.XMLSpellCheckTarget"
target="org.eclipse.wst.cs.ui.cssource"&gt;
&lt;/spellchecktarget&gt;
&lt;sourceeditingtexttools
class="org.eclipse.wst.xml.ui.extensions.XMLSourceEditingTextTools"
target="org.eclipse.wst.cs.ui.cssource"&gt;
&lt;/sourceeditingtexttools&gt;
&lt;characterpairmatcher
class="org.eclipse.wst.xml.ui.text.XMLDocumentRegionEdgeMatcher"
target="org.eclipse.wst.cs.ui.cssource"&gt;
&lt;/characterpairmatcher&gt;
&lt;preferencepages
preferenceids="org.eclipse.wst.sse.ui.preferences/org.eclipse.wst.sse.ui.preferences.cs"
target="org.eclipse.wst.cs.ui.cssource"&gt;
&lt;/preferencepages&gt;
&lt;/extension&gt;
</pre>
<p>In the configuration you override the getContentAssistant method from
StructuredTextViewerConfigurationXML and provide your own content assist
processor for the partition types
StructuredTextPartitioner.ST_DEFAULT_PARTITION and
StructuredTextPartitionerForXML.ST_DEFAULT_XML.</p>
<pre>
public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
IContentAssistant ca = super.getContentAssistant(sourceViewer);
if (ca != null &amp;&amp; ca instanceof ContentAssistant) {
ContentAssistant contentAssistant = (ContentAssistant) ca;
IContentAssistProcessor xmlContentAssistProcessor = new CSContentAssistProcessor(getEditorPart());
IContentAssistProcessor noRegionProcessor = new NoRegionContentAssistProcessor();
addContentAssistProcessor(contentAssistant, xmlContentAssistProcessor, StructuredTextPartitioner.ST_DEFAULT_PARTITION);
addContentAssistProcessor(contentAssistant, xmlContentAssistProcessor, StructuredTextPartitionerForXML.ST_DEFAULT_XML);
addContentAssistProcessor(contentAssistant, noRegionProcessor, StructuredTextPartitioner.ST_UNKNOWN_PARTITION);
}
return ca;
}
</pre>
<p>The implementation of the content assist processor overrides
addAttributeValueProposals from the XMLContentAssistProcessor. The
passed ContentAssistRequest stores the match string, the corresponding
node and structured document region where the cursor is. To get the
attribute name you have to get the last attribute text region in the
structured document region.</p>
<pre>
// Find the attribute region and name for which this position should have a value proposed
IStructuredDocumentRegion open = node.getFirstStructuredDocumentRegion();
ITextRegionList openRegions = open.getRegions();
int i = openRegions.indexOf(contentAssistRequest.getRegion());
if (i &lt; 0)
return;
ITextRegion nameRegion = null;
while (i &gt;= 0) {
nameRegion = openRegions.get(i--);
if (nameRegion.getType() == XMLRegionContext.XML_TAG_ATTRIBUTE_NAME)
break;
}
</pre>
<p>To provide your own content assist proposals construct a
CustomCompletionProposal and add it to the content assist request.</p>
<p class="ueberschrift">Providing your own outline view</p>
<p>To change the default outline view you have to provide your own
adapter factory provider. To register it with the SSE extend the
org.eclipse.wst.sse.ui.adapterFactoryDescription extension point.</p>
<pre>
&lt;extension point="org.eclipse.wst.sse.ui.adapterFactoryDescription"&gt;
&lt;adapterFactoryDescription class="org.eclipse.wst.cs.ui.registry.AdapterFactoryProviderForCS"/&gt;
&lt;/extension&gt;
</pre>
<p>The adapter factory provider should add your own adapter factory to
the factory registry.</p>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<title>org.eclipse.wst.command.env.core</title>
<link
rel="stylesheet"
type="text/css"
href="../sources/formate.css">
</head>
<body>
<p class="ueberschrift">Command/Common Tools</p>
<p>The command component contains command infrastructure including the
Environment Command framework and the Dynamic Wizard framework. This
infrastructure is required by the webtooling project, but is not
specific to webtooling per se. We need to harmonize the several existing
command approaches. Components in this subsystem have no dependancies on
other webtooling components and are not specific to web tooling
functionality, but are needed by other web tooling components.The
component lead is Chris Brealey.</p>
<p class="ueberschrift">What Is The Common Component?</p>
<p>Actually, its three components &ndash; wst.common, jst.common,
wst.command</p>
<p><em>&quot;The common components contain plugins that provide generic
functionality that are applicable in several different contexts. Plugins
in the common component should not have dependencies on plugins outside
of the Eclipse base.&rdquo;</em></p>
<p>Some conceptual tests to decide what should go into common&hellip;</p>
<ul>
<li>Is it destined for API ?
<ul>
<li>if it has no API story, its should be moved into a different
component specific to those who need it</li>
</ul>
</li>
<li>Should it ultimately live in base Eclipse ?
<ul>
<li>common is often used as a temporary staging ground for generic
function that will eventually be absorbed into base Eclipse</li>
</ul>
</li>
<li>What are the dependencies?
<ul>
<li>if the function has dependencies on more than base eclipse,
that&rsquo;s a red flag that it might not be &lsquo;common&rsquo;</li>
</ul>
</li>
<li>Is it generic?
<ul>
<li>Is this function generically applicable to multiple domains in
practice (not just theory</li>
</ul>
</li>
</ul>
<p class="ueberschrift">Plugins - Dependencies</p>
<ul>
<li>Eclipse
<ul>
<li>Platform
<ul>
<li>JDT,Resource</li>
</ul>
</li>
<li>JEM
<ul>
<li>Java Model (Reflective EMF Model)</li>
<li>EMF Extensions (Shared by JEM and WTP)
<ul>
<li>Project scoped Resources</li>
<li>RefResource</li>
</ul>
</li>
</ul>
</li>
<li>EMF
<ul>
<li>Primary metamodel framework</li>
<li>EMF.edit</li>
</ul>
</li>
</ul>
</li>
</ul>
<p class="ueberschrift">API - Status</p>
<ul>
<li>Provisional API
<ul>
<li>Flexible Project API</li>
<li>Validation</li>
<li>Data model wizard/commands</li>
<li>Environment framework</li>
<li>Common Navigator</li>
</ul>
</li>
<li>Internal frameworks
<ul>
<li>EMF extensions: base function shared with JEM to be pushed to
EMF</li>
<li>Proposed API is relatively young</li>
</ul>
</li>
</ul>
<p class="ueberschrift">Common - Evolution</p>
<ul>
<li>Existing plugins may migrate to base Eclipse (or other projects)</li>
<ul>
<li>tabbes properities sheet</li>
<li>project navigator</li>
</ul>
<li>Existing plugins may not be 'common' enough
<ul>
<li>in practice function is less 'common' than we initial thought...
who's actually using it?</li>
</ul>
</li>
</ul>
<p>We need to collectively scrutinize the 'common' components to ensure
things lives in the right place</p>
<br>
<br>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<title>org.eclipse.wst.command.env.core</title>
<link
rel="stylesheet"
type="text/css"
href="../sources/formate.css">
</head>
<body>
<p class="ueberschrift">CSS Tools</p>
<p>The css component contains the CSS editor, model, views, wizards,
etc. The component lead is David Williams.</p>
<ul>
<li>See : Reintroducing the Structured Source Editing family of
editors
<p><a href="http://eclipse.org/webtools/wst/components/sse/M2/m2.html">
http://eclipse.org/webtools/wst/components/sse/M2/m2.html</a></p>
</li>
</ul>
<ul>
<li>Current Test Plan
<p><a
href="http://eclipse.org/webtools/wst/components/css/M5/milestone_test_plan.html">
http://eclipse.org/webtools/wst/components/css/M5/milestone_test_plan.html</a></p>
</li>
</ul>
<ul>
<li>Current Milestone Plan
<p><a
href="http://eclipse.org/webtools/wst/components/css/M5/milestone_plan.html">
http://eclipse.org/webtools/wst/components/css/M5/milestone_plan.html</a></p>
</li>
</ul>
<p class="schema"><b>CSS UI</b></p>
<p>The css ui component has the API needed to support css regions in
editors.</p>
<p><code>StructuredTextViewerConfigurationCSS</code> can be used by
clients to access processors used to handle CSS regions. Processors
include: autoedit, content assist, text hover.</p>
<p class="schema"><b>CSS Core</b></p>
<p>The css core component has the API needed to support the css model.</p>
<p class="schema">Content type</p>
<p><code>ContentTypeIdForCSS</code> contains the content type id for
CSS. For more information, see: <code>org.eclipse.wst.css.core.contenttype</code></p>
<p class="schema">Content Model</p>
<p>The CSS content model includes content models for CSS. For more
information, see: <code>org.eclipse.wst.css.core.document</code></p>
<p class="schema">StructuredDocument regions</p>
<p>CSS StructuredDocument regions include various regions commonly found
in CSS documents. Structured document regions include: css declaration
delimiter, css selector separator, css declaration delimiter. For more
information, see: <code>org.eclipse.wst.css.core.model.parser</code></p>
<p class="schema">Partition Types</p>
<p>CSS partition types include various partition types found in CSS
documents. Partition types include: css style. For more information,
see: <code>org.eclipse.wst.css.core.text </code></p>
<p class="ueberschrift">Feature Matrix</p>
<p>The following table represents the features for our various source
editors that will play a role in our testing, according to the following
legend.</p>
<ul>
<li><b>Y - </b>Yes, should work, will be tested</li>
</ul>
<ul>
<li><b>P - </b>Planned for later, will not be tested this milestone</li>
</ul>
<ul>
<li><b>N - </b>No, no plans, does not work, will not be tested</li>
</ul>
<table
align="center"
border="1"
cellpadding="0"
cellspacing="2"
width="90%">
<caption align="bottom">Source Editing Feature Matrix</caption>
<tbody>
<tr>
<th style="text-align: left;"></th>
<th style="text-align: center;">CSS</th>
</tr>
<tr>
<td style="text-align: left;">Highlighting</td>
<td style="text-align: center;">Y</td>
</tr>
<tr>
<td style="text-align: left;">Semantic Highlighting</td>
<td style="text-align: center;">N</td>
</tr>
<tr>
<td style="text-align: left;">Content Assist</td>
<td style="text-align: center;">Y</td>
</tr>
<tr>
<td style="text-align: left;">Parameter/Attribute Hints</td>
<td style="text-align: center;">N</td>
</tr>
<tr>
<td style="text-align: left;">Document/Element Formatting</td>
<td style="text-align: center;">Y</td>
</tr>
<tr>
<td style="text-align: left;">Structured Selection</td>
<td style="text-align: center;">Y</td>
</tr>
<tr>
<td style="text-align: left;">Hover Info</td>
<td style="text-align: center;">N</td>
</tr>
<tr>
<td style="text-align: left;">Smart Edit</td>
<td style="text-align: center;">Y</td>
</tr>
<tr>
<td style="text-align: left;">Open On (hyperlinks)</td>
<td style="text-align: center;">Y</td>
</tr>
<tr>
<td style="text-align: left;">Mark Occurrences</td>
<td style="text-align: center;">N</td>
</tr>
<tr>
<td style="text-align: left;">Linked Edit</td>
<td style="text-align: center;">N</td>
</tr>
<tr>
<td style="text-align: left;">Find Element Occurrences</td>
<td style="text-align: center;">N</td>
</tr>
<tr>
<td style="text-align: left;">Validate as-you-type</td>
<td style="text-align: center;">N</td>
</tr>
<tr>
<td style="text-align: left;">Delimiter Highlighting (bracket
matching)</td>
<td style="text-align: center;">Y</td>
</tr>
<tr>
<td style="text-align: left;">Refactoring</td>
<td style="text-align: center;">N</td>
</tr>
<tr>
<td style="text-align: left;">Search Participant</td>
<td style="text-align: center;">P</td>
</tr>
<tr>
<td style="text-align: left;">Quick Fix/Assist</td>
<td style="text-align: center;">N</td>
</tr>
<tr>
<td style="text-align: left;">Property Sheet</td>
<td style="text-align: center;">Y</td>
</tr>
<tr>
<td style="text-align: left;">Outline View</td>
<td style="text-align: center;">Y</td>
</tr>
<tr>
<td style="text-align: left;">Folding</td>
<td style="text-align: center;">N</td>
</tr>
<tr>
<td style="text-align: left;">Annotation Navigation (go to next
annotation)</td>
<td style="text-align: center;">Y</td>
</tr>
<tr>
<td style="text-align: left;">External Files</td>
<td style="text-align: center;">Y</td>
</tr>
<tr>
<td style="text-align: left;">Toggle Comment</td>
<td style="text-align: center;">N</td>
</tr>
<tr>
<td style="text-align: left;">Quick Type Hierarchy View</td>
<td style="text-align: center;">N</td>
</tr>
<tr>
<td style="text-align: left;">Quick Outline</td>
<td style="text-align: center;">N</td>
</tr>
<tr>
<td style="text-align: left;">Task Tags in Source Comments</td>
<td style="text-align: center;">P</td>
</tr>
</tbody>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta
http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1">
<title>No description</title>
</head>
<body>
<h1>Currently no description about the plugin</h1>
</body>
</html>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment