2016-06-22 12 views
0

IResourceChangeListenerを使用すると、ある場所から別の場所にプロジェクトが移動したかどうかを検出できないようです。 MoveProjectOperation/new/path/to/project/old/path/to/projectから、プロジェクトの場所を変更する場合たとえばプロジェクトが新しい場所に移動したときを検出する方法

、イベントの詳細は、次のようになります。

name = project-name 
kind = CHANGE 
flags = DESCRIPTION 
movedFromPath = null 
movedToPath = null 
location = /new/path/to/project 

しかし、プロジェクトの説明は、いくつかのために変更されたときに、同じイベントの詳細が送信されます他の理由。

IResourceDelta::getFlags()forum postのJavadocはそこMOVED_FROMフラグであり、getMovedFromPath()リソースをから移動した場所のパスを返すことヒントを与えます。しかし、私はそのような出来事を見ませんでした。

プロジェクトが移動されたかどうかを知る方法はありませんか、何か不足していますか?回避策がある場合は、私も頭にうれしいです。

+0

これらの場所は作業領域外にあるため、作業領域の論理的な場所は変更されませんか? –

+0

はい、場所はワークスペースの外にあるかもしれませんが、ワークスペース内にあるプロジェクトが外に出た場合もあります。 –

答えて

0

私は回避策を見つけたと思います。現在のプロジェクトの説明(IProjectDescription)のスナップショットを維持することです。プロジェクトの説明には、プロジェクトの場所も含まれます。

移動検出コードが開始され、新しいプロジェクトが作成されるたびにスナップショットを更新する必要があります。

質問で説明したDESCRIPTION変更イベントが発生するたびに、project.getLocationURI()とスナップショットのプロジェクト説明の場所を比較できます。それらが異なる場合、プロジェクトは移動されました。さもなければ、興味深い変化が起こった。

関連する問題