2011-01-28 2 views
1

В настоящее время я создаю приложение RCP на основе Eclipse. В одном из моих плагинов я добавляю два вида с помощью кода:Eclipse RCP позволяет двум представлениям общаться

layout.addView("dev.asd.tableviewer.tree", IPageLayout.LEFT, 0.25f, IPageLayout.ID_EDITOR_AREA); 
    layout.addView("dev.asd.tableviewer.view", IPageLayout.RIGHT, 0.75f, IPageLayout.ID_EDITOR_AREA); 

Первый вид содержит TreeViewer, второй оном TableViewer. Теперь я хочу обновить содержимое tableviewer в соответствии с выбором treeviewer. Мой вопрос в том, как я могу ссылаться на tableviewer из treeviewer? Или есть другой способ решить эту проблему?

+0

вы также можете взглянуть на этот ответ: http://stackoverflow.com/questions/2227701/how-to-communicate-between-views-in-eclipse-rcp – pbanfi

ответ

3

В каждом представлении определите идентификатор. Идентификатор совпадает с тем, который вы определили в поле ID, когда вы определили представление в деталях элемента расширения. Вот один из моих:

public static final String ID = "gov.bop.rabid.ui.views.PrefetchedInmatesView"; 

В вашем RCP плагин, определяют следующим способом:

public static IViewPart getView(IWorkbenchWindow window, String viewId) { 
    IViewReference[] refs = window.getActivePage().getViewReferences(); 
    for (IViewReference viewReference : refs) { 
     if (viewReference.getId().equals(viewId)) { 
      return viewReference.getView(true); 
     } 
    } 
    return null; 
} 

Если вы хотите сослаться на вид с другой точки зрения, используйте следующий код:

PrefetchedInmatesView view = (PrefetchedInmatesView) 
       RabidPlugin.getView(window, PrefetchedInmatesView.ID); 

Подмените название для вашего вида на PrefetchedInmatesView, а также название вашего плагина для RabidPlugin.

+0

PrefetchedInmatesView view = (PrefetchedInmatesView) RabidPlugin.getView (окно, PrefetchedInmatesView.ID); Что нужно заполнить для «окна» var? – Coxer

+1

PlatformUI.getWorkbench(). GetActiveWorkbenchWindow(); –

Смежные вопросы