- 追加された行はこの色です。
- 削除された行はこの色です。
// 下階層用テンプレート
#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(おもしろかった[1],そうでもない[0])
#vote(おもしろかった[2],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}