Eclipse3.4(WTP3.0)でのJSPエディタの補完方法がわかんない。。。

以前書いたショートカットキーが効かない問題はクリーンビルドしたらなんかうまくいきました。

以下のようなメッセージが出てうまくインストールできない問題は、artifacts.xmlとcontent.xmlを消してBuild Siteしたらうまくいきました。

An error occurred during provisioning.
Error reading signed content.
The file "C:\eclipse-jee-ganymede-win32\eclipse\plugins\org.seasar.sastrutsplugin_0.0.9.jar" does not exist

で、Eclipse3.4(WTP3.0)でのJSPエディタの補完方法ですが、わかりません。。。

Eclipse3.3(WTP2.0)なら以下でうまくいきます。

   <extension
         point="org.eclipse.wst.sse.ui.editorConfiguration">
      <sourceViewerConfiguration
            class="org.seasar.sastrutsplugin.ui.editor.configuration.JSPConfiguration"
            target="org.eclipse.jst.jsp.core.jspsource.source">
      </sourceViewerConfiguration>
   </extension>

調べていたらorg.eclipse.wst.sse.ui.internal.ExtendedConfigurationBuilder#getConfigurationでは、
getConfigurationsでかえってきたListの最初の要素を返している。targetIDがorg.eclipse.jst.jsp.core.jspsource.source。

このメソッド自体はorg.eclipse.wst.sse.ui.internal.StructuredTextEditor.createSourceViewerConfiguration()から呼ばれる。

拡張ポイントを調べていってclass属性にかかれたクラスのインスタンス化をおこなっている。

	/**
	 * Returns a configuration for the given extensionType matching the
	 * targetID, if one is available. If more than one configuration is
	 * defined, the first one found is returned.
	 * 
	 * @param extensionType
	 * @param targetID
	 * @return a configuration object, if one was defined
	 */
	public Object getConfiguration(String extensionType, String targetID) {
		if (targetID == null || targetID.length() == 0)
			return null;
		List configurations = getConfigurations(extensionType, targetID);
		if (configurations.isEmpty())
			return null;
		return configurations.get(0);
	}

Eclipse3.3ならgetConfigurationsでかえってくるのは自作したコンフィギュレーションクラス1つだけ。
Eclipse3.4の場合、これに加えてorg.eclipse.wst.jsdt.web.support.jsp.JSDTStructuredTextViewerConfigurationJSPも返ってくる。
で最初の要素はJSDTStructuredTextViewerConfigurationJSPになっている。これが原因かな。

org.eclipse.wst.jsdt.web.support.jsp_1.0.0.v200804302218.jar内にあるplugin.xmlでは以下のようになっている。

<extension point="org.eclipse.wst.sse.ui.editorConfiguration">
  <sourceViewerConfiguration class="org.eclipse.wst.jsdt.web.support.jsp.JSDTStructuredTextViewerConfigurationJSP" target="org.eclipse.jst.jsp.core.jspsource.source" /> 

SpringIDE
https://anonsvn.springframework.org/svn/spring-ide/trunk/org.springframework.ide.eclipse.beans.ui.editor/plugin.xml
を見てみると以下のようになっている。これはXMLの場合だけど。

	<extension point="org.eclipse.core.runtime.contentTypes">
		<content-type id="beansConfig" name="%contentTypeName"
			base-type="org.eclipse.core.runtime.xml" 
			priority="normal"
			default-charset="UTF-8">
			<describer
				class="org.eclipse.core.runtime.content.XMLRootElementContentDescriber">
				<parameter name="element" value="beans" />
			</describer>
		</content-type>
	</extension>

	<extension-point id="namespaces" name="%contributionName"
		schema="schema/namespaces.exsd" />

	<extension point="org.eclipse.wst.sse.ui.editorConfiguration">
		<sourceViewerConfiguration
			class="org.springframework.ide.eclipse.beans.ui.editor.BeansStructuredTextViewerConfiguration"
			target="org.springframework.ide.eclipse.beans.ui.editor.beansConfig" />
		<contentOutlineConfiguration
			class="org.springframework.ide.eclipse.beans.ui.editor.outline.BeansContentOutlineConfiguration"
			target="org.springframework.ide.eclipse.beans.ui.editor.beansConfig" />
	</extension>

	<extension point="org.eclipse.wst.sse.core.modelHandler">
		<modelHandler
			id="org.springframework.ide.eclipse.beans.ui.editor.handler.beansConfig"
			default="false"
			associatedContentTypeId="org.springframework.ide.eclipse.beans.ui.editor.beansConfig"
			class="org.springframework.ide.eclipse.beans.ui.editor.BeansModelHandler">
		</modelHandler>
	</extension>

JBoss Tools
http://anonsvn.jboss.org/repos/jbosstools/trunk/as/plugins/org.jboss.ide.eclipse.as.ui.mbeans/plugin.xml
も同じ感じですね。

contentTypesやmodelHandlerも書かなきゃいけないのかな。JSPエディタの補完をやっているサンプルがあればいいのだが。。。