Как связаться между представлениями в RCP Eclipse?

В RCP Eclipse я создаю представления для Перспективного использования IPageLayout.addView(...)

Но этот путь у меня нет ссылки на представление. Поэтому я не знаю, как я могу сказать ViewA обновлять ViewB.

Что лучший шаблон должен использовать здесь?

14
задан geejay 9 February 2010 в 08:32
поделиться

2 ответа

Помимо того, что VonC упомянул выше, вы также можете использовать ISourceProviderListener , если необходимые вам изменения не инициируются выбором.

  • Имейте ViewB реализует ISourceProviderListener
  • Создайте реализацию ISourceProvider и зарегистрируйте ее в службах
  • Have ViewA получите ISourceProvider и обновите его, чтобы вызвать изменения в ViewB

Прочтите документацию по этим интерфейсам вместе с IServiceLocator и ISourceProviderService , чтобы лучше понять, как это все разыгрывается.

Вы также можете увидеть этот учебник Ларса Фогеля , в котором есть пример использования ISourceProvider

15
ответ дан 1 December 2019 в 12:13
поделиться

У вас есть различные парадигмы связи, обобщенные в статье IBM

  • Для того, чтобы вид мог прослушивать изменения в выборе, вид должен реализовывать интерфейс ISelectionListener и должен зарегистрироваться на странице рабочего стола
  • , используя интерфейс IAdaptable: Класс, реализующий IAdaptable, имеет возможность динамического возврата определенных типов адаптеров, которые затем могут использоваться для получения дополнительной информации.
  • парадигма изменения свойств слушателя

Что касается первого подхода, подробности в статье:

Более разумным способом потребления выбора интерфейса пользователя является регистрация взглядов потребителя в качестве слушателей конкретных частей просмотра. Как видно из приведенного ниже примера, ID части представления источника упоминается в качестве параметра при регистрации слушателя выбора.

  getSite().getPage().addSelectionListener("SampleViewId",(ISelectionListener)this);

Этот подход устранит избыточные обратные вызовы потребительского вида, которые в противном случае возникли бы, если бы этот вид был зарегистрирован как неспецифический слушатель.

Фрагмент кода в Листинге 2 показывает createPartControl() метод вида, который создает JFace TableViewer и добавляет его в качестве провайдера выбора на сайт рабочего стола. Этот код позволяет любому изменению выбора пользовательского интерфейса в TableViewer распространяться на страницу и, в конечном счете, на интересующие потребителя взгляды.

Листинг 2. Настройка провайдера выбора

public void createPartControl(Composite parent) {
    // Set up a JFace Viewer
    viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
    viewer.setContentProvider(new ViewContentProvider());
    viewer.setLabelProvider(new ViewLabelProvider());
    viewer.setSorter(new NameSorter());
    viewer.setInput(getViewSite());

    // ADD the JFace Viewer as a Selection Provider to the View site.
    getSite().setSelectionProvider(viewer);

}

Аналогичный подход вы найдете в RCP tutorial for eclipse3.5 (обновление от 4 февраля 2010 г.)

8
ответ дан 1 December 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: