2012-09-11 112 views
0

我正在使用Eclipse 4.2 Juno,Java 1.6。我的应用程序中有两个部分。一部分是注册SelectionChangedListener:ESelectionService无法接收消息

@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 */ 
    } 
} 

但是,没有在管的这一端接收。我做错了什么,或者我怎么能调试呢?

回答

0

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

  • 检查,如果在创建接收器对象 - 如果不是,也不会
  • 检查,如果接收器对象接收事件是由eclipse框架创建的(例如,如果它是应用程序模型的元素,例如部件,它肯定是由框架创建的) - 如果不是,框架(选择服务)不知道接收器对象并且不能通知它
+0

不知何故,我的SVN回购被破坏。我的接收器对象没有被调用。我刚刚恢复到以前的状态,现在又重新开始工作。 – Clemens