0

RCP開発者の皆様、こんにちは。

ECLIPSE RCPアプリケーションに実装postWindowClose()したいと考えています。

このメソッドをコーディングする前に、アプリケーションを閉じたときにメソッドが呼び出されるかどうかを確認するための簡単なテストを行ったので、次のようにしました。

import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchWindowAdvisor;


public class MainWindowControl extends WorkbenchWindowAdvisor{

    public MainWindowControl(IWorkbenchWindowConfigurer configurer) {
        super(configurer);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void postWindowClose() {
        // TODO Auto-generated method stub
        super.postWindowClose();
        System.out.println("close");
    }

}

close:がECLIPSEコンソールに表示されることを期待していますが、アプリケーションを閉じた後も空白のままです。

必要なすべてのプラグインが追加され、アプリケーションの起動または終了時にエラーは発生しません。

それで、何か足りないのですか?

このメソッドを実装する理由は次のとおりです。

  1. メッセージ ボックス :Are you sure you want to close the application
  2. 実行中のすべてのスレッド、アプリケーションのアップロード ファイルを強制終了し、実行中のアプリケーションを閉じてもアップロードが続行されます。アプリケーションを閉じるときにそれらを中止したい。

編集 :

私のライフサイクルクラス:

package upload.center.util;

import org.eclipse.e4.ui.workbench.lifecycle.PostContextCreate;
import org.eclipse.e4.ui.workbench.lifecycle.PreSave;

public class WindowLifeCycle {

 @PostContextCreate
 public void postContextCreate()
  {
    // TODO start up code here
     System.out.println("open");
  }

@PreSave
  public void preSave()
  {
     // TODO add shutdown code here
    System.out.println("close");
  }
}

私の plugin.xml :

<product ....
<property
           name="windowLifeCycle"
           value="bundleclass://UploadCenter.Source/upload.center.util.WindowLifeCycle">
     </property>
 ...</product>

私が十分に明確であることを願っています。

イスマイル

4

1 に答える 1

2

純粋な Eclipse 4 (e4) アプリケーションの場合、ワークベンチ ウィンドウ アドバイザ (およびその他のアドバイザ) は使用されません。ライフサイクル クラスのメソッドを使用して、@PreSaveシャットダウン中にコードを実行します。

public class LifeCycle
{
  @PostContextCreate
  public void postContextCreate()
  {
    // TODO start up code here
  }

  @PreSave
  public void preSave()
  {
     // TODO add shutdown code here
  }
}

の製品定義でライフサイクル クラスを宣言しますplugin.xml

<extension
     id="product"
     point="org.eclipse.core.runtime.products">
  <product
        name="%product.name"
        application="org.eclipse.e4.ui.workbench.swt.E4Application">
      <property
           name="lifeCycleURI"
           value="bundleclass://plugin-id/package.LifeCycle">
     </property>
     .... more properties ...

詳しくはこちら

于 2014-02-26T10:04:25.667 に答える