<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="../../../../..//default_style.css" type="text/css">
<link rel="stylesheet" href="../../../../..//webtools/wtp.css" type="text/css">
<title>Editor Configuration Migration</title>
<style>
<!--
p, ol, ul {
      margin-bottom: 0em;
}
ol, ul {
      margin-top: 0em;
}
-->
</style>
</head>
<body>
<table width="100%" cellspacing="5" cellpadding="2" border="0">
	<tbody>
		<tr>
			<td width="60%" align="left"><font class="indextop">Editor
			Configuration Migration</font> <br>
			<font class="indexsub">structured source editing (sse) component</font></td>
			<td width="40%"><img width="120" hspace="50" height="86"
				align="middle" src="http://eclipse.org//images/Idea.jpg"></td>
		</tr>
	</tbody>
</table>
<table border=1>
	<tr>
		<th>Date</th>
		<th>Revision info</th>
	</tr>
	<tr>
		<td>9/19/2005</td>
		<td>Updated migration info for StructuredTextViewerConfiguration#setDeclaringID</td>
	</tr>
	<tr>
		<td>9/07/2005</td>
		<td>Initial contribution</td>
	</tr>
</table>
<table width="100%" cellspacing="5" cellpadding="2" border="0">
	<col width="16">
	<col width="*">
	<tbody>
		<tr>
			<td valign="top" align="right">&nbsp;</td>
			<td valign="top"><a name="top"></a></td>
		</tr>
		<tr>
			<td valign="top" bgcolor="#0080c0" align="left" colspan="2"><b><font
				face="Arial,Helvetica" color="#ffffff">Overview</font></b></td>
		</tr>
		<tr>
			<td valign="top" align="right">&nbsp;</td>
			<td valign="top">
			<p>This document is for clients who are already using the provisional
			extendedconfiguration extension point and
			StructuredTextViewerConfiguration</p>
			</td>
		</tr>
		<tr>
			<td valign="top" bgcolor="#0080c0" align="left" colspan="2"><b><font
				face="Arial,Helvetica" color="#ffffff">Migration Table</font></b></td>
		</tr>
		<tr>
			<td valign="top" align="right">&nbsp;</td>
			<td valign="top">
			<table border=1>
				<tr>
					<th>Code</th>
					<th>Old Code</th>
					<th>New Code</th>
				</tr>
				<tr>
					<td><b>editor configuration extension point</b></td>
					<td></td>
					<td></td>
				</tr>
				<tr>
					<td></td>
					<td><pre>
&lt;extension point="org.eclipse.wst.sse.ui.extendedconfiguration"&gt;</pre></td>
					<td><pre>
&lt;extension point="org.eclipse.wst.sse.ui.editorConfiguration"&gt;</pre></td>
				</tr>
				<tr>
					<td></td>
					<td><pre>
&lt;configuration
	type="textviewerconfiguration"
	class=".."
	target="..." /&gt;</pre></td>
					<td><pre>
&lt;sourceViewerConfiguration
	class=".."
	target="..." /&gt;</pre></td>
				</tr>
				<tr>
					<td></td>
					<td><pre>
&lt;configuration
      type="contentoutlineconfiguration"
      class=".."
      target="..." /&gt;</pre></td>
					<td><pre>
&lt;contentOutlineConfiguration
	class=".."
	target="..." /&gt;</pre></td>
				</tr>
				<tr>
					<td></td>
					<td><pre>
&lt;configuration
	type="propertysheetconfiguration"
	class=".."
	target="..." /&gt;</pre></td>
					<td><pre>
&lt;propertySheetConfiguration
	class=".."
	target="..." /&gt;</pre></td>
				</tr>
				<tr>
					<td></td>
					<td><pre>
&lt;configuration
	type=".."
	class=".."
	target="..." /&gt;</pre></td>
					<td><pre>
&lt;provisionalConfiguration
	type=".."
	class=".."
	target="..." /&gt;</pre></td>
				</tr>
				<tr>
					<td></td>
					<td><pre>
&lt;definition
	type=".."
	value=".."
	target="..." /&gt;</pre></td>
					<td><pre>
