ESelectionService无法接收消息

时间:2012-09-11 07:49:56

标签: 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 */
    }
}

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

1 个答案:

答案 0 :(得分:0)

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

  • 检查是否创建了接收者对象 - 如果没有,则不会收到事件
  • 检查接收者对象是否是由eclipse框架创建的(例如,如果它是应用程序模型的元素,如部分,处理程序,它肯定是由框架创建的) - 如果不是,框架(选择服务)不知道关于接收者对象而无法通知它