aqubi+shin1

Recent site activity

プロジェクト削除/移動などのタイミングを取得

Eclipseプラグインのプロジェクトにて、プロジェクトの削除のタイミングどうやってとるんだろぅ?とソースを眺めていたら、 WorkspaceのaddLifecycleListenerのリスナーでとることが出来ました。

ILifecycleListener lifecycleListener = new ILifecycleListener() {  
        public void handleEvent(LifecycleEvent event) throws CoreException {  
                if (event.kind == LifecycleEvent.PRE_PROJECT_DELETE  
                                && event.resource == getProject()) {  
                        //プロジェクト削除時の処理  
                }  
        }  
};  
((Workspace)getProject().getWorkspace()).addLifecycleListener(lifecycleListener); 

LifecycleEvent.kind には

public static final int PRE_PROJECT_CLOSE = 0x01;  
public static final int PRE_PROJECT_CHANGE = 0x02;  
public static final int PRE_PROJECT_COPY = 0x04;  
public static final int PRE_PROJECT_CREATE = 0x08;  
  
public static final int PRE_PROJECT_DELETE = 0x10;  
public static final int PRE_PROJECT_OPEN = 0x20;  
public static final int PRE_PROJECT_MOVE = 0x40;  
  
public static final int PRE_LINK_COPY = 0x100;  
public static final int PRE_LINK_CREATE = 0x200;  
public static final int PRE_LINK_DELETE = 0x400;  
public static final int PRE_LINK_MOVE = 0x800

ってのが入ってくるようななので、作成、移動、コピーもろもろ・・・取れてくることが出来るってことかな。

リスナーを追加するところがWorkspaceなので、project単位の場合には どのプロジェクトか・・・判断する必要があります。
プロジェクトにはこぅいぅメソッドないんかいなぁ?

あと、このリスナーのremoveのメソッドが見つからず。
なので、project毎に追加したりするようなものじゃないんでしょうな。