イベントブローカーを使用して、部品にメッセージを送信します。シャットダウンコードで
がイベントを送信します
data
あなたはshudownイベントに関連付ける任意のデータです
@Inject
IEventBroker eventBroker;
eventBroker.send("my/topic/shutdown", data);
。
"my/topic/shutdown"
は、イベントの一意のIDです。
send
メソッドを使用してイベントを同期的に送信し、post
を使用して非同期に送信します。
各部分はしてイベントをサブスクライブすることができます:あなたはメソッドはUIスレッドで実行されることが保証されるようにしたい場合にも@UIEventTopic
を使用することができます
@Inject
@Optional
public void shutdown(@EventTopic("my/topic/shutdown") Event event)
{
....
}
Event
はorg.osgi.service.event.Event
です。
アプリケーションの「閉じる」ボタンをクリックして処理するには、メインウィンドウのEclipseコンテキストにorg.eclipse.e4.ui.workbench.modeling.IWindowCloseHandler
の実装を入れる必要があります。ライフサイクルクラスでこれを行うことができます(もしあれば)。アプリケーション起動完了イベントは、これに適しています。
@Optional
@Inject
public void appStartupComplete(@UIEventTopic(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE) Event event, MApplication app, EModelService modelService)
{
MWindow window = (MWindow)modelService.find("window id", app);
IEclipseContext windowContext = window.getContext();
windowContext.set(IWindowCloseHandler.class, ContextInjectionFactory.make(AppCloseHandler.class, windowContext));
イベントを送信するにはどうすればよいですか? – JimmyD
閉じるボタンは何ですか? –
画面右側(WIndows)の赤い十字線です。 – JimmyD