&lt;provisionalDefinition
	type=".."
	value=".."
	target="..." /&gt;</pre></td>
				</tr>
				<tr>
					<td><b>StructuredTextViewerConfiguration and its subclasses</b></td>
					<td></td>
					<td></td>
				</tr>
				<tr>
					<td><b>StructuredTextViewerConfiguration field variables</b></td>
					<td></td>
					<td></td>
				</tr>
				<tr>
					<td>STVC#configuredContentTypes</td>
					<td>located in STVC</td>
					<td>moved to subclass</td>
				</tr>
				<tr>
					<td>STVC#fCorrectionAssistant</td>
					<td>located in STVC</td>
					<td>moved to subclass</td>
				</tr>
				<tr>
					<td>STVC#fReconciler</td>
					<td>located in STVC</td>
					<td>moved to subclass</td>
				</tr>
				<tr>
					<td>STVC#editorPart</td>
					<td>located in STVC</td>
					<td>deleted since it did not look like it was really needed</td>
				</tr>
				<tr>
					<td>STVC#fHighlighter</td>
					<td>located in STVC</td>
					<td>deleted since getHighlighter was replaced by
					getLineStyleProviders</td>
				</tr>
				<tr>
					<td>STVC#fResource</td>
					<td>located in STVC</td>
					<td>deleted since it did not look like it was really needed</td>
				</tr>
				<tr>
					<td>STVC#SSE_EDITOR_ID</td>
					<td>located in STVC</td>
					<td>deleted since it did not look like it was really needed</td>
				</tr>
				<tr>
					<td>STVC#SSE_MODEL_ID</td>
					<td>located in STVC</td>
					<td>deleted since it did not look like it was really needed</td>
				</tr>
				<tr>
					<td>STVC#ID</td>
					<td>located in STVC</td>
					<td>deleted and moved to
					ExtendedConfigurationBuilder#SOURCEVIEWERCONFIGURATION</td>
				</tr>
				<tr>
					<td>STVC#setDeclaringID</td>
					<td>located in STVC</td>
					<td>deleted and replaced through setInitializationData (STVC now
						implements <a href="http://help.eclipse.org/help31/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/runtime/IExecutableExtension.html">IExecutableExtension</a> and by doing so, initialization
						data is set automatically)</td>
	            </tr>
				<tr>
					<td><b>StructuredTextViewerConfiguration preferences/editor</b></td>
					<td></td>
					<td></td>
				</tr>
				<tr>
					<td>STVC's preference store (constructor, fPreferenceStore,
					setPreferenceStore()</td>
					<td>set the preference store in STVC by either passing in a
					preference store in the constructor or calling <code>setPreferenceStore</code>.</td>
					<td>no longer way to set the preference store in STVC. By default,
					the preference store is the same one used in StructuredTextEditor</td>
				</tr>
				<tr>
					<td>STVC#setEditorPart</td>
					<td>set editor part for configuration</td>
					<td>deleted because it was not really needed</td>
				</tr>
				<tr>
					<td><b>StructuredTextViewerConfiguration Content Assist</b></td>
					<td></td>
					<td></td>
				</tr>
				<tr>
					<td>STVC#setContentAssistProcessor(IContentAssistant,
					IContentAssistProcessor, partitionType)</td>
					<td>adds contentassistprocessor to content assist for partition
					type and keeps list of content assist processors added in
					fContentAssistProcessors</td>
					<td>deleted (just call setContentAssistProcessor directly on
					contentassistant)</td>
				</tr>
				<tr>
					<td>STVC#configureOn()/updateForResource()</td>
					<td>updates all content assist processors with new IResource</td>
					<td>deleted (if you need resource, get it from the document that's
					in textviewer which is passed in when you compute)</td>
				</tr>
				<tr>
					<td>STVC#unConfigure()</td>
					<td>releases any content assist processors that need releasing</td>
					<td>deleted (content assistant will handle disposing of content
					assist processors)</td>
				</tr>
				<tr>
					<td><b>StructuredTextViewerConfiguration Highlighter</b></td>
					<td></td>
					<td></td>
				</tr>
				<tr>
					<td>STVC#getHighlighter()</td>
					<td>creates default IHighlighter with intitial setup</td>
					<td>deleted (Highlighter is now created in StructuredTextViewer and
					getLineStyleProviders is called to get specific line style
					providers)</td>
				</tr>
				<tr>
					<td>subclass#getHighlighter()</td>
					<td>calls super.getHighlighter; adds necessary line style providers
					to Highlighter</td>
					<td>deleted (replaced by getLineStyleProviders)</td>
				</tr>
				<tr>
					<td>STVC#getLineStyleProviders(ISourceViewer sourceViewer, String
					partitionType)</td>
					<td>didnt exist</td>
					<td>returns null</td>
				</tr>
				<tr>
					<td>subclass#getLineStyleProviders(ISourceViewer sourceViewer,
					String partitionType)</td>
					<td>didnt exist</td>
					<td>return list of line style providers applicable to partition
					type</td>
				</tr>
				<tr>
					<td><b>StructuredTextViewerConfiguration Reconciler</b></td>
					<td></td>
					<td></td>
				</tr>
				<tr>
					<td>STVC#createValidatorStrategy()</td>
					<td>creates extensible validator strategy to be used by reconciler
					created by subclasses</td>
					<td>deleted (code was moved into reconciler so it knows to create
					extensible validator strategy)</td>
				</tr>
				<tr>
					<td>STVC#unConfigure()</td>
					<td>uninstall reconciler</td>
					<td>StructuredTextViewer uninstalls reconciler</td>
				</tr>
				<tr>
					<td><b>StructuredTextViewerConfiguration Text
					Hover/InformationControlCreator/InformationPresenterControlCreator</b></td>
					<td></td>
					<td></td>
				</tr>
				<tr>
					<td>STVC#getTextHovers()</td>
					<td>returns a list of all text hovers for StructuredTextEditors</td>
					<td>deleted</td>
				</tr>
				<tr>
					<td>STVC#getInformationPresenterControlCreator()</td>
					<td>returns an informationpresentercontrolcreator to be used in
					getInformationPresenter</td>
					<td>deleted</td>
				</tr>
				<tr>
					<td>subclass#getTextHover()</td>
					<td>call getTextHovers() to retrieve all text hovers and figure out
					which one to use</td>
					<td>call
					SSEUIPlugin.getDefault().getTextHoverManager().getTextHovers() to
					get list of hovers</td>
				</tr>
				<tr>
					<td>subclass#getInformationPresenter()</td>
					<td>call getInformationPresenterControlCreator to get the control
					creator to use with the information presenter</td>
					<td>copy deleted getInformationPresenterControlCreator to your own
					subclass</td>
				</tr>
				<tr>
					<td><b>StructuredTextViewerConfiguration Correction Assist</b></td>
					<td></td>
					<td></td>
				</tr>
				<tr>
					<td>STVC#getCorrectionAssistant()</td>
					<td>super creates correction assistant with initialization then
					subclass would add necessary processors</td>
					<td>super returns null, subclass needs to create new instance,
					initialize, add processors</td>
				</tr>
			</table>
			</td>
		</tr>
	</tbody>
</table>
</body>
</html>
