Eclipse rcp 在应用程序周围发送关闭消息
我有一个Eclipse4应用程序,它有多个到不同服务器的连接。现在,当打开MPart时,部件将调用服务器以接收其数据。此外,当MPart关闭时,客户机将close发送到服务器,以便客户机知道客户机不需要更新数据 现在我需要找到一种方法让MPart知道客户端正在关闭。这样他们就不会向服务器发送任何消息。这将加速客户端的关闭Eclipse rcp 在应用程序周围发送关闭消息,eclipse-rcp,e4,application-shutdown,Eclipse Rcp,E4,Application Shutdown,我有一个Eclipse4应用程序,它有多个到不同服务器的连接。现在,当打开MPart时,部件将调用服务器以接收其数据。此外,当MPart关闭时,客户机将close发送到服务器,以便客户机知道客户机不需要更新数据 现在我需要找到一种方法让MPart知道客户端正在关闭。这样他们就不会向服务器发送任何消息。这将加速客户端的关闭 当用户单击关闭按钮时,如何向Mpart发送关闭命令?使用事件代理向部件发送消息 在关机代码中发送一个事件: @Inject IEventBroker事件经纪人; send(“m
当用户单击关闭按钮时,如何向Mpart发送关闭命令?使用事件代理向部件发送消息 在关机代码中发送一个事件:
@Inject
IEventBroker事件经纪人;
send(“my/topic/shutdown”,数据);
其中,data
是要与shudown事件关联的任何数据
“my/topic/shutdown”
只是事件的唯一id
使用send
方法同步发送事件,使用post
异步发送事件
每个部分都可以通过以下方式订阅活动:
@Inject
@可选的
公共无效关闭(@EventTopic(“my/topic/shutdown”)事件)
{
....
}
Event
是org.osgi.service.Event.Event
如果希望保证方法在UI线程中运行,也可以使用@UIEventTopic
要处理对应用程序“关闭”按钮的点击,您需要将org.eclipse.e4.ui.workbench.modeling.IWindowCloseHandler
的实现放入主窗口的eclipse上下文中。你可以在你的生命周期课程中这样做(如果你有)。应用程序启动完成事件适用于以下情况:
@可选
@注入
public void appStartupComplete(@UIEventTopic(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE)事件事件,MapApplication应用程序,EModelService modelService)
{
MWindow window=(MWindow)modelService.find(“窗口id”,app);
IEclipseContext windowContext=window.getContext();
set(IWindowCloseHandler.class,ContextInjectionFactory.make(AppCloseHandler.class,windowContext));
如何连接到close butun以发送事件?什么关闭按钮?屏幕右侧的红十字(在WIndows中)。使用IWindowCloseHandler-添加到answerI added workbenchContext.set(IWindowCloseHandler.class,new EclipseCloseHandler());在我的应用程序生命周期中创建我的PostContext。按关闭按钮时不会调用处理程序。