2011-07-28 21 views
2

私は牽引Eclipseプラグインを開発していますが、ファイルに関連付けられているエディタは、私は次の問題を抱えています。私は、ファイル拡張子 - エディタ - パースペクティブの間の関連付けを行いたいと思います。私が意味するEclipseプラグイン拡張と展望

私は視点1でファイルの拡張子.XXXを開いた場合、それは、エディタAを使用していますが、私は視点2に同じファイル拡張子.XXXを開いた場合、それはB.

はそれが可能であるエディタを使用しています?それ以来、私はランチャーを使用しましたが、今はもっと差別化が必要です。

ありがとうございました。

+1

これはパースペクティブのUIガイドラインに準拠していますか?私はこれがユーザーが期待しているとは確信していません、私は同じアクションから、別のエディタを見たことがない、現在の視点に基づいています。また、私は多くの視点を自分で作り出しています。それぞれのエディターでどのエディターを使用するかはどのように選択すればよいでしょうか? –

+0

私は2つのプラグインを持っています(プラグインごとに1つのパースペクティブ)。 1つはgefエディタでdessign用であり、もう1つはdessignを使用して開発するためのものです。あるユーザは両方のプラグインをインストールし、両方のエディタで同じファイルを開く必要があります(デッサンの観点か開発者の観点かに依存します) – Rafael

+0

これはJavaScriptエディタには意味があります。質問された人のために投票した。現在は本当に答えられていません。 –

答えて

1

私はあなたのアプローチを再考し、WindowBuilderからいくつかの手がかりを取ることをお勧めします:タブ付きエディタを開くファイルタイプに1つのエディタを関連付けます。 2番目のプラグインが追加された場合は、同じエディタで別のタブを作成するようにしてください。

+0

お返事ありがとうございました。 – Rafael

4

(申し訳ありませんが、これはそれらの「それをしない!」非答えの一つです。:))

コメントで述べたように、私は現在に応じて、別のエディタを開くに対してお勧めします視点。私はこれがユーザーの期待に反するもので、直感的ではない結果をもたらすと思います。私自身の見通しを作成するとき。

たとえば、EclipseのXML/Plug-inマニフェストエディタのパスに進んでください。一番下のタブは、任意のパースペクティブの選択または構成とは無関係に、異なるビューの中から選択することを可能にする。

Eclipse plugin-in manifest editor

2

私はこれがデフォルトエディタが開い視点に基づいて、同じファイルに対して異なること持つには少し奇妙に思えることに同意しますが、ここにあなたがそれを行うことができる方法です。

  1. 二つの新しいコンテンツタイプの拡張子
  2. を作成して第一の新しいコンテンツタイプ
  3. のデフォルトのエディタとして、あなたの最初のエディタを登録し、各コンテンツについては第二の新しいコンテンツタイプ
  4. のデフォルトのエディタとして、あなたの第二のエディタを登録あなたは「コンテンツタイプ記述者」を持っています。これらの記述クラスでは、現在のパースペクティブIDのアクティブなワークベンチページをチェックし、期待値と一致する場合は、VALID、パースペクティブIDが一致しない場合はINVALIDを返します。
  5. 両方のエディタで、これらのエディタをファイル拡張子またはファイル名ではなくコンテンツタイプに関連付ける必要があります。
  6. 開いているパースペクティブに応じて一度に1つのコンテンツタイプのみが一致します。コンテンツタイプの1つが「デフォルト」であることを確認して、ユーザーが他のパースペクティブを開いている場合に常に一致させるようにします。

更新#1は、このためのいくつかのonlinetutorialsがありますいくつかの例に

を追加しました。しかし、ここでは、どのような作業が必要なのかを簡単に見えるようにするためのコードの例を示します。ここでは次に、表現部クラスでは、あなたのマッチングロジックを行うだろう

<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> 

(あなたがそれらの2が必要になります)、あなたのコンテンツタイプを宣言する方法です。そして、あなたがこのようなコンテンツタイプの代わりに、ファイル名や拡張子を参照するエディタ拡張ポイントで:

<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> 
+0

関連文書をリンクしてください。たとえば、「コンテンツタイプ記述子」はどのようなもので、コンテンツタイプは何ですか?私はただ知っている point = "org.eclipse.ui.editors"> –

+0

私はいくつかのリンクを追加し、ContentTypeDescriberについては、拡張ポイントdocは実装する必要のあるクラスを提供し、ITextContentDescriberはあなたが望むものです実装する。しかし、ファイルに(XMLのdoctypeなどの)非常に固有の署名がない限り、正しいコンテンツであるかどうかを判断するのは難しい場合があります。 – gamerson

+0

ファイルはJavaScriptの.jsファイルです。問題は、Webやサーバー側(Node.js、MongoDBなど)のコンテキストにある可能性があります。 –

0

その他のオプションは、プログラム

Eclipse RCP: programmatically associate file type with Editor?

に示したJavaコードとファイルタイプの関連付けを変更することができます

次に、パースペクティブ変更イベントでそのコードをどのように実行するかという質問だけがあります。

関連する問題