2012-05-14 16 views
1

私はプラグインを開発中です。プラグインは外部ツールを実行します。ユーザーがEclipseを終了しようとすると、プロセスがまだ実行中のときに確認ダイアログを表示する必要があります。 実行中のプロセスがあります。本当に退室したいですか?Noをクリックすると、Eclipseが終了しないことがあります。Eclipseをシャットダウンして終了を停止することができます

私はちょうど見つけた、どのように終了するには、コマンドをクリーンアップするために終了します。 (プラグインのアクティベータにはstop()メソッドがあります)しかし、Eclipseは必然的に終了します。

答えて

1

1人の同僚が問題の解決に手伝ってくれました。このソリューションは実際には簡単です。私が必要とするのは、アクティベータに登録されたworgbenchリスナーだけです。リスナーには、イベントの前後の2つのメソッドがあります。最初のものはブール値を返します。 trueを返した場合、Eclipseは終了します。さもなければ、終了手続きは中断され、ユーザは彼の仕事の中で続けることができる。アクティベータクラスで

public void start(BundleContext context) { 
    ... 
    IWorkbench iwb = PlatformUI.getWorkbench(); 
    WBListener wbl = new ...; 
    iwb.addWorkbenchListener(wbl); 
    ... 
} 

クラスWBListenerのコード:すべてです

import org.eclipse.ui.IWorkbench; 
import org.eclipse.ui.IWorkbenchListener; 

public class WBListener implements IWorkbenchListener { 

    @Override 
    public void postShutdown(IWorkbench w) { 
    } 

    @Override 
    public boolean preShutdown(IWorkbench w, boolean b) { 
     boolean exitEclipse = ...; //get it somehow 

     return exitEclipse; 
    } 
} 

関連する問題