モーダル/モードレスとブロック/非ブロック

S2JFaceWindowManagerをActionのクラスにインジェクションするとして、openメソッドを呼べばウィンドウを表示することはできる。モーダル/モードレスはwindowのスタイルを指定すれば制御できる。ただし、モーダル/モードレスとブロック/非ブロックはSWT/JFaceでは組み合わせ自由だ。

普通、モーダルのダイアログではブロックしてopenメソッドが返ってきたところで戻り値を見て処理を決める。モードレスでは複数のウィンドウのハンドラが動作する可能性があるわけだから、ブロックする必要はほとんどない。openで開いたウィンドウが閉じるよりも先に、元のウィンドウが閉じる可能性もあるし。
だから、大抵はモーダルではブロックして、モードレスではブロックしない。どちらもopen時に引数を渡すことはあると思うが、戻り値はモーダルの時にしか使わない。

以下のパターンを使うことってあるのかな?

  • モーダル表示だけどブロックしたくない
  • モードレス表示だけどブロックしたい