開いているパースペクティブに基づいて同じファイルに対してデフォルトのエディターを異なるものにするのは少し奇妙に思えることに同意しますが、これを行う方法を次に示します。
- 2 つの新しいコンテンツ タイプ拡張機能を作成する
- 最初のエディターを最初の新しいコンテンツ タイプのデフォルト エディターとして登録する
- 2 番目の新しいコンテンツ タイプのデフォルト エディターとして 2 番目のエディターを登録する
- コンテンツ タイプごとに、「コンテンツ タイプ記述者」があります。これらの記述子クラスでは、アクティブなワークベンチ ページで現在のパースペクティブ ID をチェックし、期待値と一致する場合は VALID を、パースペクティブ ID が一致しない場合は INVALID を返します。
- 両方のエディターについて、これらのエディターをファイル拡張子またはファイル名ではなくコンテンツ タイプに関連付ける必要があります。
- 現在、開いているパースペクティブに応じて、一度に 1 つのコンテンツ タイプのみが一致します。ユーザーが他のパースペクティブを開いている場合に常に一致するように、コンテンツ タイプの 1 つが「デフォルト」であることを確認してください。
更新#1はいくつかの例を追加しました
これにはいくつかのオンライン チュートリアルがあります。ただし、必要な作業を簡単に確認できるように、コード例をいくつか示します。コンテンツ タイプを宣言する方法は次のとおりです (そのうちの 2 つが必要です)。
<plugin>
<extension
point="org.eclipse.core.contenttype.contentTypes">
<content-type
base-type="org.eclipse.core.runtime.xml"
describer="com.liferay.ide.core.FirstContentTypeDescriber"
id="com.liferay.ide.core.contentType1"
name="First Content Type"
priority="normal">
</content-type>
</extension>
</plugin>
次に、Describer クラスで、マッチング ロジックを実行します。次に、エディター拡張ポイントで、次のようにファイル名または拡張子の代わりにコンテンツ タイプを参照します。
<extension
point="org.eclipse.ui.editors">
<editor
class="com.liferay.ide.ui.FirstEditor"
default="false"
id="com.liferay.ide.ui.editor1"
name="My First Editor">
<contentTypeBinding
contentTypeId="com.liferay.ide.core.firstContentType">
</contentTypeBinding>
</editor>
</extension>