Я пытаюсь создать плагин Eclipse, в котором есть композит с двумя TreeViewer
рядом. При щелчке по каждому TreeViewer
содержимому представление свойств Eclipse должно предоставлять соответствующую информацию. Теперь я хотел установить поставщика выбора для обоих этих средств просмотра дерева, поэтому я использовал
setSelectionProvider(treeViewer1)
setSelectionProvider(treeviewer2)
Но устанавливается только второй добавленный просмотрщик дерева, так как первый перезаписывается. Я запускаю эти два средства просмотра деревьев из класса Queue.java. Поэтому я реализовал интерфейс 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);
}
Может ли кто-нибудь помочь мне, как решить эту проблему. буду благодарен. заранее спасибо. Тор.