我正在尝试创建具有两个TreeViewer
并排复合的 Eclipse 插件。单击每个TreeViewer
内容 Eclipse 属性视图应提供适当的信息。现在我想为这两个 treeviewer 设置选择提供程序,因此我使用了
setSelectionProvider(treeViewer1)
setSelectionProvider(treeviewer2)
但是只有第二个添加的 treeviewer 被设置,因为第一个被覆盖了。我正在从 Queue.java 类中启动这两个 treeviewer。因此,我ISelectionProvider
在 Queue.java 上实现了如下接口:
public void addSelectionChangedListener(ISelectionChangedListener listener)
{
selectionChangedListeners.add(listener);
}
public void
removeSelectionChangedListener(ISelectionChangedListener listener)
{
selectionChangedListeners.remove(listener);
}
private void fireSelectionChanged(final SelectionChangedEvent event)
{
Object[] listeners = selectionChangedListeners.getListeners();
for (int i = 0; i < listeners.length; ++i)
{
final ISelectionChangedListener l =
(ISelectionChangedListener) listeners[i];
Platform.run(new SafeRunnable()
{
public void run()
{
l.selectionChanged(event);
}
@Override
public void handleException(Throwable e)
{
removeSelectionChangedListener(l);
}
});
}
}
public void setSelection(ISelection selection)
{
fireSelectionChanged(new SelectionChangedEvent(this, selection));
}
public ISelection getSelection()
{
ArrayList<Object> list = new ArrayList<Object>();
Object o = getProperties();
if (o instanceof IPropertySource)
list.add(o);
return new StructuredSelection(list);
}
谁能帮我解决这个问题。我会很感激。提前致谢。托尔。