как зарегистрировать selectionProvider для Viewer из суперкласса - PullRequest
1 голос
/ 29 апреля 2010

У меня есть вид, который расширяет вид, предоставляемый другим плагином, например:

public class View2 extends some.other.package.View1
{
    public void createPartControl(Composite parent) 
    {  
        super.createPartControl(parent);  
        //I want to do this, but I can't because its private  
        //getSite().setSelectionProvider(treeViewer);  
    }  
}  

Но я не могу редактировать суперкласс, поэтому мне нужно получить доступ к средству просмотра из элемента управления.

public class some.other.package.View1 extends ViewPart
{  
    private TreeViewer treeViewer;  
    public void createPartControl(Composite parent) {  
        treeViewer = new TreeViewer(parent, SWT.V_SCROLL);  
    }  
}  

Я пытался использовать parent.getChildren(); для получения Tree объекта, но я не вижу, чтобы его можно было принудительно преобразовать в ISElectionProvider при необходимости

Ответы [ 3 ]

1 голос
/ 08 апреля 2011

Нет ли какого-нибудь добытчика, который позволил бы вам получить этого Treeviewer? В любом случае, если нет, то единственный способ получить это, что приходит мне в голову, - это использовать отражение.

0 голосов
/ 12 сентября 2011

Существует метод init, который передается на IViewSite, для которого вы можете установить поставщика выбора (унаследованного от IWorkbenchPartSite).

0 голосов
/ 29 апреля 2010

Вы пробовали, как в этом классе :

ISelectionProvider provider = site.getSelectionProvider();
if (provider instanceof TreeViewer) {
   ...
...