エディタを閉じる
今回は「エディタを開く」の逆,エディタを閉じる方法について紹介する。エディタを開く機能があれば,もちろんエディタを閉じる機能も存在する。
「エディタを開く」で取り上げたopenEditorメソッドがIWorkbenchPageインタフェースに規定されていたように,エディタを閉じる機能もIWorkbenchPageインタフェースに規定されている。IWorkbenchPageインタフェースには,ある特定のエディタを閉じるためのcloseEditorメソッド,すべてのエディタを閉じるためのcloseAllEditorsメソッドが規定されている。
ある特定のエディタを閉じるためには,まず閉じたいエディタを表すIEditorPartオブジェクトを取得する必要がある。これは例えば「アクションの登録先と使用インタフェース」でちょろっと紹介したIEditorActionDelegateインタフェースを使ったアクションなどで取得できる。IEditorPageオブジェクトが取得できたら,あとはそれをcloseEditorメソッドに渡せばよい。IWorkbenchPageオブジェクトの取得方法は「エディタを開く」で取り上げた方法を参考されたし。
IEditorPage editor = ...;
IWorkbenchPage page = ...; // 「エディタを開く」参照
page.closeEditor(editor, true);
closeEditorメソッドの第2引数にtrueを渡すと,もし対象のエディタの内容が保存されていないときに,ユーザに内容を保存するかどうかを問い合わせるダイアログが表示されるようになる(「すべてのエディタの内容を保存する」の図を参照)。逆に,falseを指定した場合は,エディタの内容は保存されずに破棄されてエディタが閉じるという,ちょっと恐ろしい動作になる。
開かれているすべてのエディタを一気に閉じるには,単にcloseAllEditorsメソッドを呼び出せばよい。
IWorkbenchPage page = ...; // 「エディタを開く」参照
page.closeAllEditors(true);
この場合も,引数にtrueを渡せば,保存しなくていいかを確認するためのダイアログが表示される。逆に,falseを渡すと,全エディタの変更内容を保存することなく問答無用で破棄してエディタを閉じてしまうという,かなり凶悪な動作になる。
ユーザビリティを考えると,falseで呼び出すことは避けたほうがいいだろう。。。
| 固定リンク
この記事へのコメントは終了しました。
コメント