closableプロパティにTrueを指定することで、閉じるボタンがウィンドウに表示され、ユーザーはボタンをクリックすると、ウィンドウが閉じます。閉じるボタンをクリックすると、直ちにonCloseイベントがウィンドウに送られます。WindowのonCloseメソッドによって処理されます。処理が終わったら、デフォルトでonCloseは自身をウィンドウから切り離します。
オーバーライドしたりすることもできます。又は、リスナを登録して、デフォルト動作を変更することができます。例えば、閉じるのではなく、隠すようにすることができます。
<window closable="true" title="Detach on Close" border="normal" width="200px" onClose="self.visible = false; event.stopPropagation();"> In this example, this window hides itself when the close button is clicked. </window>![]()
event.stopPropagation()はWindow.onClose()の呼び出しを防ぐために呼び出されます。
【ヒント】:ウィンドウがポップアップなら、ユーザーがウィンドウの外をクリックするか、またはESCを押したときに、ポップアップが閉じられ、open=falseと一緒にonOpenイベントはウィンドウに送信されます。
少し複雑ですが、onCloseはサーバーに送信され、ウィンドウを外すか、隠すかをサーバーに確認します。
デフォルトではウィンドウは外れます。また、アプリケーションはそれをオーバーライドでき、上に説明しているように、何でもしたいようにできます。
一方で、onOpenは通知です。クライアントがウィンドウを隠したことをアプリケーションに通知するために送信されます。
アプリケーションは隠されることを回避することはできません。
また、外れることを変更することはできません。