我正在创建一个TableViewer,它必须响应其他组件中的选择。

我正在实现的selectionChanged方法中执行一些操作。

@Override
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
}


我想避免在关闭视图时触发selectionChanged方法中的操作。

我尝试检查收到的零件:

if(part.getSite().getId()!="myviewid")
{
}


但是我总是得到先前选择的一部分(在我的情况下为ResourceNavigator)。

如何检查是否选择了视图并避免进行某些操作?

最佳答案

放置视图部件后,应从选择服务中删除选择侦听器

@Override
public void dispose()
{
  ISelectionService service = (ISelectionService)getSite().getService(ISelectionService.class);

  service.removeSelectionListener(myListener);

  super.dispose();
}

09-28 03:39