Eclipse4 简单的IEventBroker例子

EventBroker是E4平台力推的事件处理机制实现,到底这东西有什么好的,我们来看一个例子就知道了。
1、创建一个E4工程。
2、假设我们需要在E4平台启动后执行一些任务,那么增加StartupLifeCycleHandler类,并在plugin.xml添加“lifeCycleURI”属性就可以了。

<extension id="product" point="org.eclipse.core.runtime.products">  
  <product name="client" application="org.eclipse.e4.ui.workbench.swt.E4Application">
    <property name="appName" value="client"></property>
    <property name="lifeCycleURI" value="platform:/plugin/client/client.handlers.StartupLifeCycleHandler"></property>
  </product>
</extension>

3、在StartupLifeCycleHandler定义事件处理机制

   package e4demo.handlers;import javax.inject.Inject;
   import org.eclipse.e4.core.contexts.IEclipseContext;
   import org.eclipse.e4.core.services.events.IEventBroker;
   import org.eclipse.e4.ui.internal.workbench.E4Workbench;
   import org.eclipse.e4.ui.workbench.lifecycle.PostContextCreate;
   import org.eclipse.jface.window.Window;
   import org.osgi.service.event.Event;
   import org.osgi.service.event.EventHandler;
   @SuppressWarnings("restriction")
   public class StartupLifeCycleHandler {
     @Inject
     IEventBroker eventBroker;
     @PostContextCreate
     public void startup(IEclipseContext context) {
       EventHandler attListener = new EventHandler() {
         @Override
         public void handleEvent(Event event) {
           System.out.println("event.getTopic: " + event.getTopic());
         }
       };
       if(eventBroker != null) {
         eventBroker.subscribe("hello", attListener);
       }
     }
   } 

然后通过eventBroker订阅了主题为“hello”的事件(和RSS订阅类似嘛),然后委托EventHandler处理。attListener的工作是接收到事件后将事件主题打印到控制台上。
4、在OpenHandler.java中发布”hello”事件主题

   import javax.inject.Inject;
   import org.eclipse.e4.core.di.annotations.Execute;
   import org.eclipse.e4.core.services.events.IEventBroker;
   public class OpenHandler {
     @Execute
     public void execute(IEventBroker eventBroker) throws Exception {
       eventBroker.send("hello", null);
     }
   }

5、运行,点击Open按钮,你会发现控制台输出:

   event.getTopic: hello
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,001评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,638评论 25 708
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,586评论 7 249
  • 我这个车子不错,你看看怎么样 室友在和你介绍自己的脚踏车 我在你身侧,盯着你跳动的嘴唇 听你的口音略微熟悉 嘿!你...
    酥白阅读 213评论 0 0
  • 最近两天自己经常看这张截图,觉得发人深省,比大多数的道理和故事都有意义! 一直以来,对于英文学习也是不疼不痒的,连...
    海豚的世界阅读 218评论 0 0