tor*_*tor 1 eclipse eclipse-plugin jface treeviewer
我正在尝试创建Eclipse插件,它具有两个TreeViewer并排的复合.点击每个TreeViewer内容Eclipse属性视图应该提供适当的信息.现在我想为这个树视图设置选择提供程序,因此我使用了
setSelectionProvider(treeViewer1)
setSelectionProvider(treeviewer2)
Run Code Online (Sandbox Code Playgroud)
但是只有第二个添加的树形图才会被设置,因为第一个被覆盖.我正在从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);
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题.我会很感激.提前致谢.Tor的.
您的视图必须编写一个选择提供程序包装器或介体,它将委派给当前具有焦点的查看器.然后你的视图会设置如下:
SelectionProviderWrapper wrapper = new SelectionProviderWrapper();
wrapper.addViewer(treeViewer1);
wrapper.addViewer(treeViewer2);
getSite().setSelectionProvider(wrapper);
Run Code Online (Sandbox Code Playgroud)
我会查看org.eclipse.jdt.internal.ui.viewsupport.SelectionProviderMediator多个JFace查看器的选择提供程序的示例.
| 归档时间: |
|
| 查看次数: |
581 次 |
| 最近记录: |