2017-01-19 9 views
0

私はトレーサビリティを可能にするEclipseプラグインに取り組んでいます。私は、トレースされた項目が変更(削除、名前変更、または編集)されるたびにユーザーに通知する通知システムを実装しています。その目的のためにIResourceChangeListenerを実装しましたが、Java要素に必要なすべてのサポートを提供しません。IResourceDeltaからIJavaElementDeltaオブジェクトを取得する方法はありますか?

たとえば、Javaメソッドの名前を.javaファイルの名前に変更すると、編集されたファイルのみが表示されますが、このメソッドについての情報も表示したいと考えています。私はこれがIElementChangedListenerを実装することで実現できることを知っていますが、その周りには何か方法がありますか?私は本当に2つのリスナー(他のファイルのためのResourceListenerとJava要素のElementChangedListenerのみ)を実装する必要がありますか、何とかIResourceDeltaからIJavaElementDelta(通常ElementChangedListenerから取得)を取得できますか?ありがとう!

答えて

2

これらの2つのデルタは完全に無関係です。両方のリスナーを使用する必要があります。

+0

私はそう思っていましたが、あなたの答えではないかどうかを調査し続けました。どうもありがとうございました! –

+0

完全に同意します。 2番目のリスナーを実装するためにいくつかの行を節約しようとすると、ほとんどのorg.eclipse.jdt.internal.core.DeltaProcessorを再実装する必要があります。これはリソース変更イベントを受け取り、2kLOC +でIJavaElementDeltasを送出します。 –

0

これをチェックしてみてくださいlink example 5。いくつかの方法は、この説明であり:

は 対応IJavaElementDelta S内にIResourceDeltaとその子に変換します。 デルタがクラスパス上のリソースに対応するかどうかを返します。 クラスパス上のリソースでない場合は、このメソッドの送信者によって、非Javaの リソースとして追加されます。

だから私はそれが可能かもしれないと思います。

リンクリードhereあなたはよくチェックする必要があります。方法public void processJavaDelta(IJavaElementDelta delta)

+0

この例のコメントは 'IResourceDelta'について言及していますが、コードは' IResourceDelta'とは何の関係もないようです。 –

+0

そうです。前にこの例を見てきましたが、IResourceDeltaへの参照はありません。ドキュメントは非常に奇妙ですが、私はそれが必要なものを正確に行うと言いますが、どこでもIResourceDeltaの兆候はありません。 –

+0

@DusanKalanjリンクはEclipseのCheコードにもあります。これは、「通常の」Eclipseとは異なる製品です。どのくらいの共通点があるのか​​よくわかりません。 –

関連する問題