java - ESelectionService 无法接收消息

标签 java eclipse-rcp

我正在使用 Eclipse 4.2 Juno、Java 1.6。我的申请中有两个部分。其中一部分是注册 SelectionChangedListener:

@Inject
private ESelectionService selectionService;

@PostConstruct
public void init() {
    TreeViewer bsTreeViewer = new TreeViewer(tabFolder, SWT.BORDER);
    /* some other stuff */
    // Event declaration
    bsTreeViewer.addSelectionChangedListener(new SelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            if( selectionService != null ) {
                 selectionService.setSelection(((IStructuredSelection)event.getSelection()).getFirstElement());
            }
        }
    });
}

这个监听器被正确调用。第一个选定的元素也是正确的类型。

我的另一部分是设置接收端:

@Inject
public void setBS(@Named(IServiceConstants.ACTIVE_SELECTION) @Optional BS bs) {
    if (bs == null) {
      /* implementation not shown */
    } else {
      /* implementation not shown */
    }
}

但是,管道的这一端没有收到任何信息。我做错了什么或者我该如何调试这个?

最佳答案

上面的代码看起来不错,但请尝试检查以下问题:

  • 检查接收者对象是否已创建 - 如果没有,它将不会接收事件
  • 检查接收者对象是否是由 Eclipse 框架创建的(例如,如果它是应用程序模型的元素,例如部件、处理程序,那么它肯定是由框架创建的) - 如果不是,框架(选择服务)不知道关于接收者对象并且无法通知它

关于java - ESelectionService 无法接收消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12365108/

相关文章:

java - 在 Spring XML 中配置 WebBindingInitializer

java - 更改链接小部件的文本颜色

SWT 浏览器 XULRUNNER 10 : how to enable javascript to access to system clipboard

java - 在 Eclipse RCP 应用程序中拖放会导致屏幕闪烁

java - 由于java没有引用,如何在两个单独的类之间传递信息?

java Android Spanned Html.fromHtml(stringWithCDATA) 仍然将标签显示为文本

java - 将具有两个字段的类和具有单个参数的构造函数重写为记录类

java - 如何在 Tomcat 上将 Rserve 与 JSP 一起使用? (Windows 7的)

java - 制作带有可选 UI 界面的 headless Eclipse 应用程序

java - 如何占用Eclipse UI中的可用空间?