首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RCP SelectionService

RCP SelectionService
EN

Stack Overflow用户
提问于 2011-05-20 23:07:00
回答 2查看 911关注 0票数 0

我有两个视图:一个有TreeViewer,另一个有SWT widget。我希望带有小部件的视图中的活动导致带有TreeViewer的视图中的更改。在阅读关于这个主题的各种资源时,他们都谈到了允许JFace查看者发出选择和接收通知,但他们没有讨论例如能够从文本小部件触发这些选择。

假设这段代码所在的视图是一个ISelectionProvider,我可以做这样的事情吗

代码语言:javascript
复制
Text someText = new Text( parent, SWT.BORDER ) ;
someText.addKeyListener( new KeyListener() {
  @Override
  public void keyPressed( KeyEvent e ) {}

  @Override
  public void keyReleased( KeyEvent e ) {
    ...
    ...
    CellInfo cellInfo = new CellInfo( /*text collected while typing*/);
    currentSelection = new StructuredSelection( cellInfo ) ; 
    setSelection( currentSelection ) ;

...
...

public void setSelection( ISelection selection ) {
  Object[] list = getListeners() ;//listeners.getListeners();  
  for (int i = 0; i < list.length; i++) {  
    ((ISelectionChangedListener) list[i])  
     .selectionChanged(new SelectionChangedEvent(this, selection));  
  } 
}

这似乎在选择端起作用,但在我想要消费选择的另一端,什么也没有发生。在查看器中,我实现了ISelectionListener接口,并在createPartControl()方法开头执行了以下操作:

代码语言:javascript
复制
getSite().getPage().addSelectionListener(this);

但是selectionChanged()方法永远不会被调用。

我的猜测是,我在生产者端做错了什么,因为消费者端看起来很简单。有什么建议吗?

谢谢!

琼恩

EN

回答 2

Stack Overflow用户

发布于 2011-05-20 23:47:04

你告诉Workbench关于你的选择提供者了吗?在生产者端,在createPartControl()中,您需要:

代码语言:javascript
复制
getSite().setSelectionProvider(this);
票数 3
EN

Stack Overflow用户

发布于 2011-09-30 22:20:38

由于在整个SWT中都应用了a design decision,因此通常不会发送事件来响应编程更改(与用户操作相反)。但是,您可以执行以下操作:

代码语言:javascript
复制
// (1) set a new selection for the view's viewer
myViewer.setSelection(ISelection, boolean);
// (2) setup event to be fired
// (2.1) create new org.eclipse.swt.widgets.Event
Event event = new Event();
// (2.2) set some fields in event
// e.g., event.widget = myViewer.getControl();
// (3) fire event via Viewer's Control (is Widget)
myViewer.getControl().notifyListeners(SWT.Selection, event);

但请注意,这种方法很有可能是搬起石头砸自己的脚(根据我自己的经验)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6073869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档