2016-10-14 10 views
0

TL; DR:EMF Compareで定義されたCompareEditorを閉じる前に、確認ダイアログをユーザに提示する方法がわかりません。Eclipse RCPでエディタを閉じる前に確認を依頼する

詳細:

私は対応したいのですが、比較的単純なユースケースを持っている:彼らが近い(X)ボタンを押した後、彼らはエディタを閉じたい確認するようユーザに尋ねますワークベンチウィンドウ

私はEclipse forumから、そのpartClosed()メソッドはウィンドウが閉じられた後にのみ呼び出されるため、ウィンドウにIPartListenerを添付することは役に立たないと判断しました。

推奨解決策は、ユーザが閉じる部分にISaveablePart2インターフェイスを実装することです。しかし、私はこれを行うことはできません。なぜなら、その部分はプラグインから来ているからです。特に、EMF Compareで定義されているのはCompareEditorです。だから私はそれに追加のインターフェイスを追加することはできません。私は何とかできれば、(クラスを拡張することはオプションのようには見えません。別のEMF Compareクラスでインスタンス化されているので、コードを直接実行するのではないからです)。

もう1つsuggestionIPartListenerの代わりにIPerspectiveListener2を使用するのがわかりました。このリスナーは、パーツが実際に閉じられる前に通知されるためです。しかし、私はまだこのリスナーの中からパートを閉じるのをやめる方法を知らない。これも可能ですか?

+0

Eclipse 4を使用していますか?おそらくEclipse 4でカスタムの 'ISaveHandler'を使うことができます。これはe4アプリケーションでは簡単ですが、3.x互換モードのアプリケーションではどうしたらよいか分かりません。 –

+0

@ greg-449私は残念ながら3.x互換モードで動作しています。 – Epicurus

答えて

0

カスタムISaveHandlerを使用して保存を処理できます。あなたがインターフェイスの数によって提供されるIServiceLocatorインタフェースを介してMWindowを得ることができ3.xの互換モードRCPで

MWindow window = ... get main window 

IEclipseContext windowContext = window.getContext(); 

windowContext.set(ISaveHandler.class, ... your save handler); 

:これはEclipseの4だけで、あなたのメインのMWindowためIEclipseContextに登録インタフェースであり、 。たとえば、ビューまたはエディタで:

MWindow window = (MWindow)getSite().getService(MWindow.class); 

IWorkbenchWindowIServiceLocatorを実装します。

カスタム保存ハンドラは、エディタ部分に保存操作を保存し、プロンプトを表示するよう指示します。

デフォルトの実装はorg.eclipse.e4.ui.internal.workbench.PartServiceSaveHandlerで、必要なものの例として使用できます。

+0

ありがとうございます。しかし、私はそれに従うか分からない。カスタム保存ハンドラを作成するのではなく、内容が保存されているかどうかにかかわらず、エディタの終了を中止するオプションをユーザに与えるようにしています。 – Epicurus

+0

カスタム保存ハンドラ 'promptToSave'メソッドは、保存を中止することを扱います。 –

+0

ありがとうございます。私はPartServiceSaveHandler実装を見ましたが、それは役に立たないようです。私は保存操作を中止しようとしていないので、汚れているかどうかに関わらずエディタを終了させようとしています。言い換えれば、私はユーザーに "(x)ボタンを押すことを意味するものではありませんでした。私の編集者を閉じないでください"と言うオプションを与えようとしています。エディターの状態(保存されているかどうかにかかわらず)にこのオプションを与えたいと思います。 – Epicurus

関連する問題