// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。

WorkbenchWindowAdvisorのサブクラスでpreWindowShellCloseを以下のようにOverrideする。

 public boolean preWindowShellClose() {
   // 複数上がってる場合はダイアログ出さないで閉じちゃう。
   if (getWorkbench().getWorkbenchWindowCount() > 1) {
       return true;
   }
   // the user has asked to close the last window, while will cause the
   // workbench to close in due course - prompt the user for confirmation
   IPreferenceStore store = ApplicationsPlugin.getDefault()
           .getPreferenceStore();
   // この設定値("EXIT_PROMPT_ON_CLOSE_LAST_WINDOW")をみて、ダイアログを出すかを決定する。
   boolean promptOnExit = store
           .getBoolean("EXIT_PROMPT_ON_CLOSE_LAST_WINDOW");
  
   // storeの設定がtrueだったら
   if (promptOnExit) {
       String message;
       String productName = null;
       IProduct product = Platform.getProduct();
       if (product != null) {
           productName = product.getName();
       }
       if (productName == null) {
           message = "Exit application?";
       } else {
           message = NLS.bind("Exit {0}?", productName);
       }
       MessageDialogWithToggle dlg = MessageDialogWithToggle
               .openOkCancelConfirm(getWindowConfigurer().getWindow()
                       .getShell(), "終了の確認", message, "常にプロンプトなしで終了",
                       false, null, null);
 
       if (dlg.getReturnCode() != IDialogConstants.OK_ID) {
           return false;
       }
       if (dlg.getToggleState()) {
           // チェックボックスを付けた(はずした?)とき、falseで保存する。
           store.setValue("EXIT_PROMPT_ON_CLOSE_LAST_WINDOW", false);
           ApplicationsPlugin.getDefault().savePluginPreferences();
       }
   }
   return true;
 }

*** 上で、チェックボックスなしのダイアログを使う [#t1258a6c]
上のやり方は、Eclipse3.1のIDEをパクリました。「常にプロンプトなしで終了」チェックボックスを出さないダイアログは以下でよいと思います。
 return MessageDialog.openConfirm(getWindowConfigurer().getWindow()
  .getShell(), "終了の確認", message);


ちなみに、http://www.eclipsecon.org/2005/tutorials.php によるとRCPのStartupからShutdownまでに呼ばれるメソッド((フックできるメソッドとでも言う?))は以下のようになっています。

#ref(pic.png)

----
この記事は
#vote(おもしろかった[2],そうでもない[0])
#vote(おもしろかった[3],そうでもない[0])

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS