2017-01-19 16 views
0

Я работаю над плагином для Eclipse-RCP. Существует еще один плагин с TreeViewer, и я хочу выбрать элемент из моего плагина. Я не знаю, как получить доступ к нему, возможно ли это?Получить TreeViewer в RCP из другого плагина

Я думаю, что может получить правильное представление с:

IViewReference home; 
    IViewReference [] viewRefs = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getViewReferences(); 
    for (int i = 0; i < viewRefs.length; i++) { 
     if(viewRefs[i].getId()==myid){ 
      home = viewRefs[i]; 
      break; 
     } 
    } 

Но домой не TreeViewer, и я не могу бросить его. Как я могу получить TreeViewer?

home.getTreeViewer() //Doesn't work cause of casting issues 

Я новичок в rcp, поэтому я был бы рад некоторым объяснениям.

ответ

0

Вы должны найти свой вид с помощью:

IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); 

IViewPart viewPart = page.findView("your view id"); 

Вы можете бросить вид части к классу зрения и вызвать метод, который вы пишете на этом классе:

if (viewPart != null) { 
    MyViewClass myViewPart = (MyViewClass)viewPart; 

    myViewPart.getTreeViewer(); 
} 

где MyViewClass это ваш класс ViewPart. Вам нужно будет написать метод getTreeViewer.

Если точка зрения в настоящее время не открывать можно использовать showView:

viewPart = page.showView("your view id"); 
+0

если я page.findView (ID), я получаю нуль в ответ, но я отлажена его и увидел, что на странице есть Просмотр с правильным идентификатором – Ludy

+0

Ну, действительно ли открыт вид? Если он не открыт, вам придется использовать 'showView' вместо этого - см. Обновленный ответ. findView определенно работает, если вид с этим идентификатором открыт. –

+0

Покажите нам декларацию 'org.eclipse.ui.views' представления в файле plugin.xml и том, что вы используете в' findView'. –

0

Вы должны указать home в качестве своего другого вида. Затем вы можете получить TreeViewer.

0

Вы можете найти ViewPart непосредственно из своего активного IWorkbenchPage, используя IWorkbenchPage#findView(java.lang.String).

Если у вас есть объект, который вы хотите выбрать, зайдите на сайт просмотра, получите провайдер выбора сайта, а затем сообщите поставщику выбора, что следует выбрать (с экземпляром StructuredSelection, содержащим объект). Это работает только в том случае, если дерево или что-то еще в части (вам не нужно заботиться или знать, что это дерево), на самом деле содержит объект, который вы говорите, чтобы выбрать.