シェルを処分するための一般的な方法を探しています。
メインアプリケーションメニュークリック次のシーケンスを実行します
DialogHandler Class =(My Application Base GUIクラスを実行します)
@Override
public Object execute(final ExecutionEvent event) throws ExecutionException {
if (dlg == null){
try {
AbstractAIFApplication app = AIFDesktop.getActiveDesktop().getCurrentApplication();
session = (TCSession) app.getSession();
TCUserService userService = session.getUserService();
AplotVersion.negotiateVersion(userService);
AplotQueryCapabilities.initialize(userService);
shell = HandlerUtil.getActiveWorkbenchWindowChecked(event).getShell();
dlg = new AplotBaseDialog(shell, session);
}
catch (Exception ex) {
MessageBox.post(HandlerUtil.getActiveWorkbenchWindowChecked(event).getShell(), ex, true);
}
}
dlg.open();
return null;
}// end execute()
質問。DialogHandlerでDialogを開いているので、そのクラスで破棄する必要がありますか?
while(!shell.isDisposed()){
if(!display.readAndDispatch())
display.sleep();
}
display.dispose();
私のGUI基本クラスAplotBaseDialog=(TitleAreaDialogを拡張します)
コンストラクターは、DialogHandlerクラスからシェルを受け取っています。
質問:While(!shell.isDisposed())コードをこのクラスに入れますか?
また、AplotBaseDialogクラスのボタンからいくつかのダイアログを開いています。
private void showPDFCreateDialog() {
pdfDialog = new AplotCreatePDFDialog(this, getShell(), session);
pdfDialog.open();
pdfDialog.getShell().setSize(700, 400);
}
質問:これらの各ダイアログクラスにdisposeコードを含める必要がありますか、それとも閉じるボタンコードにdispose()を含めるだけで十分ですか?
質問:これは、ダイアログを作成して開くための適切な方法ですか?
質問:現在、アプリケーションコードのどこにも表示を設定していません。
Display display = Display.getDefault();
親ダイアログから子ダイアログにシェルを渡し、必要に応じてasyncExecを使用しています。
Display.getDefault().asyncExec(new Runnable() {
public void run() {
}
}
質問:アプリケーションコードのどこかにwhile(!shell.isDisposed())が必要ですか?