슈퍼

2010-04-29 12 views
1

에서 뷰어를위한 selectionProvider를 등록하는 방법 나는이 같은 다른 플러그인에서 제공하는보기 확장하는보기 :슈퍼

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); 
    } 
} 

은 내가 Tree 개체를 가져 parent.getChildren();를 사용했지만, 나는 그것이 같은 ISElectionProvider 강요 될 수 있음을 볼 수 없습니다 필요

답변

0

당신은 this class처럼, 시도해 봤어 :

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

슈퍼 클래스가 뷰어를 selectionProvider로 등록하지 않았기 때문에 사이트의 selectionProvider가 null입니다. 사실 뷰어를 selectionProvider로 추가하고 선택한 객체를 사용할 수 있도록 클래스를 확장하고 있습니다. 내 다른보기 개체 ... – Tom

1

이 Treeviewer를 얻을 수있는 게터가 아닌가요? 어쨌든, 그렇지 않다면 내 마음에 오는 유일한 방법은 리플렉션을 사용하는 것입니다.

0

IViewSite를 전달하는 init 메서드가 있으며이 메서드에서 IWorkbenchPartSite에서 상속 된 선택 공급자를 설정할 수 있습니다.